GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat(core,cli): add node-24 and node-26 runtimes, deprecate experimental aliases by carderne · Pull Request #4337 · triggerdotdev/trigger.dev

Conversation

@carderne

@carderne carderne commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds node-24 and node-26 as first-class runtime options in trigger.config.ts. Previously these Node versions were only reachable via the experimental-node-24 / experimental-node-26 names.

Those experimental names are now deprecated aliases: they still resolve to node-24 / node-26 for backwards compatibility, but loading a config that uses them prints a deprecation warning pointing at the new name.

export default defineConfig({
  runtime: "node-24",
  project: "<your-project-ref>",
});

Details

  • ConfigRuntime (the public config schema) now accepts node-24 and node-26 directly; the internal BuildRuntime already supported them, so base images and the deploy path are unchanged.
  • resolveBuildRuntime passes the new names straight through and keeps mapping the experimental aliases to their replacements.
  • Renamed the runtime helper from isExperimentalConfigRuntime to isDeprecatedConfigRuntime and added deprecatedRuntimeReplacement so the CLI can name the replacement in its warning.
  • Docs snippet updated to list the new versions and flag the deprecated names.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@carderne
feat(core,cli): add node-24 and node-26 runtimes, deprecate experimen…
cb3f54f
…tal aliases

Promote node-24 and node-26 to supported runtime options in
trigger.config.ts. The experimental-node-24 and experimental-node-26
names remain as deprecated aliases that resolve to their replacements
and emit a deprecation warning.
@changeset-bot

changeset-bot Bot commented Jul 22, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f3ed7c2

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 26 packages
Name Type
@trigger.dev/core Patch
trigger.dev Patch
@trigger.dev/build Patch
@trigger.dev/python Patch
@trigger.dev/redis-worker Patch
@trigger.dev/schema-to-json Patch
@trigger.dev/sdk Patch
@internal/cache Patch
@internal/clickhouse Patch
@internal/llm-model-catalog Patch
@trigger.dev/rbac Patch
@internal/redis Patch
@internal/replication Patch
@internal/run-engine Patch
@internal/run-store Patch
@internal/schedule-engine Patch
@trigger.dev/sso Patch
@internal/testcontainers Patch
@internal/tracing Patch
@internal/tsql Patch
@internal/dashboard-agent Patch
@internal/sdk-compat-tests Patch
@trigger.dev/react-hooks Patch
@trigger.dev/rsc Patch
@trigger.dev/database Patch
@trigger.dev/otlp-importer Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 02f88e71-3688-4d5e-9646-381761b69d22

📥 Commits

Reviewing files that changed from the base of the PR and between 645d234 and f3ed7c2.

📒 Files selected for processing (1)
  • packages/core/src/v3/build/runtime.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/core/src/v3/build/runtime.ts
📜 Recent review details
⏰ Context from checks skipped due to timeout. (6)
  • GitHub Check: check-broken-links
  • GitHub Check: audit
  • GitHub Check: audit
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (actions)
  • GitHub Check: Build and publish previews

Walkthrough

Adds node-24 and node-26 as supported runtimes while retaining experimental-node-24 and experimental-node-26 as deprecated aliases. Runtime schemas, alias detection, replacement mapping, CLI warnings, normalization tests, documentation, and release metadata are updated accordingly.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description omits required template sections like Closes #, checklist, Testing, Changelog, and Screenshots. Reformat the PR description to match the template, add the issue link, checklist items, testing steps, changelog, and screenshots or mark them N/A.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title concisely and accurately summarizes the main change: adding node-24/node-26 and deprecating experimental aliases.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/tri-12254-node-24-and-node-26-remove-experimental-runtimes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
  • X
  • Mastodon
  • Reddit
  • LinkedIn

Comment @coderabbitai help to get the list of available commands.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@carderne
carderne marked this pull request as ready for review July 22, 2026 12:25
devin-ai-integration[bot]
devin-ai-integration Bot reviewed Jul 22, 2026
View reviewed changes

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@carderne
format
0fa17a7
@pkg-pr-new

pkg-pr-new Bot commented Jul 22, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Open in StackBlitz

@trigger.dev/build

npm i https://pkg.pr.new/@trigger.dev/build@f3ed7c2

trigger.dev

npm i https://pkg.pr.new/trigger.dev@f3ed7c2

@trigger.dev/core

npm i https://pkg.pr.new/@trigger.dev/core@f3ed7c2

@trigger.dev/python

npm i https://pkg.pr.new/@trigger.dev/python@f3ed7c2

@trigger.dev/react-hooks

npm i https://pkg.pr.new/@trigger.dev/react-hooks@f3ed7c2

@trigger.dev/redis-worker

npm i https://pkg.pr.new/@trigger.dev/redis-worker@f3ed7c2

@trigger.dev/rsc

npm i https://pkg.pr.new/@trigger.dev/rsc@f3ed7c2

@trigger.dev/schema-to-json

npm i https://pkg.pr.new/@trigger.dev/schema-to-json@f3ed7c2

@trigger.dev/sdk

npm i https://pkg.pr.new/@trigger.dev/sdk@f3ed7c2

commit: f3ed7c2

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

coderabbitai[bot]

This comment was marked as resolved.

Sign in to view

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

carderne added 2 commits July 22, 2026 13:37
@carderne
docs: drop deprecation note for unpublicised experimental runtimes
645d234
@carderne
fix(core): keep deprecated experimental runtime helper aliases
f3ed7c2
Preserve isExperimentalConfigRuntime and ExperimentalConfigRuntime as
deprecated re-exports so the rename stays backwards compatible.
nicktrn
nicktrn approved these changes Jul 22, 2026
View reviewed changes
@carderne
carderne merged commit 55a3bf2 into main Jul 22, 2026
47 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@carderne
carderne deleted the feature/tri-12254-node-24-and-node-26-remove-experimental-runtimes branch July 22, 2026 13:10
@github-actions github-actions Bot mentioned this pull request Jul 22, 2026
chore: release v4.5.7 #4319
Merged
matt-aitken pushed a commit that referenced this pull request Jul 22, 2026
@github-actions
chore: release v4.5.7 (#4319)
aafc333
## Summary
5 improvements, 5 bug fixes.

## Improvements
- Add `node-24` and `node-26` as supported `runtime` options in
`trigger.config.ts`. The `experimental-node-24` and
`experimental-node-26` names are now deprecated aliases and emit a
deprecation warning; switch to `node-24` / `node-26` instead.
([#4337](#4337))
  
  ```ts
  import { defineConfig } from "@trigger.dev/sdk";
  
  export default defineConfig({
  runtime: "node-24",
  project: "<your-project-ref>",
  });
  ```
- Avoid logging task run environment variable values at debug level
([#4336](#4336))
- Custom chat agent loops get two ergonomic wins for owning the turn
loop. ([#4304](#4304))
  
`chat.writeTurnComplete()` now returns the turn boundary's resume
cursors (`lastEventId` for the output stream and `sessionInEventId` for
the input stream), so you can persist them straight from the task
instead of round-tripping them back from the client.
  
  ```ts
const { lastEventId, sessionInEventId } = await
chat.writeTurnComplete();
  await db.chats.update(chatId, { lastEventId, sessionInEventId });
  ```
  
`chat.pipeAndCapture()` no longer throws when a stream is stopped or
fails. It now returns a `PipeAndCaptureResult` whose `message` holds any
partial output captured before the stop or failure, alongside a typed
`status` (`"complete" | "aborted" | "error"`) and, on failure, the
`error`. Read the message off the result:
  
  ```ts
  const { message, status, error } = await chat.pipeAndCapture(result, {
  signal,
  });
  if (message) conversation.addResponse(message);
  if (status === "error") logger.error("turn failed", { error });
  ```
  
Note: `pipeAndCapture` previously resolved to `UIMessage | undefined`.
Update call sites to read `.message` from the returned result.
- Suppress a build-time warning that could appear in Vite-based projects
when the optional `@ai-sdk/otel` package is not installed.
([#4188](#4188))

## Bug fixes
- Fixes intermittent `trigger dev` run crashes where a run could fail at
boot with a cryptic `Cannot find module .../dev-run-worker.mjs` after a
rebuild had cleaned up the build directory the run was launched against.
Dev runs now retry cleanly instead of hard-crashing when their build
directory is missing, the dev watchdog no longer removes the build tree
of a still-running session, and a run assigned to a worker version that
was superseded by a rebuild now fails fast with a clear message instead
of silently hanging until it times out.
([#4276](#4276))

## Server changes

These changes affect the self-hosted Docker image and Trigger.dev Cloud:

- Refreshed the side menu: separate organization and account menus, a
new project switcher, and the menu is now resizable by dragging its
edge. The account Profile page has also been redesigned.
([#4066](#4066))
- Allow different organization members to use the same development
branch name without sharing or colliding with each other's branch
environments.
([#4323](#4323))
- Limit account settings email input to 254 characters.
([#4330](#4330))
- Prevent duplicate Staging and Preview environments when account setup
requests overlap
([#4261](#4261))
- Fix the docs link on the empty Prompts page, which pointed to a page
that no longer exists.
([#4247](#4247))

<details>
<summary>Raw changeset output</summary>

# Releases
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
## [email protected]

### Patch Changes

- Fixes intermittent `trigger dev` run crashes where a run could fail at
boot with a cryptic `Cannot find module .../dev-run-worker.mjs` after a
rebuild had cleaned up the build directory the run was launched against.
Dev runs now retry cleanly instead of hard-crashing when their build
directory is missing, the dev watchdog no longer removes the build tree
of a still-running session, and a run assigned to a worker version that
was superseded by a rebuild now fails fast with a clear message instead
of silently hanging until it times out.
([#4276](#4276))
- Add `node-24` and `node-26` as supported `runtime` options in
`trigger.config.ts`. The `experimental-node-24` and
`experimental-node-26` names are now deprecated aliases and emit a
deprecation warning; switch to `node-24` / `node-26` instead.
([#4337](#4337))

  ```ts
  import { defineConfig } from "@trigger.dev/sdk";

  export default defineConfig({
    runtime: "node-24",
    project: "<your-project-ref>",
  });
  ```

- Avoid logging task run environment variable values at debug level
([#4336](#4336))
- Updated dependencies:
  - `@trigger.dev/[email protected]`
  - `@trigger.dev/[email protected]`
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Add `node-24` and `node-26` as supported `runtime` options in
`trigger.config.ts`. The `experimental-node-24` and
`experimental-node-26` names are now deprecated aliases and emit a
deprecation warning; switch to `node-24` / `node-26` instead.
([#4337](#4337))

  ```ts
  import { defineConfig } from "@trigger.dev/sdk";

  export default defineConfig({
    runtime: "node-24",
    project: "<your-project-ref>",
  });
  ```
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
  - `@trigger.dev/[email protected]`
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Updated dependencies:
  - `@trigger.dev/[email protected]`
## @trigger.dev/[email protected]

### Patch Changes

- Custom chat agent loops get two ergonomic wins for owning the turn
loop. ([#4304](#4304))

`chat.writeTurnComplete()` now returns the turn boundary's resume
cursors (`lastEventId` for the output stream and `sessionInEventId` for
the input stream), so you can persist them straight from the task
instead of round-tripping them back from the client.

  ```ts
const { lastEventId, sessionInEventId } = await
chat.writeTurnComplete();
  await db.chats.update(chatId, { lastEventId, sessionInEventId });
  ```

`chat.pipeAndCapture()` no longer throws when a stream is stopped or
fails. It now returns a `PipeAndCaptureResult` whose `message` holds any
partial output captured before the stop or failure, alongside a typed
`status` (`"complete" | "aborted" | "error"`) and, on failure, the
`error`. Read the message off the result:

  ```ts
  const { message, status, error } = await chat.pipeAndCapture(result, {
    signal,
  });
  if (message) conversation.addResponse(message);
  if (status === "error") logger.error("turn failed", { error });
  ```

Note: `pipeAndCapture` previously resolved to `UIMessage | undefined`.
Update call sites to read `.message` from the returned result.

- Suppress a build-time warning that could appear in Vite-based projects
when the optional `@ai-sdk/otel` package is not installed.
([#4188](#4188))
- Updated dependencies:
  - `@trigger.dev/[email protected]`

</details>

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@coderabbitai coderabbitai[bot] coderabbitai[bot] left review comments
@devin-ai-integration devin-ai-integration[bot] devin-ai-integration[bot] left review comments
@nicktrn nicktrn nicktrn approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@carderne @nicktrn
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.