Skip to content

Releases: vercel/workflow

workflow@4.2.1

11 Apr 01:52
Immutable release. Only release title and notes can be modified.
aed6ad2

Choose a tag to compare

@workflow/core@4.2.1

@workflow/web-shared@4.1.1

@workflow/ai@4.1.1

workflow@5.0.0-beta.1

11 Apr 01:54
Immutable release. Only release title and notes can be modified.
223e9ca

Choose a tag to compare

workflow@5.0.0-beta.1 Pre-release
Pre-release

@workflow/core@5.0.0-beta.1

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1632 0a86de3 @TooTallNate - BREAKING CHANGE: Remove @workflow/core/private and workflow/internal/private public subpath exports. The SWC compiler plugin no longer generates imports from these paths.
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • #1652 ec517fa @TooTallNate - Add features.encryption to WorkflowMetadata returned by getWorkflowMetadata()
  • #1616 71d39d2 @TooTallNate - Use custom class serialization for Run across runtime and workflow VM contexts, and add e2e coverage for Run instance boundary roundtrips
  • #1677 9513a81 @TooTallNate - Add serialization support for workflow function references
  • #1658 a5c90ce @VaguelySerious - Fix community world E2E tests by adding specVersion to the World interface so start() uses the safe baseline (v2) for worlds that don't declare their supported version
  • #1678 ea97bd6 @TooTallNate - Remove redundant hc_ prefix from health check correlationId that caused doubled hc_hc_ in the derived runId and stream name.
  • #942 873b4e2 @VaguelySerious - BREAKING CHANGE: Make getWorld and createWorld asynchronous to support ESM dynamic imports for custom world modules. All callers must now await getWorld().

@workflow/cli@5.0.0-beta.1

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • #1562 e436242 @VaguelySerious - Switch Vercel Build Output API and standalone builder output from CJS to ESM. Step bundles, workflow bundles, and webhook bundles now emit ESM format by default, preserving native import.meta.url support and eliminating the need for CJS polyfills. Fully-bundled ESM output includes a createRequire banner to support CJS dependencies that use require() for Node.js builtins. The intermediate workflow bundle (which runs inside vm.runInContext) remains CJS as required by the VM execution model.
  • #942 873b4e2 @VaguelySerious - BREAKING CHANGE: Make getWorld and createWorld asynchronous to support ESM dynamic imports for custom world modules. All callers must now await getWorld().

@workflow/world@5.0.0-beta.1

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • #1658 a5c90ce @VaguelySerious - Fix community world E2E tests by adding specVersion to the World interface so start() uses the safe baseline (v2) for worlds that don't declare their supported version

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

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • #1658 a5c90ce @VaguelySerious - Fix community world E2E tests by adding specVersion to the World interface so start() uses the safe baseline (v2) for worlds that don't declare their supported version

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

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • #1658 a5c90ce @VaguelySerious - Fix community world E2E tests by adding specVersion to the World interface so start() uses the safe baseline (v2) for worlds that don't declare their supported version

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

  • #1293 66d49c0 @VaguelySerious - BREAKING CHANGE: Restructure stream methods on World interface to use world.streams.* namespace with runId as the first parameter. writeToStream(name, runId, chunk)streams.write(runId, name, chunk), writeToStreamMultistreams.writeMulti, closeStreamstreams.close, readFromStreamstreams.get(runId, name, startIndex?), listStreamsByRunIdstreams.list(runId).
  • #1293 66d49c0 @VaguelySerious - Require runId argument for world.steps.get.
  • [#1658](https://github.com/vercel/workflow/pull/...
Read more

workflow@5.0.0-beta.0

08 Apr 00:40
Immutable release. Only release title and notes can be modified.
a261b21

Choose a tag to compare

workflow@5.0.0-beta.0 Pre-release
Pre-release

@workflow/core@5.0.0-beta.0

@workflow/cli@5.0.0-beta.0

@workflow/world@5.0.0-beta.0

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

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

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

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

@workflow/web@5.0.0-beta.0

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

@workflow/ai@5.0.0-beta.0

@workflow/typescript-plugin@5.0.0-beta.0

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

@workflow/builders@5.0.0-beta.0

@workflow/next@5.0.0-beta.0

@workflow/nitro@5.0.0-beta.0

@workflow/nuxt@5.0.0-beta.0

@workflow/sveltekit@5.0.0-beta.0

@workflow/astro@5.0.0-beta.0

@workflow/vite@5.0.0-beta.0

@workflow/rollup@5.0.0-beta.0

@workflow/errors@5.0.0-beta.0

@workflow/utils@5.0.0-beta.0

@workflow/nest@5.0.0-beta.0

@workflow/serde@5.0.0-beta.0

@workflow/vitest@5.0.0-beta.0

workflow@4.2.0-beta.78

07 Apr 18:19
Immutable release. Only release title and notes can be modified.
61831cf

Choose a tag to compare

@workflow/core@4.2.0-beta.78

  • #1627 5f138f2 @VaguelySerious - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.
  • #1629 a6bcea9 @VaguelySerious - CLI start command probes deployment specVersion via health check before choosing queue transport. Health check always uses JSON transport for compatibility with old deployments.
  • #1533 7e70d18 @VaguelySerious - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.
  • #1512 ba916e1 @TooTallNate - Add DOMException to the workflow VM context and add first-class serialization support, preserving message, name, and derived code across serialization boundaries
  • #1618 c9b3038 @VaguelySerious - fix(core): properly propagate stream cancellation on disconnect
  • #1537 c8dce52 @VaguelySerious - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.
  • #1606 ab872cc @VaguelySerious - Make registeredSteps a global singleton to protect against module duplication and caching issues

@workflow/cli@4.2.0-beta.78

  • #1552 f5d2aef @TooTallNate - Add workflow transform command for inspecting SWC transform output with optional serde compliance analysis
  • #1552 f5d2aef @TooTallNate - Implement serde compliance checks in workflow validate
  • #1629 a6bcea9 @VaguelySerious - CLI start command probes deployment specVersion via health check before choosing queue transport. Health check always uses JSON transport for compatibility with old deployments.
  • #1414 2680a42 @TooTallNate - Add Request and Response revivers to web and CLI hydration so serialized Request/Response objects display correctly in the observability UI and CLI inspect output.

@workflow/world@4.1.0-beta.17

  • #1627 5f138f2 @VaguelySerious - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.
  • #1533 7e70d18 @VaguelySerious - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.
  • #1537 c8dce52 @VaguelySerious - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

@workflow/world-local@4.1.0-beta.51

  • #1533 7e70d18 @VaguelySerious - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.
  • #1537 c8dce52 @VaguelySerious - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

@workflow/world-postgres@4.1.0-beta.53

  • #1533 7e70d18 @VaguelySerious - Add streamFlushIntervalMs option to Streamer interface, optional for worlds to allow overwriting the default of 10ms in low-latency environments.
  • #1537 c8dce52 @VaguelySerious - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.

@workflow/world-vercel@4.1.0-beta.49

  • #1627 5f138f2 @VaguelySerious - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments.
  • #1537 c8dce52 @VaguelySerious - Allow workflow invocation to create run if initial storage call in start did not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly.
  • #1626 5b9eb40 @VaguelySerious - Paginate writeToStreamMulti to stay within the server's 1000 chunks per batch limit

@workflow/web-shared@4.1.0-beta.73

  • #1414 2680a42 @TooTallNate - Add Request and Response revivers to web and CLI hydration so serialized Request/Response objects display correctly in the observability UI and CLI inspect output.

@workflow/ai@4.1.0-beta.61

@workflow/swc-plugin@4.1.0-beta.22

Read more

workflow@4.2.0-beta.77

07 Apr 19:02
Immutable release. Only release title and notes can be modified.
24a041f

Choose a tag to compare

@workflow/core@4.2.0-beta.77

  • #1591 d8aaf27 @VaguelySerious - Fix step contextStorage global potentially seeing dual-instance issues when bundlers create multiple copies of the module.
  • #1367 047c01b @pranaygp - Make start() return Run<unknown> with unknown[] args when deploymentId is provided, since the deployed workflow version may have different types

@workflow/world@4.1.0-beta.16

@workflow/world-local@4.1.0-beta.50

@workflow/world-vercel@4.1.0-beta.48

  • #1602 760ebf1 @karthikscale3 - Update headers from x-workflow-run-id and x-workflow-step-id to x-vercel-workflow-run-id and x-vercel-workflow-step-id in order to align with header naming convention

@workflow/builders@4.0.1-beta.68

  • #1554 d1330cf @pranaygp - Fix node-module-error plugin pointing at multi-line comments instead of code usage
  • #1598 443a9e6 @TooTallNate - Override "sideEffects": false from package.json for discovered workflow/step/serde entries so esbuild does not drop their bare imports from the virtual entry

@workflow/next@4.0.1-beta.73

  • #1597 4429078 @TooTallNate - Stop unconditionally setting WORKFLOW_PUBLIC_MANIFEST=1 during next dev, which caused public/.well-known/workflow/v1/manifest.json to be created without the env var being explicitly set.

workflow@4.2.0

07 Apr 23:56
Immutable release. Only release title and notes can be modified.
4e435e0

Choose a tag to compare

@workflow/core@4.2.0

@workflow/cli@4.2.0

@workflow/world@4.1.0

@workflow/world-local@4.1.0

@workflow/world-postgres@4.1.0

@workflow/world-vercel@4.1.0

@workflow/world-testing@4.1.0

@workflow/web@4.1.0

@workflow/web-shared@4.1.0

@workflow/ai@4.1.0

@workflow/typescript-plugin@4.0.1

@workflow/swc-plugin@4.1.0

@workflow/builders@4.0.1

@workflow/next@4.0.1

@workflow/nitro@4.0.1

@workflow/nuxt@4.0.1

@workflow/sveltekit@4.0.0

@workflow/astro@4.0.0

@workflow/vite@4.0.0

@workflow/rollup@4.0.0

@workflow/errors@4.1.0

@workflow/utils@4.1.0

@workflow/nest@0.0.0

@workflow/serde@4.1.0

@workflow/vitest@4.0.1

workflow@4.2.0-beta.76

02 Apr 21:26
Immutable release. Only release title and notes can be modified.
45fd831

Choose a tag to compare

@workflow/world-local@4.1.0-beta.49

  • #1588 ef2218a @VaguelySerious - Fix zod v3/v4 schema mismatch crash (keyValidator._parse is not a function) by using consistent zod/v4 imports in queue files that consume v4-native schemas from @workflow/world

@workflow/world-postgres@4.1.0-beta.51

  • #1588 ef2218a @VaguelySerious - Fix zod v3/v4 schema mismatch crash (keyValidator._parse is not a function) by using consistent zod/v4 imports in queue files that consume v4-native schemas from @workflow/world

@workflow/world-vercel@4.1.0-beta.47

  • #1588 ef2218a @VaguelySerious - Fix zod v3/v4 schema mismatch crash (keyValidator._parse is not a function) by using consistent zod/v4 imports in queue files that consume v4-native schemas from @workflow/world

@workflow/web@4.1.0-beta.47

@workflow/ai@4.1.0-beta.60

workflow@4.2.0-beta.75

01 Apr 23:10
Immutable release. Only release title and notes can be modified.
8462c5d

Choose a tag to compare

@workflow/core@4.2.0-beta.75

  • #1569 a98f8de @VaguelySerious - Combine initial run fetch, event fetch, and run_started event creation
  • #1572 d38114b @TooTallNate - Fix resumeHook()/resumeWebhook() failing on workflow runs from pre-encryption deployments by checking the target run's workflowCoreVersion capabilities before encoding the payload
  • #1567 6dc1b78 @VaguelySerious - Increase flow route limit to max fluid duration and fail run if a single replay takes too long

@workflow/world@4.1.0-beta.15

@workflow/world-local@4.1.0-beta.48

@workflow/world-postgres@4.1.0-beta.50

@workflow/builders@4.0.1-beta.66

@workflow/next@4.0.1-beta.71

@workflow/nitro@4.0.1-beta.70

  • #1386 0e8a880 @comfuture - Preserve generated step bundle side effects in Nitro virtual handlers so local production builds keep workflow step registrations available at runtime.

@workflow/sveltekit@4.0.0-beta.64

@workflow/errors@4.1.0-beta.20

workflow@4.2.0-beta.74

30 Mar 20:43
Immutable release. Only release title and notes can be modified.
91ba457

Choose a tag to compare

@workflow/core@4.2.0-beta.74

@workflow/world-local@4.1.0-beta.47

@workflow/web@4.1.0-beta.46

@workflow/ai@4.1.0-beta.59

  • #1529 a0a7195 @VaguelySerious - Fix WorkflowChatTransport blocking browser paint during stream reconnect by yielding to the macrotask queue between chunks

@workflow/builders@4.0.1-beta.65

  • #1560 a3b7c48 @VaguelySerious - Only rewrite .ts extensions to .js in externalized step imports when targeting Node's native ESM loader (vitest), preserving original extensions for framework bundlers (Next.js, SvelteKit, etc.)
  • #1509 d119c74 @VaguelySerious - Fix import.meta.url being undefined when using CJS builds

workflow@4.2.0-beta.73

27 Mar 18:18
Immutable release. Only release title and notes can be modified.
e11eebf

Choose a tag to compare

@workflow/core@4.2.0-beta.73

  • #1520 8e7083b @pranaygp - Add btoa, atob, and Buffer globals to workflow VM context for base64 encoding/decoding
  • #1523 d1391e1 @pranaygp - Fix race condition allowing duplicate hook_disposed events for the same hook
  • #1518 c739b99 @ceolinwill - Fix getWritable() in step functions to resolve on lock release instead of requiring stream close, preventing Vercel function timeouts

@workflow/world-local@4.1.0-beta.46

@workflow/world-postgres@4.1.0-beta.48

@workflow/web@4.1.0-beta.45

@workflow/builders@4.0.1-beta.64

  • #1524 52db376 @matchai - Fix dependency resolution for step imports with .ts, .mts, and .cts extensions

@workflow/vitest@4.0.1-beta.10

  • #1524 52db376 @matchai - Fix step dependencies not being mockable when imported from TypeScript files