Releases: vercel/workflow
Releases · vercel/workflow
workflow@5.0.0-beta.12
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.12
- #2211
52d63d1@pranaygp - Prevent replayed workflows from advancing their deterministic clock when a future event is inspected before its matching operation is invoked. - #2212
2a3b11b@pranaygp - Retry transient workflow replay divergence before classifying repeated divergence as a corrupted event log. - #2215
12c35b5@pranaygp - Skip workflow replay when a refreshed event log already contains a terminal run event.
@workflow/cli@5.0.0-beta.12
- #2250
5bf2c16@karthikscale3 - Add CI coverage for CLI and web trace-viewer revivers across all serializable types.
@workflow/world@5.0.0-beta.7
- #2212
2a3b11b@pranaygp - Retry transient workflow replay divergence before classifying repeated divergence as a corrupted event log.
@workflow/world-local@5.0.0-beta.13
- #2231
b8a337c@VaguelySerious - Updateundicito 7.26.0. - #2246
ddc8a79@ctgowrie - Update@vercel/queuefrom 0.1.7 to 0.2.1
@workflow/world-postgres@5.0.0-beta.11
@workflow/world-vercel@5.0.0-beta.11
- #2235
3a16272@AndrewBarba - Add adispatcheroption tocreateVercelWorldfor supplying a custom undici dispatcher, used for both HTTP and queue requests. Defaults to the shared undiciRetryAgent. - #2231
b8a337c@VaguelySerious - Updateundicito 7.26.0. - #2246
ddc8a79@ctgowrie - Update@vercel/queuefrom 0.1.7 to 0.2.1
@workflow/web-shared@5.0.0-beta.12
- #2249
24a96d8@karthikscale3 - Hydrate serialized HookConflictError values in the web trace viewer. - #2209
fe41b3b@mitul-s - Reduce the new trace viewer detail pane width. - #2250
5bf2c16@karthikscale3 - Add CI coverage for CLI and web trace-viewer revivers across all serializable types.
@workflow/nitro@5.0.0-beta.12
- #2110
a651052@RihanArfan - Add/_workflowroute in dev mode that opens the workflow observability dashboard.
@workflow/errors@5.0.0-beta.7
workflow@4.3.1
Immutable
release. Only release title and notes can be modified.
@workflow/world-vercel@4.3.2
- #2204
5655fcb@VaguelySerious - Retry transient response-body read/decode failures (truncated or terminated streams, gateway non-CBOR bodies) on idempotent requests inside the HTTP client, so a sporadicevents.listparse failure no longer surfaces as a fatal error.
workflow@4.3.0
Immutable
release. Only release title and notes can be modified.
@workflow/core@4.3.0
- #2059
9092640@TooTallNate - AWritableStreamfrom a workflow'sgetWritable()can now be passed as an argument to a child workflow viastart(); the child's writes land on the parent run's stream directly for the full lifetime of the child run. - #2191
5a0ce9a@pranaygp - Fix forwarded writable stream encryption when child workflows execute on a newer deployment than their parent. - #2206
1e32d05@pranaygp - Prevent replayed workflows from advancing their deterministic clock when a future event is inspected before its matching operation is invoked. - #2208
5fd7d9c@pranaygp - Retry transient workflow replay divergence before classifying repeated divergence as a corrupted event log.
@workflow/world@4.1.4
- #2191
5a0ce9a@pranaygp - Fix forwarded writable stream encryption when child workflows execute on a newer deployment than their parent. - #2208
5fd7d9c@pranaygp - Retry transient workflow replay divergence before classifying repeated divergence as a corrupted event log.
@workflow/errors@4.1.3
workflow@5.0.0-beta.11
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.11
- #2180
1ee63b8@pranaygp - Harden runtime event pagination against rejected, repeated, or overlapping cursor responses. - #2191
8f68d35@pranaygp - Fix forwarded writable stream encryption when child workflows execute on a newer deployment than their parent.
@workflow/world@5.0.0-beta.6
- #2191
8f68d35@pranaygp - Fix forwarded writable stream encryption when child workflows execute on a newer deployment than their parent.
@workflow/world-vercel@5.0.0-beta.10
- #2204
7994629@VaguelySerious - Retry transient response-body read/decode failures (truncated or terminated streams, gateway non-CBOR bodies) on idempotent requests inside the HTTP client, so a sporadicevents.listparse failure no longer surfaces as a fatal error.
@workflow/web@5.0.0-beta.11
- #2200
f0f002a@mitul-s - Fix new trace viewer getting stuck on the first page: re-wire pagination so it auto-loads pages up to an event cap and scroll-loads the rest for very large runs. - #2164
0606949@mitul-s - Add a loading skeleton to the new trace viewer that matches the real layout's dimensions, and start with the detail panel closed instead of pre-selecting the first span. The skeleton is also exported asTraceViewerSkeletonfor consumers that need to render it standalone.
@workflow/web-shared@5.0.0-beta.11
- #2205
445ec8c@mitul-s - Add virtualization to the trace viewer - #2163
ab7e5ab@mitul-s - Add keyboard-shortcut tooltips to the up/down span navigation buttons in the trace viewer detail panel. - #2200
f0f002a@mitul-s - Fix new trace viewer getting stuck on the first page: re-wire pagination so it auto-loads pages up to an event cap and scroll-loads the rest for very large runs. - #2164
0606949@mitul-s - Add a loading skeleton to the new trace viewer that matches the real layout's dimensions, and start with the detail panel closed instead of pre-selecting the first span. The skeleton is also exported asTraceViewerSkeletonfor consumers that need to render it standalone.
workflow@4.2.6
Immutable
release. Only release title and notes can be modified.
@workflow/core@4.2.6
- #2179
e256858@pranaygp - Harden runtime event pagination against rejected, repeated, or overlapping cursor responses. - #2171
38c67a7@TooTallNate - FixCorruptedEventLogErroron replay when a workflow races a hook read against asleep()(e.g.Promise.race([hook, sleep])). Branch-deciding deliveries (buffered hook payloads and wait completions) are now handed to the workflow in strict event-log order — anchored on event position rather than on microtask-resolution timing — so the committed branch wins the race deterministically, independent of decryption/hydration time orPromise.raceargument order. - #2156
ebfeede@VaguelySerious - Harden workflow error stack remapping for large inline sourcemaps. - #2142
3113738@pranaygp - Prevent failed stream writes from surfacing as unhandled rejections and include request correlation details in stream errors.
@workflow/world@4.1.3
- #1979
8ab6c4f@adamiBs - Makerun.inputandstep.input.optional()on the World snapshot schemas so consumers no longer fail validation when the service externalizes payloads asRemoteRefblobs.
@workflow/world-local@4.1.3
- #2139
2aecfdb@pranaygp - Reduce local stream metadata and pagination I/O by reading only EOF marker bytes and scanning chunk files once.
@workflow/world-vercel@4.3.0
- #1978
17cf939@TooTallNate - Add@workflow/world-vercel/run-idsub-export withencode/decodehelpers that produce ULID-shaped workflow run IDs carrying a tag bit, a 5-bit version, and a 6-bit Vercel region ID. - #2142
3113738@pranaygp - Prevent failed stream writes from surfacing as unhandled rejections and include request correlation details in stream errors.
@workflow/web@4.1.7
- #2107
e313c66@karthikscale3 - Allow lookup of exact step ID (step_), wait ID (wait_), hook ID (hook_), or event ID (evnt_) in the event list UI.
@workflow/web-shared@4.1.7
- #2107
e313c66@karthikscale3 - Allow lookup of exact step ID (step_), wait ID (wait_), hook ID (hook_), or event ID (evnt_) in the event list UI.
workflow@5.0.0-beta.9
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.9
- #2150
4b5f017@pranaygp - Treat serialized and cross-realmAbortErrorstep failures as fatal cancellations, and stabilize abort E2E readiness checkpoints. - #2157
409b103@VaguelySerious - Allowexperimental_setAttributes()to be called from step functions. - #2142
ae37315@pranaygp - Prevent failed stream writes from surfacing as unhandled rejections and include request correlation details in stream errors.
@workflow/world-vercel@5.0.0-beta.8
- #2142
ae37315@pranaygp - Prevent failed stream writes from surfacing as unhandled rejections and include request correlation details in stream errors.
@workflow/web-shared@5.0.0-beta.9
- #2144
b33c5ef@mitul-s - Improve new trace viewer search matching and highlighting, and add a reusable Geist-style icon button. - #2041
799cc09@mitul-s - Update zoom factor on the trace viewer timeline - #2143
e8e5292@mitul-s - FixButtonhover, focus, and corner radius to match Geist. The dark-mode hover no longer relies on an unregistered Tailwind variant (it previously turned the inverted button's background dark/transparent depending on the consumer), the focus-visible ring is now rendered, and thexssize uses Geist's 4px tiny radius. Styles are written to work under both Tailwind v3 and v4.
workflow@5.0.0-beta.10
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.10
- #2145
8d0928b@TooTallNate - Classify SDK-level AES-GCM encryption failures asRUNTIME_ERRORinstead ofUSER_ERRORvia a newRuntimeDecryptionError.
@workflow/world-local@5.0.0-beta.11
- #2168
3128dfc@allenzhou101 - Skip past abandoned5.0.0-beta.8/9/10npm slots from the November 2025 5.x attempt so the next Changesets publish lands on a fresh5.0.0-beta.11.
@workflow/web@5.0.0-beta.10
- #2107
ad5c068@karthikscale3 - Allow lookup of exact step ID (step_), wait ID (wait_), hook ID (hook_), or event ID (evnt_) in the event list UI.
@workflow/web-shared@5.0.0-beta.10
- #2107
ad5c068@karthikscale3 - Allow lookup of exact step ID (step_), wait ID (wait_), hook ID (hook_), or event ID (evnt_) in the event list UI.
@workflow/errors@5.0.0-beta.6
- #2145
8d0928b@TooTallNate - Classify SDK-level AES-GCM encryption failures asRUNTIME_ERRORinstead ofUSER_ERRORvia a newRuntimeDecryptionError.
workflow@5.0.0-beta.8
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.8
- #2134
1e6b1fd@VaguelySerious - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes - #2086
2050656@VaguelySerious - FixgetWritable()returning a new TransformStream per call, which caused racing pipes to reorder chunks when callers acquired a writer per write. Repeat calls within the same step now share a single pipe per(runId, namespace). - #2134
1e6b1fd@VaguelySerious - Harden workflow error stack remapping for large inline sourcemaps. - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/cli@5.0.0-beta.8
- #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/world@5.0.0-beta.5
- #2134
1e6b1fd@VaguelySerious - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes - #1979
62ec537@adamiBs - Makerun.inputandstep.input.optional()on the World snapshot schemas so consumers no longer fail validation when the service externalizes payloads asRemoteRefblobs. - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/world-local@5.0.0-beta.7
- #2134
1e6b1fd@VaguelySerious - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles. - #2097
657e8bb@TooTallNate - Reject dots and empty correlationId values in entity ID validation.
@workflow/world-postgres@5.0.0-beta.7
- #2134
1e6b1fd@VaguelySerious - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/world-vercel@5.0.0-beta.7
- #1978
b0d0561@TooTallNate - Add@workflow/world-vercel/run-idsub-export withencode/decodehelpers that produce ULID-shaped workflow run IDs carrying a tag bit, a 5-bit version, and a 6-bit Vercel region ID. - #2134
1e6b1fd@VaguelySerious - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/world-testing@5.0.0-beta.8
- #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/web-shared@5.0.0-beta.8
- #2108
8633ebb@mitul-s - Use theblur-[4px]arbitrary-value utility on the encrypted data preview instead of Tailwind v4'sblur-xsutility, so the component renders correctly for consumers on Tailwind v3. - #2087
a490f58@VaguelySerious - Fix the "Queued for" duration shown in the events list for retried steps. It now measures fromstep_createdto the firststep_startedinstead of the last, so the displayed value reflects actual queue time rather than queue time plus all retry waits. - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles. - #1973
34481af@mitul-s - adjusted spacing on trace viewer and detail pane
@workflow/ai@5.0.0-beta.6
- #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/typescript-plugin@5.0.0-beta.4
- #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/builders@5.0.0-beta.8
- #1683
0d0bb01@pranaygp - Write colocated.gitignorefiles for public workflow manifests generated byWORKFLOW_PUBLIC_MANIFEST=1 - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/next@5.0.0-beta.8
- #1805
070bd0c@TooTallNate - ChangelazyDiscoverydefault totrueforwithWorkflow. Workflow discovery is now deferred until files are requested instead of scanning eagerly at startup on Next.js versions that support deferred entries (>= 16.2.0-canary.48). Older versions automatically fall back to eager discovery. Passworkflows: { lazyDiscovery: false }to opt back into eager discovery on supported Next.js versions. - #1683
0d0bb01@pranaygp - Write colocated.gitignorefiles for public workflow manifests generated byWORKFLOW_PUBLIC_MANIFEST=1 - #1799
503a929@TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles.
@workflow/nitro@5.0.0-bet...
workflow@4.2.5
Immutable
release. Only release title and notes can be modified.
@workflow/core@4.2.5
- #2029
a434184@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2046
8407c1e@pranaygp - Report corrupted event logs with a distinctCorruptedEventLogErrortype andCORRUPTED_EVENT_LOGrun error code. - #2056
7487430@VaguelySerious - Fix spurious "Event cursor missing after initial load" warning - #2030
c347509@pranaygp - Validate step, wait, and hook lifecycle events against replay ownership metadata. - #2060
ca5f355@pranaygp - Record fatal world response contract failures as non-retryable workflow errors. - #1986
16f2c23@pranaygp - Fix local workflow port detection, make generated health endpoints respond to HEAD requests, materialize manual webhook response bodies before returning them, wait for step return stream serialization before completing the step, bound Vercel stream and health-check operations so stuck writes or queue sends retry or time out instead of hanging, and stabilize remote Vercel e2e checks around CLI inspection, sleep timing, and hook registration/disposal. - #1935
6aabd6f@TooTallNate - Preserve thethisbinding of bound step proxies across workflow serialization, so passinguseStep(...).bind(thisArg)as a step argument no longer loses the receiver.
@workflow/world@4.1.2
- #2029
a434184@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2046
8407c1e@pranaygp - Report corrupted event logs with a distinctCorruptedEventLogErrortype andCORRUPTED_EVENT_LOGrun error code. - #1902
15e44b3@ziyak97 - Fix compatibility with Zod 4.4.x inWorkflowRunSchemaby markingoutput,error, andcompletedAtas.optional()on non-final / cancelled / completed / failed run states. - #2030
c347509@pranaygp - Validate step, wait, and hook lifecycle events against replay ownership metadata.
@workflow/world-local@4.1.2
- #2029
a434184@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #1985
76352f0@pranaygp - Improve the local queue error message when a Next.js proxy intercepts workflow routes. - #1898
e428cdb@VaguelySerious - Fix local-world recovery isolation in Vitest and support custom test directories - #1829
5f50bbc@TooTallNate - Fix path traversal via request-supplied IDs in theworld-localstorage backend.
@workflow/world-postgres@4.1.2
- #2029
a434184@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2069
096adbf@pranaygp - Fix race inevents.create()where concurrentstep_created/hook_created/wait_createdwrites with the samecorrelationIdwould persist duplicate event rows. Adds a unique partial index and surfaces the violation asEntityConflictError. - #2019
be506cc@VaguelySerious -workflow-postgres-setupnow also bootstraps thegraphile_workerschema, fixing potential race on setup when starting the app and a test runner at the same time
@workflow/world-vercel@4.2.0
- #1897
677867b@VaguelySerious - Switch the workflow-server Deployment Protection bypass to OIDC Trusted Sources. TheVERCEL_WORKFLOW_SERVER_PROTECTION_BYPASSenv var is no longer used; thex-vercel-trusted-oidc-idp-tokenheader is now sourced fromgetVercelOidcToken(). - #2029
a434184@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #1999
a350e8d@pranaygp - Release failed VQS workflow handler messages on the configured retry cadence. - #2060
ca5f355@pranaygp - Record fatal world response contract failures as non-retryable workflow errors. - #1986
16f2c23@pranaygp - Fix local workflow port detection, make generated health endpoints respond to HEAD requests, materialize manual webhook response bodies before returning them, wait for step return stream serialization before completing the step, bound Vercel stream and health-check operations so stuck writes or queue sends retry or time out instead of hanging, and stabilize remote Vercel e2e checks around CLI inspection, sleep timing, and hook registration/disposal. - #1987
ecfccc3@karthikscale3 - Update to new queue client version
@workflow/web@4.1.6
@workflow/web-shared@4.1.6
- #1955
73e0c4d@mitul-s - Show hook name on trace viewer + no toast on decrypt - #2087
88070cf@VaguelySerious - Fix the "Queued for" duration shown in the events list for retried steps. It now measures fromstep_createdto the firststep_startedinstead of the last, so the displayed value reflects actual queue time rather than queue time plus all retry waits. - #1952
01cfe19@mitul-s - Fix old trace viewer layout to be in a row rather than column
@workflow/swc-plugin@4.1.1
- #1944
a9cc1d5@TooTallNate - Fix three bugs affecting nested step functions that get hoisted out of an enclosing function (workflows in an...
workflow@5.0.0-beta.7
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.7
- #2059
49da6c5@TooTallNate - AWritableStreamfrom a workflow'sgetWritable()can now be passed as an argument to a child workflow viastart(); the child's writes land on the parent run's stream directly for the full lifetime of the child run. - #2038
dc0be50@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2046
ad71b58@pranaygp - Report corrupted event logs with a distinctCorruptedEventLogErrortype andCORRUPTED_EVENT_LOGrun error code. - #2056
9454151@VaguelySerious - Fix spurious "Event cursor missing after initial load" warning - #2030
b124365@pranaygp - Validate step, wait, and hook lifecycle events against replay ownership metadata. - #2013
2a446af@TooTallNate - Exclude inline step execution from the workflow replay timeout. Long-running steps no longer hitREPLAY_TIMEOUT(fixes #2009). Adds aWORKFLOW_REPLAY_TIMEOUT_MSenv var override and a new optionalWorld.processExitTriggersQueueRedeliverycapability used to gate the runtime'sprocess.exit(1)failure path. - #2060
1d3959e@pranaygp - Record fatal world response contract failures as non-retryable workflow errors.
@workflow/world@5.0.0-beta.4
- #2038
dc0be50@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2046
ad71b58@pranaygp - Report corrupted event logs with a distinctCorruptedEventLogErrortype andCORRUPTED_EVENT_LOGrun error code. - #2030
b124365@pranaygp - Validate step, wait, and hook lifecycle events against replay ownership metadata. - #2013
2a446af@TooTallNate - Exclude inline step execution from the workflow replay timeout. Long-running steps no longer hitREPLAY_TIMEOUT(fixes #2009). Adds aWORKFLOW_REPLAY_TIMEOUT_MSenv var override and a new optionalWorld.processExitTriggersQueueRedeliverycapability used to gate the runtime'sprocess.exit(1)failure path.
@workflow/world-local@5.0.0-beta.6
- #2038
dc0be50@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order.
@workflow/world-postgres@5.0.0-beta.6
- #2038
dc0be50@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2019
738ec5e@VaguelySerious -workflow-postgres-setupnow also bootstraps thegraphile_workerschema, fixing potential race on setup when starting the app and a test runner at the same time
@workflow/world-vercel@5.0.0-beta.6
- #2038
dc0be50@pranaygp - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. - #2013
2a446af@TooTallNate - Exclude inline step execution from the workflow replay timeout. Long-running steps no longer hitREPLAY_TIMEOUT(fixes #2009). Adds aWORKFLOW_REPLAY_TIMEOUT_MSenv var override and a new optionalWorld.processExitTriggersQueueRedeliverycapability used to gate the runtime'sprocess.exit(1)failure path. - #2060
1d3959e@pranaygp - Record fatal world response contract failures as non-retryable workflow errors.
@workflow/world-testing@5.0.0-beta.7
- #2043
96e2d3c@TooTallNate - Fix race condition in test server's flow invocation counter that caused intermittent failures in the inline-execution test suite (e.g. "sequential steps complete in a single flow invocation"). The counter is now incremented before awaiting the flow handler, so the count is observable as soon as the run transitions to completed.
@workflow/web-shared@5.0.0-beta.7
- #2036
753e39e@mitul-s - trace viewer bug fix + file cleanup - #2022
5a393a6@mitul-s - updated colours on the trace viewer - #2045
366f9cc@mitul-s - Add reduced motion for the trace viewer
@workflow/nitro@5.0.0-beta.7
- #1575
c1242e8@RihanArfan - Match the webhookfunctionRuleskey (:token) to the handler route on Nitro v3 Vercel deploys so the runtime override is applied to the realwebhook/[token].funcinstead of generating a duplicatewebhook/[...].func. Also propagateworkflow.runtimeto the public manifest route for consistency.