Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Version Packages (beta) - #2610

Merged
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main
Jun 27, 2026
Merged

Version Packages (beta)#2610
VaguelySerious merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

main is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on main.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@workflow/ai@5.0.0-beta.12

Minor Changes

  • #1863d580326 Thanks @VaguelySerious! - Expose totalUsage and finishReason on the DurableAgent.stream() result, mirroring the AI SDK's GenerateTextResult/StreamTextResult and the existing onFinish event payload.

  • 8cdfd85 - WorkflowChatTransport now repairs UI message stream part framing, so duplicated or interleaved durable stream writes no longer crash the AI SDK consumer with Received text-delta for missing text part.

Patch Changes

  • #2082eff215c Thanks @VaguelySerious! - WorkflowChatTransport now drops orphan UI chunks (deltas/ends with no matching *-start in the resumed window) when reconnecting with an initialStartIndex not matching a UI chunk boundary, instead of throwing.

  • #2635aa71766 Thanks @NathanColosimo! - Suppress chat transport console errors for intentional AbortError stream closes.

  • 096faf0 - Reduce DurableAgent step boundary payload by reconstructing StepResult outside the step instead of inside.

  • Updated dependencies []:

    • workflow@5.0.0-beta.25

@workflow/astro@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/builders@5.0.0-beta.25

Patch Changes

  • #259455e2110 Thanks @ijjk! - Fix fast workflow discovery for JS files imported through basenames like ./hello.step.

  • Updated dependencies [b180270, 1ea2b4e]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/errors@5.0.0-beta.8

@workflow/cli@5.0.0-beta.25

Patch Changes

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2, 5977694, d4e6c5b, a1cbc8b, 48e6bbf]:
    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/core@5.0.0-beta.25

Patch Changes

  • #2666b180270 Thanks @NathanColosimo! - Retry inline step completion persistence failures instead of recording them as step failures.

  • 1ea2b4e - Fix a turbo-mode race where step-body writes (experimental_setAttributes and stream writes via getWritable) could reach the server before the workflow run was created.

  • Updated dependencies [5977694, d4e6c5b, a1cbc8b, 48e6bbf]:

    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world-vercel@5.0.0-beta.21
    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@workflow/nest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/next@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25

@workflow/nitro@5.0.0-beta.25

Patch Changes

  • #25726f4dd0e Thanks @NathanColosimo! - Reload rebuilt step bundles during Vite development.

  • a1cbc8b - Fix HTTP/2 requests failing in production builds (Vite/Nitro, TanStack Start) where undici's bundled node:http2 could not load and fell back to a stub.

  • Updated dependencies [8393716, 55e2110, b180270, 1ea2b4e, 7c1e2a2]:

    • @workflow/web@5.0.0-beta.25
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/nuxt@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, a1cbc8b]:
    • @workflow/nitro@5.0.0-beta.25

@workflow/rollup@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/sveltekit@5.0.0-beta.25

Patch Changes

  • a1cbc8b - Fix HTTP/2 requests failing in SvelteKit production builds (undici's bundled node:http2 could not load, falling back to a stub).

  • Updated dependencies [55e2110]:

    • @workflow/builders@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/vite@5.0.0-beta.25

@workflow/vite@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110]:
    • @workflow/builders@5.0.0-beta.25

@workflow/vitest@5.0.0-beta.25

Patch Changes

  • Updated dependencies [55e2110, b180270, 1ea2b4e, 5977694, d4e6c5b, 48e6bbf]:
    • @workflow/builders@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/world-local@5.0.0-beta.22
    • @workflow/world@5.0.0-beta.14
    • @workflow/rollup@5.0.0-beta.25

@workflow/web@5.0.0-beta.25

Patch Changes

  • 8393716 - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #26327c1e2a2 Thanks @VaguelySerious! - Fix run and event observability pages hanging (~16s) and showing no data in the bundled server build, caused by HTTP/2 requests failing to reach node:http2.

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

Patch Changes

  • #26198c12132 Thanks @mitul-s! - Extend cn with custom tailwind-merge class groups for the design-system typography and material utilities, and move it to its own lib/cn module.

  • #26378393716 Thanks @mitul-s! - Fix the run trace detail panel flickering its Input/Output sections when navigating between spans. Span detail is now driven by a single selection-derived state machine (useSelectedSpanDetail) whose loading state stays in phase with the selected span, replacing the fetch flag that lagged selection by a few renders.

  • #2613148d474 Thanks @karthikscale3! - Use workflow event occurrence timestamps for span timing, span detail lifecycle fields, and event row display when available.

  • #2614a9a1d99 Thanks @mitul-s! - Remove the drop shadow from the off-screen marker indicator button in the trace viewer.

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:

    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14

workflow@5.0.0-beta.25

Patch Changes

  • Updated dependencies [6f4dd0e, b180270, a1cbc8b, a1cbc8b, 1ea2b4e]:
    • @workflow/nitro@5.0.0-beta.25
    • @workflow/core@5.0.0-beta.25
    • @workflow/sveltekit@5.0.0-beta.25
    • @workflow/cli@5.0.0-beta.25
    • @workflow/nuxt@5.0.0-beta.25
    • @workflow/astro@5.0.0-beta.25
    • @workflow/nest@5.0.0-beta.25
    • @workflow/next@5.0.0-beta.25
    • @workflow/rollup@5.0.0-beta.25
    • @workflow/typescript-plugin@5.0.0-beta.4
    • @workflow/errors@5.0.0-beta.8

@workflow/world@5.0.0-beta.14

Patch Changes

  • #262248e6bbf Thanks @karthikscale3! - Declare Zod as a runtime dependency so exported schemas are built with the package's own Zod version instead of the consuming application's peer.

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

Patch Changes

  • #26795977694 Thanks @VaguelySerious! - Retry local queue deliveries that fail at the transport (e.g. fetch failed / ETIMEDOUT when the dev server is saturated by many parallel steps) instead of dropping the message, so steps no longer get stuck never-started under high local concurrency.

  • #2667d4e6c5b Thanks @VaguelySerious! - Scope untagged startup recovery to untagged runs so a dev server no longer re-enqueues tagged runs (e.g. left behind by the vitest harness in a shared data directory), which previously failed run_started with "did not return the run entity".

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

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

Patch Changes

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

Patch Changes

  • Updated dependencies [b180270, 1ea2b4e, 48e6bbf]:
    • @workflow/core@5.0.0-beta.25
    • @workflow/world@5.0.0-beta.14
    • @workflow/cli@5.0.0-beta.25
    • workflow@5.0.0-beta.25

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

Patch Changes

  • a1cbc8b - Enable HTTP/2 for the events API and stream write requests.

  • Updated dependencies [48e6bbf]:

    • @workflow/world@5.0.0-beta.14
    • @workflow/errors@5.0.0-beta.8

@github-actions
github-actionsBot requested review from a team and ijjk as code ownersJune 24, 2026 01:25
@vercel

vercelBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from a69ffdf to a9a1d99CompareJune 24, 2026 18:01
@github-actionsgithub-actionsBot reopened this Jun 24, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from e57e751 to 7f04d87CompareJune 26, 2026 21:43
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 8cb7c14 to 8cdfd85CompareJune 26, 2026 21:44
@github-actionsgithub-actionsBot reopened this Jun 26, 2026
@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.046s (-6.5% 🟢)1.008s (~)0.962s101.00x
💻 LocalNitro0.047s (+33.7% 🔺)1.006s (~)0.959s101.02x
💻 LocalNext.js (Turbopack)0.051s (+1.4%)1.006s (~)0.955s101.11x
🐘 PostgresNext.js (Turbopack)0.060s (-48.8% 🟢)1.012s (-3.9%)0.951s101.31x
🐘 PostgresNitro0.065s (-8.1% 🟢)1.013s (~)0.949s101.41x
🐘 PostgresExpress0.072s (+15.3% 🔺)1.015s (~)0.943s101.58x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.229s (+15.7% 🔺)2.295s (+34.4% 🔺)2.067s101.00x
▲ VercelNext.js (Turbopack)0.239s (-56.5% 🟢)2.029s (~)1.791s101.04x
▲ VercelExpress0.318s (+51.5% 🔺)2.123s (+42.0% 🔺)1.804s101.39x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express1.077s (~)2.006s (~)0.929s101.00x
💻 LocalNext.js (Turbopack)1.081s (~)2.006s (~)0.924s101.00x
💻 LocalNitro1.085s (+1.8%)2.007s (~)0.921s101.01x
🐘 PostgresNitro1.097s (~)2.011s (~)0.914s101.02x
🐘 PostgresNext.js (Turbopack)1.102s (+1.8%)2.009s (-0.5%)0.907s101.02x
🐘 PostgresExpress1.104s (+0.7%)2.010s (~)0.906s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.419s (+2.7%)2.832s (-8.9% 🟢)1.413s101.00x
▲ VercelExpress1.497s (+6.4% 🔺)3.297s (+16.4% 🔺)1.799s101.05x
▲ VercelNext.js (Turbopack)2.170s (+1.0%)4.076s (+14.8% 🔺)1.906s101.53x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express10.429s (~)11.023s (~)0.594s31.00x
💻 LocalNext.js (Turbopack)10.462s (~)11.020s (~)0.558s31.00x
💻 LocalNitro10.467s (~)11.023s (~)0.557s31.00x
🐘 PostgresNitro10.470s (-0.6%)11.021s (~)0.550s31.00x
🐘 PostgresExpress10.472s (~)11.018s (~)0.546s31.00x
🐘 PostgresNext.js (Turbopack)10.501s (-2.0%)11.016s (~)0.515s31.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express11.663s (-0.8%)13.318s (-4.1%)1.655s31.00x
▲ VercelNitro12.224s (+3.3%)14.317s (+7.9% 🔺)2.093s31.05x
▲ VercelNext.js (Turbopack)12.481s (-1.4%)14.330s (+3.3%)1.849s31.07x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.634s (~)14.019s (~)0.385s51.00x
💻 LocalNext.js (Turbopack)13.637s (-0.5%)14.026s (~)0.389s51.00x
💻 LocalExpress13.663s (~)14.029s (~)0.365s51.00x
🐘 PostgresNitro13.672s (~)14.022s (~)0.350s51.00x
🐘 PostgresNext.js (Turbopack)13.674s (~)14.021s (~)0.348s51.00x
💻 LocalNitro13.709s (+1.6%)14.026s (~)0.317s51.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Next.js (Turbopack)18.013s (-1.4%)20.209s (~)2.196s31.00x
▲ VercelNitro18.383s (-1.1%)20.581s (~)2.197s31.02x
▲ VercelExpress18.759s (+9.9% 🔺)21.021s (+11.1% 🔺)2.261s31.04x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express12.181s (-1.4%)13.025s (~)0.844s71.00x
💻 LocalNext.js (Turbopack)12.197s (-1.4%)13.026s (~)0.829s71.00x
🐘 PostgresNitro12.198s (-0.8%)13.021s (~)0.823s71.00x
🐘 PostgresExpress12.238s (+1.1%)13.022s (+1.2%)0.784s71.00x
💻 LocalNitro12.309s (+4.4%)13.026s (+8.3% 🔺)0.717s71.01x
🐘 PostgresNext.js (Turbopack)12.360s (~)13.020s (~)0.660s71.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro21.584s (+21.0% 🔺)23.725s (+21.7% 🔺)2.141s41.00x
▲ VercelExpress21.631s (+19.7% 🔺)23.582s (+16.7% 🔺)1.951s41.00x
▲ VercelNext.js (Turbopack)23.422s (+19.4% 🔺)25.389s (+20.9% 🔺)1.967s41.09x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.182s (~)2.007s (~)0.825s151.00x
🐘 PostgresNitro1.191s (-0.9%)2.009s (~)0.818s151.01x
🐘 PostgresNext.js (Turbopack)1.212s (-10.7% 🟢)2.009s (-1.1%)0.797s151.03x
💻 LocalExpress1.358s (-4.5%)2.007s (~)0.649s151.15x
💻 LocalNext.js (Turbopack)1.396s (~)2.006s (~)0.610s151.18x
💻 LocalNitro1.439s (+11.1% 🔺)2.006s (~)0.567s151.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.268s (+18.6% 🔺)3.601s (-5.3% 🟢)1.333s91.00x
▲ VercelNitro2.356s (+7.3% 🔺)4.013s (+10.5% 🔺)1.657s81.04x
▲ VercelNext.js (Turbopack)4.064s (+20.7% 🔺)5.622s (+16.9% 🔺)1.558s61.79x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.343s (-1.5%)2.470s (-1.5%)1.127s131.00x
🐘 PostgresNext.js (Turbopack)1.357s (-3.4%)3.011s (~)1.654s101.01x
🐘 PostgresExpress1.368s (+5.6% 🔺)2.675s (+3.2%)1.307s121.02x
💻 LocalExpress2.327s (-15.8% 🟢)2.827s (-6.0% 🟢)0.501s111.73x
💻 LocalNitro2.581s (+7.1% 🔺)3.109s (+3.1%)0.528s101.92x
💻 LocalNext.js (Turbopack)2.624s (+0.7%)3.008s (~)0.384s101.95x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.474s (-1.3%)4.054s (+10.1% 🔺)1.580s81.00x
▲ VercelExpress2.663s (-4.1%)4.281s (-4.5%)1.618s81.08x
▲ VercelNext.js (Turbopack)4.933s (+40.8% 🔺)6.853s (+46.6% 🔺)1.920s51.99x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.610s (+1.7%)4.136s (~)2.526s81.00x
🐘 PostgresNitro1.641s (-1.3%)4.137s (-3.8%)2.496s81.02x
🐘 PostgresNext.js (Turbopack)3.116s (+9.2% 🔺)6.420s (+20.0% 🔺)3.304s51.94x
💻 LocalExpress5.450s (-13.5% 🟢)6.214s (-8.8% 🟢)0.764s53.39x
💻 LocalNitro6.356s (+16.4% 🔺)7.215s (+19.9% 🔺)0.859s53.95x
💻 LocalNext.js (Turbopack)7.227s (-2.5%)8.023s (-5.8% 🟢)0.796s44.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.207s (+13.7% 🔺)5.092s (+7.6% 🔺)1.884s61.00x
▲ VercelExpress3.632s (+17.7% 🔺)5.407s (+13.5% 🔺)1.775s61.13x
▲ VercelNext.js (Turbopack)4.753s (-6.2% 🟢)6.756s (+3.8%)2.003s51.48x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.204s (-17.8% 🟢)2.007s (-9.6% 🟢)0.803s151.00x
🐘 PostgresNitro1.206s (+0.9%)2.007s (~)0.801s151.00x
🐘 PostgresNext.js (Turbopack)1.217s (-6.2% 🟢)2.010s (-0.9%)0.793s151.01x
💻 LocalExpress1.400s (-3.0%)2.007s (~)0.607s151.16x
💻 LocalNitro1.416s (+19.5% 🔺)2.007s (~)0.591s151.18x
💻 LocalNext.js (Turbopack)1.443s (-11.0% 🟢)2.007s (-3.2%)0.564s151.20x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.338s (+15.1% 🔺)3.897s (+13.2% 🔺)1.559s81.00x
▲ VercelExpress2.481s (+22.7% 🔺)3.865s (~)1.384s81.06x
▲ VercelNext.js (Turbopack)3.634s (+21.6% 🔺)5.343s (+19.0% 🔺)1.709s61.55x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.345s (+1.4%)2.318s (~)0.973s131.00x
🐘 PostgresNext.js (Turbopack)1.359s (-4.0%)2.737s (-1.5%)1.378s111.01x
🐘 PostgresNitro1.396s (+6.1% 🔺)2.593s (+3.3%)1.197s121.04x
💻 LocalExpress2.510s (-5.8% 🟢)3.009s (+3.1%)0.499s101.87x
💻 LocalNitro2.663s (+11.8% 🔺)3.009s (~)0.346s101.98x
💻 LocalNext.js (Turbopack)2.790s (+14.9% 🔺)3.108s (~)0.318s102.07x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.820s (+19.7% 🔺)4.495s (+23.6% 🔺)1.674s71.00x
▲ VercelExpress3.201s (+47.2% 🔺)4.962s (+29.2% 🔺)1.762s71.13x
▲ VercelNext.js (Turbopack)4.108s (+17.5% 🔺)6.004s (+23.0% 🔺)1.896s51.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro1.626s (-2.5%)4.139s (-3.9%)2.514s81.00x
🐘 PostgresExpress1.629s (+3.0%)4.136s (~)2.507s81.00x
🐘 PostgresNext.js (Turbopack)2.969s (+8.1% 🔺)5.682s (+8.8% 🔺)2.714s61.83x
💻 LocalNext.js (Turbopack)5.488s (-28.6% 🟢)6.213s (-29.2% 🟢)0.725s53.38x
💻 LocalExpress6.278s (+2.2%)6.818s (~)0.540s53.86x
💻 LocalNitro6.595s (+21.4% 🔺)7.015s (+9.3% 🔺)0.420s54.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.332s (+15.2% 🔺)4.784s (-1.2%)1.453s71.00x
▲ VercelNitro4.520s (+61.8% 🔺)6.319s (+34.0% 🔺)1.799s51.36x
▲ VercelNext.js (Turbopack)6.011s (+51.7% 🔺)8.147s (+48.7% 🔺)2.137s41.80x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Express0.549s (-3.8%)1.005s (~)0.456s601.00x
🐘 PostgresNext.js (Turbopack)0.554s (-11.2% 🟢)1.007s (-6.3% 🟢)0.452s601.01x
🐘 PostgresExpress0.566s (+10.3% 🔺)1.024s (+1.7%)0.457s591.03x
💻 LocalNitro0.578s (+29.7% 🔺)1.005s (~)0.427s601.05x
🐘 PostgresNitro0.590s (+2.6%)1.040s (+1.6%)0.450s591.07x
💻 LocalNext.js (Turbopack)0.594s (-9.6% 🟢)1.006s (-1.6%)0.412s601.08x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.307s (+19.1% 🔺)5.130s (+8.2% 🔺)1.822s121.00x
▲ VercelExpress3.389s (+32.0% 🔺)5.026s (+25.0% 🔺)1.637s121.02x
▲ VercelNext.js (Turbopack)4.832s (+25.9% 🔺)6.714s (+23.8% 🔺)1.882s91.46x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.334s (+6.1% 🔺)2.007s (-1.1%)0.674s451.00x
🐘 PostgresNext.js (Turbopack)1.336s (-22.3% 🟢)2.008s (-13.8% 🟢)0.672s451.00x
🐘 PostgresNitro1.341s (-3.3%)2.008s (~)0.667s451.01x
💻 LocalExpress1.443s (+3.3%)2.006s (~)0.563s451.08x
💻 LocalNext.js (Turbopack)1.468s (-3.7%)2.006s (~)0.539s451.10x
💻 LocalNitro1.490s (+43.8% 🔺)2.006s (+38.3% 🔺)0.517s451.12x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.023s (+31.1% 🔺)9.941s (+33.6% 🔺)1.919s101.00x
▲ VercelExpress8.165s (+18.3% 🔺)9.721s (+11.3% 🔺)1.555s101.02x
▲ VercelNext.js (Turbopack)9.908s (+16.5% 🔺)12.094s (+18.1% 🔺)2.187s81.23x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Nitro2.624s (-9.3% 🟢)3.034s (-6.7% 🟢)0.410s401.00x
🐘 PostgresExpress2.650s (+11.0% 🔺)3.085s (+1.7%)0.435s391.01x
🐘 PostgresNext.js (Turbopack)2.763s (-10.5% 🟢)3.111s (-13.6% 🟢)0.349s391.05x
💻 LocalNext.js (Turbopack)3.171s (-5.0%)3.945s (-1.6%)0.774s311.21x
💻 LocalExpress3.216s (+5.6% 🔺)3.853s (+7.1% 🔺)0.638s321.23x
💻 LocalNitro3.258s (+46.9% 🔺)3.978s (+40.9% 🔺)0.719s311.24x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro17.385s (+30.0% 🔺)19.713s (+30.9% 🔺)2.328s71.00x
▲ VercelExpress18.362s (+39.5% 🔺)20.300s (+29.7% 🔺)1.938s61.06x
▲ VercelNext.js (Turbopack)22.896s (+19.0% 🔺)25.289s (+22.0% 🔺)2.392s51.32x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.203s (-21.5% 🟢)1.023s (+0.9%)0.820s591.00x
🐘 PostgresNitro0.212s (-7.6% 🟢)1.006s (~)0.795s601.04x
🐘 PostgresExpress0.214s (+5.6% 🔺)1.006s (~)0.792s601.06x
💻 LocalExpress0.430s (-7.8% 🟢)1.004s (~)0.575s602.12x
💻 LocalNitro0.472s (+25.3% 🔺)1.005s (~)0.533s602.32x
💻 LocalNext.js (Turbopack)0.594s (-3.8%)1.005s (~)0.411s602.93x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.272s (+26.2% 🔺)2.701s (+0.9%)1.429s231.00x
▲ VercelNitro1.381s (+28.3% 🔺)3.095s (+25.4% 🔺)1.715s201.09x
▲ VercelNext.js (Turbopack)3.074s (+50.8% 🔺)4.830s (+44.5% 🔺)1.756s132.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.303s (-43.3% 🟢)1.029s (-9.1% 🟢)0.726s881.00x
🐘 PostgresExpress0.321s (+4.7%)1.006s (~)0.685s901.06x
🐘 PostgresNitro0.343s (-3.5%)1.029s (+2.2%)0.686s881.13x
💻 LocalExpress2.047s (-9.9% 🟢)2.610s (-8.5% 🟢)0.562s356.75x
💻 LocalNitro2.167s (+45.7% 🔺)2.766s (+34.7% 🔺)0.600s337.14x
💻 LocalNext.js (Turbopack)2.779s (-0.5%)3.148s (-5.8% 🟢)0.369s299.16x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.978s (+51.8% 🔺)3.961s (+48.1% 🔺)1.983s231.00x
▲ VercelExpress2.135s (+45.2% 🔺)3.871s (+20.3% 🔺)1.735s241.08x
▲ VercelNext.js (Turbopack)3.394s (+33.4% 🔺)5.311s (+41.2% 🔺)1.918s181.72x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.521s (+0.7%)1.087s (+3.6%)0.567s1111.00x
🐘 PostgresNext.js (Turbopack)0.530s (-39.6% 🟢)3.138s (+24.2% 🔺)2.609s391.02x
🐘 PostgresNitro0.534s (-3.7%)1.069s (-3.5%)0.535s1131.03x
💻 LocalExpress9.572s (+1.9%)10.361s (-2.4%)0.790s1218.39x
💻 LocalNitro9.818s (+32.1% 🔺)10.695s (+29.1% 🔺)0.878s1218.86x
💻 LocalNext.js (Turbopack)10.910s (+2.2%)11.575s (-0.8%)0.665s1120.96x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.147s (+18.0% 🔺)4.068s (+12.3% 🔺)1.921s301.00x
▲ VercelNext.js (Turbopack)4.545s (+21.3% 🔺)6.475s (+24.1% 🔺)1.930s192.12x
▲ VercelExpress45.968s (+2211.3% 🔺)47.925s (+1122.2% 🔺)1.956s721.41x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.137s (~)1.968s (~)0.010s (+3.0%)2.017s (~)0.880s101.00x
💻 LocalExpress1.159s (+0.9%)2.004s (~)0.010s (-6.4% 🟢)2.018s (~)0.858s101.02x
🐘 PostgresExpress1.164s (+0.8%)1.997s (~)0.001s (+44.4% 🔺)2.011s (~)0.846s101.02x
💻 LocalNitro1.165s (+4.8%)2.004s (~)0.013s (-61.9% 🟢)2.020s (-1.1%)0.855s101.02x
🐘 PostgresNitro1.174s (~)1.997s (~)0.001s (-8.3% 🟢)2.010s (~)0.836s101.03x
🐘 PostgresNext.js (Turbopack)1.176s (-9.8% 🟢)2.001s (~)0.001s (-92.2% 🟢)2.012s (-1.3%)0.837s101.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.054s (+5.9% 🔺)3.180s (-5.9% 🟢)2.622s (+73.4% 🔺)6.220s (+15.6% 🔺)4.166s101.00x
▲ VercelNitro2.153s (+12.9% 🔺)3.614s (+18.1% 🔺)2.193s (+45.7% 🔺)6.360s (+26.5% 🔺)4.207s101.05x
▲ VercelNext.js (Turbopack)4.273s (+27.7% 🔺)4.433s (+21.7% 🔺)1.760s (+26.7% 🔺)7.828s (+23.4% 🔺)3.556s102.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Next.js (Turbopack)1.537s (-4.4%)1.970s (~)0.013s (+0.8%)2.027s (~)0.489s301.00x
💻 LocalNitro1.563s (+10.7% 🔺)2.010s (~)0.013s (-32.1% 🟢)2.026s (~)0.463s301.02x
💻 LocalExpress1.570s (+1.0%)2.011s (~)0.012s (-19.0% 🟢)2.026s (~)0.456s301.02x
🐘 PostgresNitro1.591s (-2.6%)2.004s (~)0.006s (+5.7% 🔺)2.027s (~)0.436s301.03x
🐘 PostgresExpress1.612s (+4.6%)2.035s (+1.6%)0.004s (-25.5% 🟢)2.059s (+1.6%)0.447s301.05x
🐘 PostgresNext.js (Turbopack)1.624s (-17.6% 🟢)2.010s (-16.0% 🟢)0.005s (+22.0% 🔺)2.026s (-16.2% 🟢)0.403s301.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro6.005s (+7.6% 🔺)7.595s (+13.3% 🔺)0.191s (-12.5% 🟢)8.294s (+12.0% 🔺)2.289s81.00x
▲ VercelExpress6.322s (+9.8% 🔺)7.483s (+1.7%)0.320s (+25.8% 🔺)8.309s (+2.4%)1.986s81.05x
▲ VercelNext.js (Turbopack)10.013s (+7.7% 🔺)10.798s (+7.2% 🔺)0.212s (-20.7% 🟢)12.185s (+8.4% 🔺)2.173s51.67x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.808s (+9.4% 🔺)1.100s (+7.0% 🔺)0.000s (+Infinity% 🔺)1.118s (+6.1% 🔺)0.311s541.00x
🐘 PostgresNitro0.842s (+1.2%)1.122s (+1.9%)0.000s (-100.0% 🟢)1.140s (+1.9%)0.299s541.04x
🐘 PostgresNext.js (Turbopack)1.008s (-7.8% 🟢)1.384s (-16.6% 🟢)0.000s (+Infinity% 🔺)1.400s (-16.8% 🟢)0.392s441.25x
💻 LocalNitro1.222s (+27.9% 🔺)1.920s (+46.0% 🔺)0.000s (-17.9% 🟢)1.923s (+45.9% 🔺)0.701s321.51x
💻 LocalExpress1.232s (-7.6% 🟢)1.981s (-1.6%)0.000s (-36.9% 🟢)1.985s (-1.6%)0.752s311.53x
💻 LocalNext.js (Turbopack)1.349s (-7.5% 🟢)1.979s (~)0.001s (+500.0% 🔺)2.016s (~)0.667s301.67x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro3.293s (+18.2% 🔺)4.684s (+12.2% 🔺)0.000s (+Infinity% 🔺)5.240s (+13.0% 🔺)1.947s121.00x
▲ VercelExpress3.661s (+28.7% 🔺)4.788s (+7.3% 🔺)0.000s (-100.0% 🟢)5.249s (+5.3% 🔺)1.588s121.11x
▲ VercelNext.js (Turbopack)5.122s (+4.8%)6.009s (+11.7% 🔺)0.000s (-100.0% 🟢)7.117s (+11.4% 🔺)1.994s91.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.942s (+18.1% 🔺)2.493s (+10.7% 🔺)0.000s (+12.5% 🔺)2.509s (+10.2% 🔺)0.566s241.00x
🐘 PostgresNitro1.946s (+11.7% 🔺)2.603s (+11.6% 🔺)0.000s (+17.4% 🔺)2.620s (+11.7% 🔺)0.674s231.00x
🐘 PostgresNext.js (Turbopack)2.241s (-33.6% 🟢)2.821s (-27.3% 🟢)0.000s (+Infinity% 🔺)2.829s (-27.9% 🟢)0.589s221.15x
💻 LocalNext.js (Turbopack)3.328s (-17.7% 🟢)3.860s (-14.1% 🟢)0.000s (-66.3% 🟢)3.908s (-13.8% 🟢)0.579s161.71x
💻 LocalNitro3.524s (+61.4% 🔺)4.090s (+57.0% 🔺)0.001s (-20.0% 🟢)4.097s (+56.9% 🔺)0.574s151.81x
💻 LocalExpress3.563s (+6.1% 🔺)4.093s (+4.9%)0.001s (~)4.100s (+4.9%)0.536s151.83x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.760s (-13.0% 🟢)6.144s (~)0.000s (+Infinity% 🔺)6.655s (-6.8% 🟢)1.895s101.00x
▲ VercelExpress5.148s (~)6.435s (-1.6%)0.000s (NaN%)6.882s (-2.8%)1.734s91.08x
▲ VercelNext.js (Turbopack)7.795s (+13.0% 🔺)8.746s (+16.0% 🔺)0.000s (+Infinity% 🔺)9.803s (+14.1% 🔺)2.008s71.64x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalExpress14/21
🐘 PostgresExpress10/21
▲ VercelNitro15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres14/21
Next.js (Turbopack)🐘 Postgres14/21
Nitro🐘 Postgres15/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actionsBot commented Jun 27, 2026

Copy link
Copy Markdown
ContributorAuthor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production144202301672
✅ 💻 Local Development160502191824
✅ 📦 Local Production160502191824
✅ 🐘 Local Postgres159302311824
✅ 🪟 Windows15200152
✅ 📋 Other88501791064
Total7282010788360

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro125027
✅ example125027
✅ express125027
✅ fastify125027
✅ hono125027
✅ nextjs-turbopack14903
✅ nextjs-webpack14903
✅ nitro125027
✅ nuxt125027
✅ sveltekit14408
✅ vite125027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable127025
✅ express-stable127025
✅ fastify-stable127025
✅ hono-stable127025
✅ nextjs-turbopack-canary133019
✅ nextjs-turbopack-stable15200
✅ nextjs-webpack-canary133019
✅ nextjs-webpack-stable15200
✅ nitro-stable127025
✅ nuxt-stable127025
✅ sveltekit-stable14606
✅ vite-stable127025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable126026
✅ express-stable126026
✅ fastify-stable126026
✅ hono-stable126026
✅ nextjs-turbopack-canary132020
✅ nextjs-turbopack-stable15101
✅ nextjs-webpack-canary132020
✅ nextjs-webpack-stable15101
✅ nitro-stable126026
✅ nuxt-stable126026
✅ sveltekit-stable14507
✅ vite-stable126026
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15200
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable127025
✅ e2e-local-dev-tanstack-start-127025
✅ e2e-local-postgres-nest-stable126026
✅ e2e-local-postgres-tanstack-start-126026
✅ e2e-local-prod-nest-stable127025
✅ e2e-local-prod-tanstack-start-127025
✅ e2e-vercel-prod-tanstack-start125027

📋 View full workflow run

@github-actions

Copy link
Copy Markdown
ContributorAuthor

No backport to stable for 4f0fb63 (AI decision).

This is a "Version Packages (beta)" commit auto-generated by the changesets release action — it only bumps package versions, updates CHANGELOG.md files, and edits .changeset/pre.json. It is release plumbing tied to main's beta pre-release mode and should not be backported to stable.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

4f0fb639cbec8e89412afb0423713858a00d2c1c

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@VaguelySerious