1 breaking change, 4 improvements, 1 bug fix, and 13 server changes.
Highlights
v3 support removed
Trigger.dev v3 is no longer supported in v4.5.4+. For self-hosted deployments, 4.5.0 is the last version with v3 support. v3 triggers, batch triggers, reschedules, and deploys now return a clear upgrade message instead of executing silently. (#4236)
Secret env vars via syncEnvVars
The syncEnvVars build extension now lets you mark synced variables as secrets. Return isSecret: true alongside any variable and it's stored redacted in the dashboard, the same as manually created secret env vars.
syncEnvVars(async () => { return [ { name: "MY_API_KEY", value: await fetchSecret(), isSecret: true }, { name: "PUBLIC_URL", value: "https://example.com" }, ];});
(#4203)
Improvements
- Removed the
--mcpand--mcp-portflags from thedevcommand. Runtrigger mcpto start the MCP server instead. (#4246) - Removed the unused
ResourceMonitorexport from@trigger.dev/core/v3/serverOnly. (#4244) - Removed the unused
@trigger.dev/core/v3/zodNamespaceexport and legacy v3 socket message schemas, which had no v4 consumers. (#4236)
Bug fixes
- Fix a
chat.agentmessage-loss race where sending a message immediately after an action (such as an undo) could drop the response from the UI until a refresh. (#4234)
Server changes
These changes are included in the v4.5.4 Docker image and are already live on Trigger.dev Cloud:
- Added
EVENT_REPOSITORY_POSTGRES_WRITES_DISABLEDto skip all PostgreSQL task-event writes for deployments using ClickHouse as the event store. Only enable ifEVENT_REPOSITORY_DEFAULT_STOREisclickhouse_v2, otherwise task events are lost. (#4242) - Added a promo code system: a
/promosignup landing page, promo code redemption when a new org selects a plan, and remaining credits shown on the usage page. (#4138) - Background worker lookups by version are faster. The endpoint now reuses data it already loads instead of scanning the full task table. (#4245)
- Clearer login error when an email is blocked by
WHITELISTED_EMAILS: the message now says the address isn't permitted on this instance instead of "This email is unauthorized". (#4220) - The native build server is now opt-out by default. Project build settings store this as
disableNativeBuildServer. The UI also clarifies that build settings apply to GitHub-triggered and native build server deployments. (#3980) - Added
OTEL_TRANSFORM_WORKER_POOL_ENABLED=1to process high-volume telemetry ingestion in parallel for higher throughput under heavy load. Off by default. (#4232) - Added
REALTIME_BACKEND_DEFAULTenv var to set the default realtime backend (electric,native, orshadow) for environments without a per-org override. Defaults toelectric, so existing behavior is unchanged. (#4231) - Clarified on the Regions page that a region only affects where runs execute, not where data is stored. Shown as a tooltip on the Location column and in the region-change confirmation dialog. (#4226)
- Improved reliability of run data reads and writes. (#4237)
- Fixed stale login errors: a rejected email from a prior attempt no longer persists on the login page or makes later successful attempts appear to have failed. (#4220)
- Errors page now shows better detail for errors without a message. Errors thrown without a message, or non-
Errorvalues, get a meaningful title instead of "Unknown error", are grouped by name or value, and include stack traces where previously they were missing. (#4225) - Return a clear client error when SSO form submissions use an unsupported content type. (#4238)
- Query page:
JSONExtractString,JSONExtractInt, and similar JSON functions no longer fail with "illegal type: JSON". (#4221)
How to upgrade
Update the trigger.dev/* packages to v4.5.4 using your package manager:
npx trigger.dev@latest update # npmpnpm dlx trigger.dev@latest update # pnpmyarn dlx trigger.dev@latest update # yarnbunx trigger.dev@latest update # bun
Self-hosted users: update your Docker image to ghcr.io/triggerdotdev/trigger.dev:v4.5.4.




