Skip to content

Releases: vercel/workflow

workflow@5.0.0-beta.20

19 Jun 16:19
Immutable release. Only release title and notes can be modified.
a12b32c

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.20

  • #2525 7aee0d4 @TooTallNate - Derive the workflow VM's deterministic RNG seed from runId:workflowName:deploymentId (instead of including the run's startedAt) and its initial fixed clock from the ULID timestamp embedded in runId. These inputs are all available the moment a queue message arrives, decoupling VM setup from the run_started round-trip. Note: this changes the seed-derived value sequence (step/hook correlation IDs, nanoids, random values) for a given run, so runs started before this change must not be replayed across the upgrade.
  • #2516 84ccd40 @VaguelySerious - Inline execution now runs up to WORKFLOW_MAX_INLINE_STEPS (default 3) steps in parallel per suspension, each lazily created. An opt-in WORKFLOW_OPTIMISTIC_INLINE_START (default off) additionally starts step bodies before step_started is confirmed, reconciling the in-flight start before the terminal write so a lost create-claim is discarded; it is off by default because under contention a step body can run more than once (e.g. two runs writing to the workflow stream can corrupt it), so only enable it for idempotent steps.
  • #2473 16b3670 @pranaygp - Drain consecutively consumable replay events in a single synchronous pass instead of one process.nextTick per event, removing O(N) macrotask hops from replay.
  • #2475 2074f91 @pranaygp - Skip the per-step incremental events.list round-trip in the inline sequential loop by consuming an event-log delta returned from the step's terminal write (gated to the single-step case with no open hooks or waits).
  • #2478 e7ef9d8 @pranaygp - Lazy inline step start: the owned-inline runtime path now sends a single step_started carrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.
  • #2522 722bb7c @VaguelySerious - Cache the local dev server port per process so workflow replays no longer re-run OS port discovery (which spawns lsof on macOS, ~60ms) on every replay.
  • #2527 de91f20 @karthikscale3 - Refine WORKFLOW_TRACE_MODE=linked (the default) so each queue-delivered workflow.execute / step.execute span nests under its local delivery context instead of starting a new trace root.
  • #2511 ab2e9b8 @VaguelySerious - Emit workflowName on per-step events (step_created, step_completed, and lazy-start step_started) so Worlds can access it without additional queries
  • #2471 939890d @pranaygp - Cache the compiled workflow-bundle vm.Script per process so replays reuse the compiled bundle instead of re-parsing it on every iteration.
  • #2490 a92c16d @pranaygp - Reject an explicit empty-string token in createHook(). Omit the option (or pass undefined) to get a randomly generated token, or pass a non-empty string.
  • #2529 37312ed @pranaygp - Speed up workflow stack-trace remapping when source maps are absent (production default): skip bundle scanning when no frame references the workflow file and memoize parsed source maps per bundle.

@workflow/world@5.0.0-beta.12

  • #2475 2074f91 @pranaygp - Skip the per-step incremental events.list round-trip in the inline sequential loop by consuming an event-log delta returned from the step's terminal write (gated to the single-step case with no open hooks or waits).
  • #2478 e7ef9d8 @pranaygp - Lazy inline step start: the owned-inline runtime path now sends a single step_started carrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.
  • #2511 ab2e9b8 @VaguelySerious - Emit workflowName on per-step events (step_created, step_completed, and lazy-start step_started) so Worlds can access it without additional queries

@workflow/world-local@5.0.0-beta.20

  • #2534 b563126 @NathanColosimo - Update undici to 7.28.0.
  • #2475 2074f91 @pranaygp - Skip the per-step incremental events.list round-trip in the inline sequential loop by consuming an event-log delta returned from the step's terminal write (gated to the single-step case with no open hooks or waits).
  • #2478 e7ef9d8 @pranaygp - Lazy inline step start: the owned-inline runtime path now sends a single step_started carrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.
  • #2508 1332da3 @karthikscale3 - Add run IDs on world storage telemetry spans.

@workflow/world-postgres@5.0.0-beta.18

  • #2478 e7ef9d8 @pranaygp - Lazy inline step start: the owned-inline runtime path now sends a single step_started carrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.

@workflow/world-vercel@5.0.0-beta.19

  • #2534 b563126 @NathanColosimo - Update undici to 7.28.0.
  • #2475 2074f91 @pranaygp - Skip the per-step incremental events.list round-trip in the inline sequential loop by consuming an event-log delta returned from the step's terminal write (gated to the single-step case with no open hooks or waits).
  • #2478 e7ef9d8 @pranaygp - Lazy inline step start: the owned-inline runtime path now sends a single step_started carrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.
  • #2508 1332da3 @karthikscale3 - Add run IDs on world storage telemetry spans.
  • #2514 fb5abbb @VaguelySerious - Route v4 event requests through the global fetch so they appear in the Vercel observability log viewer's outgoing-requests view again.
  • #2533 90efb96 @karthikscale3 - Inject W3C trace context (traceparent/tracestate/baggage) on v4 event requests, which previously bypassed it via fetchV4 — restoring workflow-server span correlation for traffic from the flow route. No-op when no OpenTelemetry SDK is registered.

@workf...

Read more

workflow@5.0.0-beta.19

18 Jun 00:22
Immutable release. Only release title and notes can be modified.
fe33308

Choose a tag to compare

Pre-release

@workflow/world-vercel@5.0.0-beta.18

  • #2486 26fd184 @VaguelySerious - Honor the server's explicit pagination flag when listing run events, avoiding one extra empty-page request per event-log load on replay.

workflow@5.0.0-beta.18

18 Jun 00:08
Immutable release. Only release title and notes can be modified.
f193d6e

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.18

  • #2394 5f0b845 @pranaygp - Compress serialized payloads (step inputs/outputs, workflow arguments/return values, errors, hook payloads) before storage using composable codec format prefixes. zstd is the preferred codec (markedly faster than gzip at an equal-or-better ratio, via node:zlib); gzip (CompressionStream) is the portable fallback when zstd is unavailable. Reads dispatch on the prefix, so both codecs are always decodable. Compression is applied before encryption, gated on run specVersion 5, and skipped for small or incompressible payloads. WORKFLOW_DISABLE_COMPRESSION=1 disables writes; WORKFLOW_COMPRESSION_CODEC=gzip forces the portable codec.
  • #2394 5f0b845 @pranaygp - Emit OpenTelemetry span attributes for payload compression on the serialize (write) and deserialize (read) paths: workflow.serialization.{operation,compressed,uncompressed_bytes,stored_bytes,compression_ratio}. Sizes are measured at the compression boundary (pre-encryption). Telemetry failures never affect serialization.
  • #2397 4b7a720 @pranaygp - start({ deploymentId: 'latest' }) is now a no-op in Worlds that don't support atomic deployments (local dev, Postgres) instead of throwing — it logs a warning and targets the current deployment, so workflows that use 'latest' on Vercel still run locally.
  • #2470 3c79c56 @TooTallNate - Fix the payload-compression capability cutoff: gzip/zstd are gated on 5.0.0-beta.18 (the first published version containing the compression read path) instead of 5.0.0-beta.16. The previous cutoff would let a producer write compressed payloads to a beta.16/beta.17 target that cannot decode them.

@workflow/cli@5.0.0-beta.18

  • #2467 cb18139 @pranaygp - Add a --url flag to inspect/web that prints the run's dashboard deep link to stdout and exits (no browser, no server), and fix the Vercel dashboard URL to use the current …/workflows/runs/<id>?environment=<env> route (respecting --env).

@workflow/world@5.0.0-beta.11

  • #2394 5f0b845 @pranaygp - Bump SPEC_VERSION_CURRENT to 5 (SPEC_VERSION_SUPPORTS_COMPRESSION): runs at spec 5+ may contain gzip-compressed payloads, and older SDKs reject them via requiresNewerWorld() instead of failing on individual payloads.

@workflow/world-vercel@5.0.0-beta.17

  • #2394 5f0b845 @pranaygp - Advertise specVersion 5 so new Vercel runs are eligible for gzip payload compression. The workflow-server declared spec-5 support in vercel/workflow-server#520; payloads remain opaque to the server (compression is client-side). Spec 5 is a superset of spec 4, so initial run attributes still work.
  • #2415 6aa1ce0 @VaguelySerious - Skip transferring event payload bytes when listing events with resolveData: 'none' using the v4 API.

@workflow/world-testing@5.0.0-beta.18

@workflow/web-shared@5.0.0-beta.18

  • #2452 2acf13c @mitul-s - Add point-in-time event markers (hook resumptions, attribute writes) to the trace timeline.
  • #2394 5f0b845 @pranaygp - Decode zstd-compressed workflow payloads in the observability UI. Since the Web DecompressionStream has no zstd support, the web o11y registers a WASM-backed zstd decoder (@tootallnate/zstd-wasm) with @workflow/core before hydrating payloads; the WASM is compiled lazily on first use.
  • #2459 8edd84d @mitul-s - Detail panel cleanup: module copy button, step id spacing, line for trace state
  • #2366 8f69733 @mitul-s - Auto-scroll the trace viewer when navigating spans with the J/K keys (or the up/down chevrons) so the newly-selected span is always revealed when it falls outside the visible area.
  • #2483 2599da0 @mitul-s - Adjust attributes panel UI
  • #2474 0090788 @mitul-s - Yse solid gray for queued trace segment

@workflow/swc-plugin@5.0.0-beta.5

  • #2484 da37349 @karthikscale3 - Fix detect mode discovery for object-property step handlers so eager builds register steps declared in callback objects.
  • #2398 53ede30 @pranaygp - Fix dead-code elimination stripping module-scope declarations referenced only by a destructuring-default initializer (e.g. const { ttl = TTL } = options;), which caused a runtime ReferenceError when the default fired.

@workflow/builders@5.0.0-beta.18

  • #2455 7440244 @TooTallNate - Fix Next.js lazy discovery workflow IDs for monorepo workspace packages by resolving module specifiers relative to the app package instead of the tracing root.

@workflow/next@5.0.0-beta.18

  • #2455 7440244 @TooTallNate - Fix Next.js lazy discovery workflow IDs for monorepo workspace packages by resolving module specifiers relative to the app package instead of the tracing root.
  • #2438 d4dd6f9 @ijjk - Rebuild deferred Next.js workflow entries when workflow modules recompile during dev.

@workflow/astro@5.0.0-beta.18

workflow@4.5.0

15 Jun 12:37
Immutable release. Only release title and notes can be modified.
48a19d9

Choose a tag to compare

@workflow/core@4.5.0

  • #2373 296b785 @pranaygp - Replace hook.hasConflict (a Promise<boolean> property) with hook.getConflict(), a method returning a promise that suspends the workflow to commit hook registration and resolves with { runId } identifying the conflicting run when another active hook owns the token (or null once the hook is registered), without waiting for hook payload data. Code using await hook.hasConflict should migrate to const conflict = await hook.getConflict() and branch on conflict !== null.
  • #2305 9c667e0 @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2345 2100fc3 @pranaygp - Fix unhandled rejection when step_created/wait_created calls fail in waitUntil
  • #2336 4291c59 @TooTallNate - Fix unexpected rejections in waitUntil causing process crashes
  • #1847 73975ad @VaguelySerious - Auto-reconnect getReadable() streams on server close or transient errors

@workflow/cli@4.2.10

@workflow/world@4.2.0

  • #2305 9c667e0 @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.

@workflow/world-local@4.2.0

  • #2305 9c667e0 @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2399 b5569a8 @VaguelySerious - Update @vercel/queues from 0.3.0 to 0.3.1, which adds native retries for 429s and ECONNRESET

@workflow/world-postgres@4.2.0

  • #2305 9c667e0 @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2399 b5569a8 @VaguelySerious - Update @vercel/queues from 0.3.0 to 0.3.1, which adds native retries for 429s and ECONNRESET

@workflow/world-vercel@4.4.1

@workflow/world-testing@4.1.10

@workflow/builders@4.1.0

  • #2305 9c667e0 @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2395 15507bd @pranaygp - Upgrade esbuild to ^0.28.1 to resolve GHSA-gv7w-rqvm-qjhr (missing binary integrity verification before executing downloaded binaries).

workflow@5.0.0-beta.17

15 Jun 20:47
Immutable release. Only release title and notes can be modified.
df402c4

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.17

  • #2363 926a5e7 @karthikscale3 - Add WORKFLOW_TRACE_MODE with a new linked default: each workflow/step invocation span is now its own trace root with span links to the delivery and run-origin contexts, instead of one trace spanning the entire run. world-vercel now explicitly injects W3C traceparent/tracestate/baggage headers on outgoing workflow-server requests.

@workflow/world-vercel@5.0.0-beta.16

  • #2363 926a5e7 @karthikscale3 - Add WORKFLOW_TRACE_MODE with a new linked default: each workflow/step invocation span is now its own trace root with span links to the delivery and run-origin contexts, instead of one trace spanning the entire run. world-vercel now explicitly injects W3C traceparent/tracestate/baggage headers on outgoing workflow-server requests.

@workflow/builders@5.0.0-beta.17

@workflow/next@5.0.0-beta.17

  • #2417 1946718 @TooTallNate - Clarify that workflow packages removed from serverExternalPackages are still compiled during the build.

@workflow/utils@5.0.0-beta.4

  • #2363 926a5e7 @karthikscale3 - Add WORKFLOW_TRACE_MODE with a new linked default: each workflow/step invocation span is now its own trace root with span links to the delivery and run-origin contexts, instead of one trace spanning the entire run. world-vercel now explicitly injects W3C traceparent/tracestate/baggage headers on outgoing workflow-server requests.

workflow@5.0.0-beta.16

15 Jun 12:46
Immutable release. Only release title and notes can be modified.
5711c1e

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.16

  • #2385 628795a @pranaygp - Add an allowReservedAttributes option to start() so framework-level callers can seed reserved $-prefixed run attributes at creation, matching the existing experimental_setAttributes option. The flag is carried through the resilient-start queue input so lazy run creation validates identically.

@workflow/cli@5.0.0-beta.16

@workflow/world@5.0.0-beta.10

  • #2385 628795a @pranaygp - Add an allowReservedAttributes option to start() so framework-level callers can seed reserved $-prefixed run attributes at creation, matching the existing experimental_setAttributes option. The flag is carried through the resilient-start queue input so lazy run creation validates identically.

@workflow/world-local@5.0.0-beta.17

@workflow/world-postgres@5.0.0-beta.15

@workflow/world-vercel@5.0.0-beta.15

  • #2055 0178fa5 @VaguelySerious - New internal API format: separately encode event metadata from user payloads. Eliminates the need for calling separate endpoints for ref resolution, which improves performance especially on longer runs.
  • #2399 af859c3 @VaguelySerious - Update @vercel/queues from 0.3.0 to 0.3.1, which adds native retries for 429s and ECONNRESET

@workflow/web-shared@5.0.0-beta.16

  • #2328 56dcf5f @mitul-s - Add RelativeTimeCard.
  • #2393 dde689a @pranaygp - Render attr_set events across the observability UI: diamond markers on the trace timeline, expandable change payloads (keys set/removed and the writer) in the run sidebar and Events tab, and a key-value Attributes card on run details with reserved $-prefixed keys badged.

@workflow/builders@5.0.0-beta.16

workflow@5.0.0-beta.15

12 Jun 18:15
Immutable release. Only release title and notes can be modified.
58ddc62

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.15

  • #1853 303b6da @TooTallNate - Add opt-in wire-level framing for byte streams (type: 'bytes') so consumers can identify chunk boundaries — a prerequisite for transparent auto-reconnect. The framing decision is gated on a new framedByteStreams capability and recorded per-stream in the serialized ref (framing: 'framed-v1'); legacy raw streams continue to work unchanged.
  • #2373 01c8c08 @pranaygp - Replace hook.hasConflict (a Promise<boolean> property) with hook.getConflict(), a method returning a promise that suspends the workflow to commit hook registration and resolves with the conflicting Run when another active hook owns the token (or null once the hook is registered), without waiting for hook payload data. Code using await hook.hasConflict should migrate to const conflict = await hook.getConflict() and branch on conflict !== null.
  • #2226 ae8d6fe @pranaygp - Allow passing initial run attributes through start(), and speed up workflow-level setAttribute calls by using native events for recording attributes.
  • #1925 b3279f8 @VaguelySerious - V2 suspension processing: unify wait + step queue dispatch into a single parallel batch. The runtime now queues every pending operation (non-inline steps + wait timer) in one Promise.all and then inline-executes one owned step (if any). The asymmetric { timeoutSeconds } return contract for waits is dropped from suspension processing; waits become normal queue continuations with delaySeconds, deduplicated per wait so repeated suspension passes don't accumulate delayed messages. Continuation delays are clamped to 23h (VQS's message-retention bound) with longer waits chained across hop-keyed messages, so multi-day sleep()s work on every world. This restores inline step execution for Promise.race(step, sleep) workflows without any of the carve-outs the prior fix needed: even when the inline step blocks the handler, the wait continuation fires in parallel and drives the next replay. As part of the same change, world-local's queue now honors delaySeconds (matches world-vercel / world-postgres), and its close() aborts pending delayed deliveries and retry sleeps so dev-server/test shutdown isn't held open by wait timers.

@workflow/world@5.0.0-beta.9

  • #2226 ae8d6fe @pranaygp - Allow passing initial run attributes through start(), and speed up workflow-level setAttribute calls by using native events for recording attributes.

@workflow/world-local@5.0.0-beta.16

  • #2226 ae8d6fe @pranaygp - Allow passing initial run attributes through start(), and speed up workflow-level setAttribute calls by using native events for recording attributes.
  • #1925 b3279f8 @VaguelySerious - V2 suspension processing: unify wait + step queue dispatch into a single parallel batch. The runtime now queues every pending operation (non-inline steps + wait timer) in one Promise.all and then inline-executes one owned step (if any). The asymmetric { timeoutSeconds } return contract for waits is dropped from suspension processing; waits become normal queue continuations with delaySeconds, deduplicated per wait so repeated suspension passes don't accumulate delayed messages. Continuation delays are clamped to 23h (VQS's message-retention bound) with longer waits chained across hop-keyed messages, so multi-day sleep()s work on every world. This restores inline step execution for Promise.race(step, sleep) workflows without any of the carve-outs the prior fix needed: even when the inline step blocks the handler, the wait continuation fires in parallel and drives the next replay. As part of the same change, world-local's queue now honors delaySeconds (matches world-vercel / world-postgres), and its close() aborts pending delayed deliveries and retry sleeps so dev-server/test shutdown isn't held open by wait timers.
  • #2295 f2a7bde @TooTallNate - Fix world-local and world-postgres turning duplicate processing of the same hook_created (same runId, hookId, and token) into a self-conflict; both worlds now treat same-entity duplicates as idempotent (matching step_created), and recover crash-orphaned token claims (world-local) and hook rows (world-postgres) by completing the partial write instead of incorrectly suppressing it.

@workflow/world-postgres@5.0.0-beta.14

  • #2226 ae8d6fe @pranaygp - Allow passing initial run attributes through start(), and speed up workflow-level setAttribute calls by using native events for recording attributes.
  • #2295 f2a7bde @TooTallNate - Fix world-local and world-postgres turning duplicate processing of the same hook_created (same runId, hookId, and token) into a self-conflict; both worlds now treat same-entity duplicates as idempotent (matching step_created), and recover crash-orphaned token claims (world-local) and hook rows (world-postgres) by completing the partial write instead of incorrectly suppressing it.

@workflow/world-vercel@5.0.0-beta.14

  • #2226 ae8d6fe @pranaygp - Allow passing initial run attributes through start(), and speed up workflow-level setAttribute calls by using native events for recording attributes.

@workflow/web-shared@5.0.0-beta.15

  • #2383 d81b929 @mitul-s - Animate in-progress segments in the timeline
  • #2381 8262c2d @mitul-s - Render queued span time in the trace timeline as a lead-in connector into the active bar instead of a filled gray box.

workflow@4.4.0

11 Jun 00:26
Immutable release. Only release title and notes can be modified.
7f20506

Choose a tag to compare

@workflow/core@4.4.0

  • #1854 5077962 @TooTallNate - Surface workflowCoreVersion from the responding deployment in healthCheck() results.
  • #2012 326d93a @pranaygp - Expose the active run ID on hook token conflict errors.
  • #2257 9acd46a @pranaygp - Avoid unhandled run lookups for unused or empty readable streams and include Vercel request correlation headers in world transport errors.
  • #2145 b385a2d @TooTallNate - Classify SDK-level AES-GCM encryption failures as RUNTIME_ERROR instead of USER_ERROR via a new RuntimeDecryptionError.
  • #2302 b93a071 @pranaygp - Update vulnerable package dependencies to patched releases.
  • #2292 2ab46de @pranaygp - Bump devalue to 5.8.1 to address published security advisories.
  • #2214 e959124 @pranaygp - Skip workflow replay when the event log already contains a terminal run event.
  • #1799 eca3b51 @TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external .js.map files.

@workflow/cli@4.2.9

@workflow/world@4.1.5

@workflow/world-local@4.1.5

@workflow/world-postgres@4.1.5

@workflow/world-vercel@4.4.0

  • #2235 ecea733 @AndrewBarba - Add a dispatcher option to createVercelWorld for supplying a custom undici dispatcher, used for both HTTP and queue requests. Defaults to the shared undici RetryAgent.
  • #2231 95b3477 @VaguelySerious - Update undici to 7.26.0.
  • #2246 c74e5a3 @ctgowrie - Update @vercel/queue from 0.1.7 to 0.2.1
  • #2257 9acd46a @pranaygp - Avoid unhandled run lookups for unused or empty readable streams and include Vercel request correlation headers in world transport errors.
  • #2255 c8c8ec1 @ctgowrie - Update @vercel/queue from 0.2.1 to 0.3.0
  • #1799 eca3b51 @TooTallNate - Use inline sourcemaps for all workspace packages; published packages no longer ship external .js.map files.
  • #2035 8fde11c @TooTallNate - Validate ref resolve responses (empty, truncated, or Content-Length-mismatched bodies) before use, throwing WorkflowWorldError instead of corrupting the event log.

@workflow/world-testing@4.1.9

@workflow/web@4.1.10

@workflow/web-shared@4.1.10

Read more

workflow@5.0.0-beta.14

11 Jun 15:24
Immutable release. Only release title and notes can be modified.
05e46fa

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.14

  • #2305 4670c4b @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2345 bf44d4d @pranaygp - Fix unhandled rejection when step_created/wait_created calls fail in waitUntil
  • #2318 eb976db @VaguelySerious - Automatically reconnect object streams when the server stream connection times out.
  • #2336 a813382 @TooTallNate - Fix unexpected rejections in waitUntil causing process crashes

@workflow/world@5.0.0-beta.8

  • #2305 4670c4b @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.

@workflow/world-local@5.0.0-beta.15

  • #2305 4670c4b @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.

@workflow/world-postgres@5.0.0-beta.13

  • #2305 4670c4b @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.

@workflow/world-vercel@5.0.0-beta.13

@workflow/world-testing@5.0.0-beta.14

@workflow/web-shared@5.0.0-beta.14

  • #2327 b5396bc @mitul-s - Move run attributes into their own detail card
  • #2325 3e49c6e @mitul-s - Fix the trace span detail panel showing stale or mixed data while navigating spans
  • #2325 3e49c6e @mitul-s - Make stream and run reference links inside event details clickable in the span detail panel.
  • #2335 eb2b8c9 @mitul-s - Show precise, unrounded durations in the new trace viewer: the events list and timeline bar labels now display two-decimal seconds for durations over 1s (e.g. "1.63s") instead of rounding to whole seconds.

@workflow/builders@5.0.0-beta.14

  • #2305 4670c4b @willsather - Add an optional namespace parameter that scopes queue topic prefixes to __{namespace}_wkf_workflow_*. This allows configuring multiple frameworks in the same deployment without queue topic collision.
  • #2018 f5f6d0e @pranaygp - Generate per-file IDs for non-exported workspace package files (previously they collapsed to name@version and silently overwrote each other at runtime) and fail the build when two transformed files emit the same step or workflow ID — collisions that used to register silently last-write-wins now surface as a build error.

@workflow/next@5.0.0-beta.14

  • #2018 f5f6d0e @pranaygp - Stop rewriting workspace-package /dist/ paths to /src/ during workflow/step discovery so that the discovered file paths agree with how base-builder resolves the same packages through pkg.exports, fixing Step function not registered errors at runtime.

workflow@5.0.0-beta.13

09 Jun 18:05
Immutable release. Only release title and notes can be modified.
73e64bb

Choose a tag to compare

Pre-release

@workflow/core@5.0.0-beta.13

  • #1854 8d75491 @TooTallNate - Surface workflowCoreVersion from the responding deployment in healthCheck() results.
  • #2185 0fd0891 @VaguelySerious - Fix CorruptedEventLogError on replay when a workflow races a hook read against a sleep() (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 or Promise.race argument order.
  • #2257 ccd37e9 @pranaygp - Avoid unhandled run lookups for unused or empty readable streams and include Vercel request correlation headers in world transport errors.
  • #2301 bb6ff9a @pranaygp - Update vulnerable package dependencies to patched releases.
  • #2292 aa628b7 @pranaygp - Bump devalue to 5.8.1 to address published security advisories.

@workflow/cli@5.0.0-beta.13

@workflow/world-local@5.0.0-beta.14

@workflow/world-postgres@5.0.0-beta.12

@workflow/world-vercel@5.0.0-beta.12

  • #2257 ccd37e9 @pranaygp - Avoid unhandled run lookups for unused or empty readable streams and include Vercel request correlation headers in world transport errors.
  • #2255 81bda49 @ctgowrie - Update @vercel/queue from 0.2.1 to 0.3.0
  • #2035 c19f38d @TooTallNate - Validate ref resolve responses (empty, truncated, or Content-Length-mismatched bodies) before use, throwing WorkflowWorldError instead of corrupting the event log.

@workflow/world-testing@5.0.0-beta.13

@workflow/web@5.0.0-beta.13

@workflow/web-shared@5.0.0-beta.13

  • #2251 63f1a99 @karthikscale3 - Render message-only workflow errors with the dedicated error block instead of the generic data inspector.
  • #2252 9398065 @mitul-s - New trace viewer cleanup: fix EventRow crash on spans without attributes.data, drop dead DetailPanel + empty placeholder files, give time markers and segments stable keys, fix invalid stroke-linejoin JSX attribute, and replace the unsafe Trace cast with the real TraceWithMeta type.

@workflow/next@5.0.0-beta.13

  • #2253 a51910b @wbinnssmith - Always apply turbopack content condition regardless of builder mode to prevent the workflow loader from running on every JS/TS file when lazy discovery is enabled.
  • #2263 0b8b077 @ijjk - Avoid creating a separate esbuild steps bundle in Next.js lazy discovery mode.

@workflow/nuxt@5.0.0-beta.13

@workflow/nest@5.0.0-beta.13