Upgrade
npx trigger.dev@latest update # npm
pnpm dlx trigger.dev@latest update # pnpm
yarn dlx trigger.dev@latest update # yarn
bunx trigger.dev@latest update # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.5.4
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-5-4
What's changed
Breaking changes
- Trigger.dev v3 is no longer supported. For self-hosted deployments, 4.5.0 is the last version we officially support for running v3; stay on 4.5.0 or upgrade to v4. v3 triggers, batch triggers, reschedules, and deploys now return a clear upgrade message instead of running. (#4236)
Improvements
- You can now mark environment variables synced via the
syncEnvVarsbuild extension as secrets. Return{ name, value, isSecret: true }from your callback and those variables are stored redacted in the dashboard, just like manually created secret env vars. (#4203) - Remove the legacy
--mcpand--mcp-portoptions from thedevcommand. Run the dedicatedtrigger mcpcommand to start the Trigger.dev MCP server. (#4246) - Removed the unused
ResourceMonitorexport from@trigger.dev/core/v3/serverOnly. It was a server-side logging helper with no remaining consumers. (#4244) - Removed the unused
@trigger.dev/core/v3/zodNamespaceexport and the legacy v3 socket message schemas. These were only used by the now-retired v3 engine and have no v4 consumers. (#4236)
Bug fixes
- Fix a
chat.agentmessage-loss race where sending a message right after an action (such as an undo) could drop the follow-up's response from the UI until a refresh. (#4234)
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- Added
EVENT_REPOSITORY_POSTGRES_WRITES_DISABLEDto skip all PostgreSQL task-event writes for deployments that store task events in ClickHouse. Leave it off unlessEVENT_REPOSITORY_DEFAULT_STOREisclickhouse_v2, otherwise task events are lost. (#4242) - Promo credits: a /promo signup landing page, redeeming a promo code when a new org selects a plan, and showing remaining credits on the usage page. (#4138)
- Speed up retrieving a background worker by version. The endpoint no longer runs a slow lookup that scanned the full task table for large deployments; it now reuses data it already loads, so the response is the same but returns much faster. (#4245)
- Clearer login error when an email address is blocked by the WHITELISTED_EMAILS setting: the message now explains the address isn't allowed on this instance instead of the ambiguous "This email is unauthorized". (#4220)
- Make the native build server the default in project build settings. It's now opt-out, stored as a new
disableNativeBuildServerkey. Also clarifies in the UI that build settings apply to GitHub-triggered and native build server deployments. (#3980) - Optionally process high-volume telemetry ingestion in parallel for higher throughput under heavy load by setting
OTEL_TRANSFORM_WORKER_POOL_ENABLED=1. Off by default. (#4232) - Add a
REALTIME_BACKEND_DEFAULTenv var to choose the default realtime backend (electric,native, orshadow) for environments whose org has no per-org override. Defaults toelectric, so existing behavior is unchanged. (#4231) - Clarified on the Regions page that a region only affects where your runs execute, not where your data is stored. This shows as a tooltip on the Location column and in the confirmation dialog when you change your default region. (#4226)
- Improved the reliability of how run data is read and written. (#4237)
- Fixed stale login errors: an error from a previous login attempt (for example a rejected email address) no longer keeps reappearing on the login page and no longer makes later, successful attempts look like they failed. (#4220)
- The Errors page now shows better details for each error. Errors that don't carry a message — such as errors thrown without a message, or values thrown that aren't
Errorobjects — get a meaningful title instead of all reading "Unknown error", and are grouped by their name (or value) rather than collapsed into a single group. The error type now shows the actual error name, and stack traces now appear where previously they were missing. (#4225) - Return a clear client error when SSO form submissions use an unsupported content type (#4238)
- Query page: extracting fields from a run's output with JSON functions (such as JSONExtractString or JSONExtractInt) no longer fails with an "illegal type: JSON" error. (#4221)
All packages: v4.5.4
@trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigger.dev/sdk, trigger.dev
Contributors
Chris Arderne, Eric Allam, @d-cs, Matt Aitken, @isshaddad, github-actions[bot], @nicktrn, Saadi Myftija, Oskar Otwinowski, @D-K-P, claude[bot], Wes Mason, James Ritchie
Full changelog: v4.5.3...v4.5.4