Skip to content

Version Packages (beta)#1787

Open
workflow-devkit-release-bot[bot] wants to merge 1 commit intomainfrom
changeset-release/main
Open

Version Packages (beta)#1787
workflow-devkit-release-bot[bot] wants to merge 1 commit intomainfrom
changeset-release/main

Conversation

@workflow-devkit-release-bot
Copy link
Copy Markdown
Contributor

@workflow-devkit-release-bot workflow-devkit-release-bot bot commented Apr 16, 2026

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/[email protected]

Major Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

@workflow/[email protected]

Minor Changes

[email protected]

Minor Changes

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

  • Updated dependencies [417c493, e295bae]:

@workflow/[email protected]

Patch Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

  • Updated dependencies [417c493, e295bae]:

@workflow/[email protected]

Patch Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

  • Updated dependencies [417c493]:

@workflow/[email protected]

Patch Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

  • Updated dependencies [417c493, e295bae]:

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

  • #1686 417c493 Thanks @TooTallNate! - BREAKING CHANGE: Remove client transform mode from SWC plugin. The client and step modes were nearly identical — both preserved step function bodies, replaced workflow bodies with throw stubs, and emitted the same JSON manifest. The only differences were the step registration mechanism (simple property assignment vs. IIFE) and whether DCE ran. Step mode now absorbs all client-mode behaviors: hoisted variable references for object property steps (so .stepId is accessible), and dead code elimination. All integrations that previously used mode: 'client' now use mode: 'step'.

  • Updated dependencies [417c493]:

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

Patch Changes

@workflow/[email protected]

@workflow-devkit-release-bot workflow-devkit-release-bot bot requested a review from a team as a code owner April 16, 2026 22:52
@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Apr 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Apr 17, 2026 6:15pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Apr 17, 2026 6:15pm
example-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-astro-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-express-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-fastify-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-hono-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-nitro-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-nuxt-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workbench-vite-workflow Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Apr 17, 2026 6:15pm
workflow-swc-playground Ready Ready Preview, Comment Apr 17, 2026 6:15pm
workflow-web Ready Ready Preview, Comment Apr 17, 2026 6:15pm

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 16, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 945 0 67 1012
✅ 💻 Local Development 1018 0 86 1104
✅ 📦 Local Production 1018 0 86 1104
✅ 🐘 Local Postgres 1018 0 86 1104
✅ 🪟 Windows 92 0 0 92
❌ 📋 Other 256 2 18 276
Total 4347 2 343 4692

❌ Failed Tests

📋 Other (2 failed)

e2e-local-postgres-nest-stable (2 failed):

  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KPEARCYSG3FA4P5H2V4G897Q
  • health check (queue-based) - workflow and step endpoints respond to health check messages

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 85 0 7
✅ example 85 0 7
✅ express 85 0 7
✅ fastify 85 0 7
✅ hono 85 0 7
✅ nextjs-turbopack 90 0 2
✅ nextjs-webpack 90 0 2
✅ nitro 85 0 7
✅ nuxt 85 0 7
✅ sveltekit 85 0 7
✅ vite 85 0 7
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 86 0 6
✅ express-stable 86 0 6
✅ fastify-stable 86 0 6
✅ hono-stable 86 0 6
✅ nextjs-turbopack-canary 73 0 19
✅ nextjs-turbopack-stable 92 0 0
✅ nextjs-webpack-canary 73 0 19
✅ nextjs-webpack-stable 92 0 0
✅ nitro-stable 86 0 6
✅ nuxt-stable 86 0 6
✅ sveltekit-stable 86 0 6
✅ vite-stable 86 0 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 86 0 6
✅ express-stable 86 0 6
✅ fastify-stable 86 0 6
✅ hono-stable 86 0 6
✅ nextjs-turbopack-canary 73 0 19
✅ nextjs-turbopack-stable 92 0 0
✅ nextjs-webpack-canary 73 0 19
✅ nextjs-webpack-stable 92 0 0
✅ nitro-stable 86 0 6
✅ nuxt-stable 86 0 6
✅ sveltekit-stable 86 0 6
✅ vite-stable 86 0 6
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 86 0 6
✅ express-stable 86 0 6
✅ fastify-stable 86 0 6
✅ hono-stable 86 0 6
✅ nextjs-turbopack-canary 73 0 19
✅ nextjs-turbopack-stable 92 0 0
✅ nextjs-webpack-canary 73 0 19
✅ nextjs-webpack-stable 92 0 0
✅ nitro-stable 86 0 6
✅ nuxt-stable 86 0 6
✅ sveltekit-stable 86 0 6
✅ vite-stable 86 0 6
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 92 0 0
❌ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 86 0 6
❌ e2e-local-postgres-nest-stable 84 2 6
✅ e2e-local-prod-nest-stable 86 0 6

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: success
  • Local Dev: success
  • Local Prod: success
  • Local Postgres: failure
  • Windows: success

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 16, 2026

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.042s (-6.1% 🟢) 1.005s (~) 0.964s 10 1.00x
💻 Local Nitro 0.042s (-2.8%) 1.005s (~) 0.963s 10 1.01x
🐘 Postgres Nitro 0.048s (-49.8% 🟢) 1.010s (-3.1%) 0.963s 10 1.15x
💻 Local Next.js (Turbopack) 0.050s 1.006s 0.956s 10 1.20x
🐘 Postgres Next.js (Turbopack) 0.057s 1.011s 0.954s 10 1.36x
🐘 Postgres Express 0.059s (+0.9%) 1.010s (~) 0.952s 10 1.41x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.247s (+5.0% 🔺) 2.282s (+6.9% 🔺) 2.035s 10 1.00x
▲ Vercel Next.js (Turbopack) 0.256s (+1.7%) 2.387s (+2.3%) 2.131s 10 1.03x
▲ Vercel Nitro 0.376s (-8.2% 🟢) 2.204s (-12.2% 🟢) 1.828s 10 1.52x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.122s (-1.6%) 2.009s (~) 0.887s 10 1.00x
💻 Local Nitro 1.123s (-0.7%) 2.006s (~) 0.883s 10 1.00x
💻 Local Next.js (Turbopack) 1.126s 2.006s 0.880s 10 1.00x
💻 Local Express 1.128s (~) 2.006s (~) 0.878s 10 1.01x
🐘 Postgres Next.js (Turbopack) 1.140s 2.011s 0.871s 10 1.02x
🐘 Postgres Express 1.142s (~) 2.009s (~) 0.867s 10 1.02x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.871s (-51.9% 🟢) 3.713s (-37.2% 🟢) 1.842s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.889s (-7.2% 🟢) 3.829s (~) 1.939s 10 1.01x
▲ Vercel Express 1.930s (+2.9%) 3.753s (-1.4%) 1.823s 10 1.03x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 10.717s (-1.4%) 11.021s (~) 0.304s 3 1.00x
💻 Local Next.js (Turbopack) 10.816s 11.024s 0.208s 3 1.01x
🐘 Postgres Express 10.866s (-0.9%) 11.020s (~) 0.154s 3 1.01x
🐘 Postgres Next.js (Turbopack) 10.915s 11.356s 0.441s 3 1.02x
💻 Local Nitro 10.917s (~) 11.023s (~) 0.106s 3 1.02x
💻 Local Express 10.937s (~) 11.024s (~) 0.087s 3 1.02x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 16.579s (-30.1% 🟢) 18.002s (-28.3% 🟢) 1.423s 2 1.00x
▲ Vercel Next.js (Turbopack) 17.408s (+0.5%) 19.014s (-2.0%) 1.606s 2 1.05x
▲ Vercel Express 19.026s (+12.0% 🔺) 21.364s (+6.7% 🔺) 2.337s 2 1.15x

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

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 14.138s (-3.1%) 15.025s (~) 0.887s 4 1.00x
🐘 Postgres Next.js (Turbopack) 14.426s 15.029s 0.603s 4 1.02x
🐘 Postgres Express 14.502s (-0.6%) 15.019s (~) 0.517s 4 1.03x
💻 Local Next.js (Turbopack) 14.725s 15.030s 0.306s 4 1.04x
💻 Local Nitro 14.946s (-0.8%) 15.028s (-6.3% 🟢) 0.082s 4 1.06x
💻 Local Express 15.008s (~) 15.281s (+1.7%) 0.273s 4 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 32.203s (-50.0% 🟢) 33.764s (-49.3% 🟢) 1.561s 2 1.00x
▲ Vercel Express 33.688s (-33.0% 🟢) 35.340s (-32.8% 🟢) 1.652s 2 1.05x
▲ Vercel Next.js (Turbopack) 34.429s (-34.5% 🟢) 36.735s (-32.7% 🟢) 2.306s 2 1.07x

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

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 13.143s (-5.9% 🟢) 13.877s (-3.0%) 0.734s 7 1.00x
🐘 Postgres Express 13.738s (-1.9%) 14.021s (-3.9%) 0.283s 7 1.05x
🐘 Postgres Next.js (Turbopack) 13.858s 14.021s 0.163s 7 1.05x
💻 Local Next.js (Turbopack) 16.300s 17.033s 0.733s 6 1.24x
💻 Local Nitro 16.504s (-1.7%) 17.029s (~) 0.525s 6 1.26x
💻 Local Express 16.925s (+1.9%) 17.031s (~) 0.105s 6 1.29x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 56.175s (-53.7% 🟢) 58.102s (-53.0% 🟢) 1.926s 2 1.00x
▲ Vercel Nitro 56.258s (-86.7% 🟢) 58.296s (-86.3% 🟢) 2.038s 2 1.00x
▲ Vercel Next.js (Turbopack) 56.465s (-85.7% 🟢) 58.499s (-85.2% 🟢) 2.033s 2 1.01x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.199s (-5.9% 🟢) 2.009s (~) 0.810s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.226s 2.010s 0.784s 15 1.02x
🐘 Postgres Express 1.276s (+1.2%) 2.009s (~) 0.734s 15 1.06x
💻 Local Next.js (Turbopack) 1.537s 2.006s 0.469s 15 1.28x
💻 Local Nitro 1.541s (-5.6% 🟢) 2.006s (-3.3%) 0.465s 15 1.28x
💻 Local Express 1.544s (+3.7%) 2.006s (~) 0.462s 15 1.29x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.115s (-25.0% 🟢) 3.986s (-7.8% 🟢) 1.871s 8 1.00x
▲ Vercel Express 2.131s (-25.5% 🟢) 3.951s (-14.5% 🟢) 1.820s 8 1.01x
▲ Vercel Next.js (Turbopack) 2.647s (-22.1% 🟢) 4.561s (-7.5% 🟢) 1.914s 7 1.25x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.297s (-2.3%) 3.009s (~) 0.712s 10 1.00x
🐘 Postgres Next.js (Turbopack) 2.407s 3.010s 0.603s 10 1.05x
🐘 Postgres Express 2.419s (+2.5%) 3.110s (+3.4%) 0.690s 10 1.05x
💻 Local Nitro 2.874s (-8.6% 🟢) 3.208s (-17.4% 🟢) 0.333s 10 1.25x
💻 Local Express 2.887s (-2.2%) 3.760s (+8.9% 🔺) 0.873s 8 1.26x
💻 Local Next.js (Turbopack) 2.932s 3.453s 0.522s 9 1.28x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.587s (-28.5% 🟢) 4.238s (-17.1% 🟢) 1.651s 8 1.00x
▲ Vercel Nitro 3.107s (-23.3% 🟢) 4.598s (-22.3% 🟢) 1.491s 7 1.20x
▲ Vercel Next.js (Turbopack) 3.311s (-53.4% 🟢) 5.142s (-42.3% 🟢) 1.831s 7 1.28x

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

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.403s (-2.2%) 4.011s (~) 0.608s 8 1.00x
🐘 Postgres Express 3.482s (~) 4.009s (~) 0.527s 8 1.02x
🐘 Postgres Next.js (Turbopack) 3.642s 4.011s 0.369s 8 1.07x
💻 Local Next.js (Turbopack) 7.504s 8.267s 0.763s 4 2.20x
💻 Local Nitro 7.914s (-5.2% 🟢) 8.269s (-8.3% 🟢) 0.355s 4 2.33x
💻 Local Express 8.619s (+3.4%) 9.023s (~) 0.403s 4 2.53x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.033s (-14.0% 🟢) 5.020s (-9.3% 🟢) 1.987s 6 1.00x
▲ Vercel Express 3.405s (-19.7% 🟢) 5.016s (-18.1% 🟢) 1.611s 6 1.12x
▲ Vercel Next.js (Turbopack) 4.593s (-48.5% 🟢) 6.165s (-43.8% 🟢) 1.572s 5 1.51x

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

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.228s 2.009s 0.781s 15 1.00x
🐘 Postgres Nitro 1.231s (-2.1%) 2.007s (~) 0.776s 15 1.00x
🐘 Postgres Express 1.265s (+0.6%) 2.007s (~) 0.743s 15 1.03x
💻 Local Next.js (Turbopack) 1.501s 2.006s 0.504s 15 1.22x
💻 Local Nitro 1.519s (-18.6% 🟢) 2.006s (-14.3% 🟢) 0.487s 15 1.24x
💻 Local Express 1.592s (-15.9% 🟢) 2.074s (-12.3% 🟢) 0.482s 15 1.30x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.191s (-10.9% 🟢) 3.878s (-7.0% 🟢) 1.687s 8 1.00x
▲ Vercel Express 2.234s (-13.5% 🟢) 4.198s (-3.5%) 1.964s 8 1.02x
▲ Vercel Next.js (Turbopack) 2.375s (-19.0% 🟢) 4.039s (-13.0% 🟢) 1.664s 8 1.08x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.340s (~) 3.011s (~) 0.671s 10 1.00x
🐘 Postgres Nitro 2.374s (+1.5%) 3.010s (~) 0.635s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.457s 3.009s 0.553s 10 1.05x
💻 Local Nitro 2.848s (-7.1% 🟢) 3.454s (-11.1% 🟢) 0.606s 9 1.22x
💻 Local Next.js (Turbopack) 2.936s 3.453s 0.517s 9 1.26x
💻 Local Express 3.132s (~) 3.884s (+3.2%) 0.753s 8 1.34x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.601s (-18.5% 🟢) 4.310s (-10.1% 🟢) 1.708s 7 1.00x
▲ Vercel Next.js (Turbopack) 2.852s (-9.2% 🟢) 4.292s (-5.1% 🟢) 1.440s 8 1.10x
▲ Vercel Nitro 3.675s (+13.7% 🔺) 5.252s (+3.4%) 1.577s 6 1.41x

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

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.433s (-1.4%) 4.010s (~) 0.577s 8 1.00x
🐘 Postgres Express 3.478s (-0.6%) 4.010s (~) 0.532s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.700s 4.011s 0.311s 8 1.08x
💻 Local Next.js (Turbopack) 7.899s 8.272s 0.374s 4 2.30x
💻 Local Nitro 8.612s (-5.8% 🟢) 9.024s (-10.0% 🟢) 0.412s 4 2.51x
💻 Local Express 9.111s (+3.5%) 10.024s (+8.1% 🔺) 0.914s 3 2.65x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.213s (-49.9% 🟢) 5.055s (-38.2% 🟢) 1.843s 6 1.00x
▲ Vercel Nitro 3.571s (-29.9% 🟢) 5.285s (-22.5% 🟢) 1.713s 6 1.11x
▲ Vercel Next.js (Turbopack) 4.611s (-31.8% 🟢) 6.502s (-23.9% 🟢) 1.892s 5 1.44x

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

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.632s (-22.9% 🟢) 1.006s (~) 0.374s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.779s 1.023s 0.244s 59 1.23x
🐘 Postgres Express 0.798s (-4.9%) 1.006s (-1.7%) 0.208s 60 1.26x
💻 Local Next.js (Turbopack) 0.873s 1.057s 0.185s 57 1.38x
💻 Local Nitro 0.986s (+0.6%) 1.229s (+12.4% 🔺) 0.243s 49 1.56x
💻 Local Express 1.010s (+2.6%) 1.570s (+45.9% 🔺) 0.560s 39 1.60x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 9.885s (-31.8% 🟢) 11.518s (-28.4% 🟢) 1.633s 6 1.00x
▲ Vercel Express 10.970s (-42.3% 🟢) 12.968s (-39.2% 🟢) 1.997s 5 1.11x
▲ Vercel Nitro 13.281s (-39.8% 🟢) 15.117s (-37.1% 🟢) 1.836s 4 1.34x

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

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.503s (-22.0% 🟢) 2.007s (-4.4%) 0.504s 45 1.00x
🐘 Postgres Next.js (Turbopack) 1.871s 2.029s 0.158s 45 1.24x
🐘 Postgres Express 1.876s (-5.1% 🟢) 2.029s (-10.2% 🟢) 0.153s 45 1.25x
💻 Local Next.js (Turbopack) 2.732s 3.042s 0.310s 30 1.82x
💻 Local Nitro 3.010s (-0.8%) 3.416s (-9.1% 🟢) 0.405s 27 2.00x
💻 Local Express 3.023s (~) 3.650s (+1.8%) 0.627s 25 2.01x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 28.651s (-27.4% 🟢) 30.396s (-26.4% 🟢) 1.746s 3 1.00x
▲ Vercel Next.js (Turbopack) 30.695s (-38.4% 🟢) 32.413s (-37.3% 🟢) 1.718s 3 1.07x
▲ Vercel Express 30.795s (-10.8% 🟢) 32.832s (-10.8% 🟢) 2.037s 3 1.07x

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

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.106s (-24.3% 🟢) 3.881s (-15.7% 🟢) 0.775s 31 1.00x
🐘 Postgres Express 3.793s (-4.9%) 4.009s (-8.3% 🟢) 0.215s 30 1.22x
🐘 Postgres Next.js (Turbopack) 3.844s 4.044s 0.200s 30 1.24x
💻 Local Next.js (Turbopack) 8.836s 9.233s 0.397s 14 2.84x
💻 Local Nitro 9.038s (-2.8%) 9.710s (-3.1%) 0.672s 13 2.91x
💻 Local Express 9.205s (~) 10.019s (~) 0.813s 12 2.96x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 76.895s (-20.7% 🟢) 79.036s (-19.7% 🟢) 2.141s 2 1.00x
▲ Vercel Next.js (Turbopack) 81.076s (-24.3% 🟢) 82.989s (-23.8% 🟢) 1.913s 2 1.05x
▲ Vercel Express 84.806s (-34.8% 🟢) 86.785s (-34.3% 🟢) 1.979s 2 1.10x

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

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.234s (-17.5% 🟢) 1.007s (~) 0.773s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.252s 1.007s 0.755s 60 1.08x
🐘 Postgres Express 0.280s (-0.8%) 1.006s (~) 0.726s 60 1.20x
💻 Local Next.js (Turbopack) 0.555s 1.005s 0.450s 60 2.37x
💻 Local Nitro 0.591s (-2.2%) 1.005s (-1.6%) 0.413s 60 2.53x
💻 Local Express 0.610s (+8.8% 🔺) 1.022s (+1.7%) 0.412s 59 2.61x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.607s (-17.8% 🟢) 3.413s (-6.2% 🟢) 1.806s 18 1.00x
▲ Vercel Next.js (Turbopack) 1.638s (-19.0% 🟢) 3.247s (-14.4% 🟢) 1.609s 19 1.02x
▲ Vercel Nitro 1.905s (+14.7% 🔺) 3.625s (+8.2% 🔺) 1.720s 17 1.19x

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

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.372s (-25.1% 🟢) 1.006s (~) 0.634s 90 1.00x
🐘 Postgres Next.js (Turbopack) 0.485s 1.006s 0.521s 90 1.31x
🐘 Postgres Express 0.496s (-2.7%) 1.006s (~) 0.511s 90 1.33x
💻 Local Express 2.530s (+0.7%) 3.009s (~) 0.479s 30 6.81x
💻 Local Nitro 2.539s (~) 3.009s (~) 0.469s 30 6.83x
💻 Local Next.js (Turbopack) 2.624s 3.009s 0.385s 30 7.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.969s (-8.0% 🟢) 4.682s (-2.9%) 1.713s 20 1.00x
▲ Vercel Express 3.159s (+3.7%) 5.101s (+6.1% 🔺) 1.942s 18 1.06x
▲ Vercel Next.js (Turbopack) 3.445s (-2.6%) 5.090s (-2.0%) 1.645s 18 1.16x

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

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.586s (-25.9% 🟢) 1.006s (~) 0.420s 120 1.00x
🐘 Postgres Next.js (Turbopack) 0.773s 1.015s 0.242s 119 1.32x
🐘 Postgres Express 0.779s (-4.8%) 1.007s (-1.0%) 0.228s 120 1.33x
💻 Local Next.js (Turbopack) 10.897s 11.481s 0.584s 11 18.60x
💻 Local Nitro 11.051s (-1.2%) 11.664s (~) 0.613s 11 18.86x
💻 Local Express 11.202s (~) 11.852s (-0.7%) 0.650s 11 19.12x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.969s (-19.6% 🟢) 7.864s (-14.9% 🟢) 1.895s 16 1.00x
▲ Vercel Nitro 6.478s (-16.1% 🟢) 8.031s (-14.6% 🟢) 1.553s 16 1.09x
▲ Vercel Next.js (Turbopack) 30.153s (+192.0% 🔺) 31.638s (+157.5% 🔺) 1.485s 10 5.05x

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

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.169s (-17.6% 🟢) 0.999s (~) 0.001s (-20.0% 🟢) 1.011s (~) 0.842s 10 1.00x
💻 Local Next.js (Turbopack) 0.175s 1.003s 0.012s 1.018s 0.843s 10 1.04x
🐘 Postgres Express 0.195s (-4.9%) 0.997s (~) 0.002s (+6.2% 🔺) 1.010s (~) 0.815s 10 1.16x
🐘 Postgres Next.js (Turbopack) 0.195s 1.001s 0.001s 1.010s 0.815s 10 1.16x
💻 Local Nitro 0.201s (-6.0% 🟢) 1.004s (~) 0.012s (-7.2% 🟢) 1.017s (~) 0.816s 10 1.19x
💻 Local Express 0.206s (+3.5%) 1.004s (~) 0.012s (~) 1.018s (~) 0.812s 10 1.22x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.596s (-58.3% 🟢) 3.192s (-39.5% 🟢) 0.679s (-8.6% 🟢) 4.287s (-33.9% 🟢) 2.691s 10 1.00x
▲ Vercel Express 1.683s (-32.8% 🟢) 3.025s (-26.0% 🟢) 1.027s (+6.9% 🔺) 4.540s (-18.8% 🟢) 2.857s 10 1.05x
▲ Vercel Next.js (Turbopack) 2.742s (-60.0% 🟢) 4.063s (-53.0% 🟢) 0.890s (+40.9% 🔺) 5.464s (-44.2% 🟢) 2.722s 10 1.72x

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

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.518s (-17.0% 🟢) 1.007s (~) 0.011s (+161.1% 🔺) 1.028s (+0.6%) 0.510s 59 1.00x
🐘 Postgres Express 0.600s (-4.7%) 1.005s (~) 0.006s (+64.6% 🔺) 1.023s (~) 0.423s 59 1.16x
🐘 Postgres Next.js (Turbopack) 0.608s 1.009s 0.006s 1.023s 0.415s 59 1.17x
💻 Local Next.js (Turbopack) 0.665s 1.013s 0.010s 1.025s 0.360s 59 1.28x
💻 Local Express 0.751s (-0.8%) 1.012s (-1.6%) 0.009s (-7.3% 🟢) 1.022s (-1.7%) 0.271s 59 1.45x
💻 Local Nitro 0.836s (~) 1.011s (~) 0.008s (-9.7% 🟢) 1.114s (~) 0.278s 54 1.61x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 4.618s (-29.0% 🟢) 6.048s (-24.5% 🟢) 0.188s (-54.1% 🟢) 6.749s (-23.6% 🟢) 2.132s 9 1.00x
▲ Vercel Next.js (Turbopack) 4.653s (-72.5% 🟢) 6.273s (-65.6% 🟢) 0.393s (+85.9% 🔺) 7.124s (-62.4% 🟢) 2.472s 9 1.01x
▲ Vercel Nitro 5.076s (-82.8% 🟢) 6.794s (-77.9% 🟢) 0.237s (+112.0% 🔺) 7.469s (-76.5% 🟢) 2.393s 9 1.10x

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

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.936s 1.151s 0.000s 1.158s 0.223s 53 1.00x
🐘 Postgres Nitro 0.944s (-2.6%) 1.090s (-12.6% 🟢) 0.000s (-12.7% 🟢) 1.098s (-12.7% 🟢) 0.154s 55 1.01x
🐘 Postgres Express 0.947s (-1.4%) 1.122s (-12.2% 🟢) 0.000s (-14.8% 🟢) 1.137s (-13.0% 🟢) 0.189s 54 1.01x
💻 Local Nitro 1.231s (+0.7%) 2.022s (~) 0.000s (+133.3% 🔺) 2.023s (~) 0.792s 30 1.32x
💻 Local Express 1.254s (+2.4%) 2.022s (~) 0.000s (+40.0% 🔺) 2.024s (~) 0.770s 30 1.34x
💻 Local Next.js (Turbopack) 1.272s 2.020s 0.000s 2.023s 0.751s 30 1.36x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.982s (-2.2%) 4.090s (-6.9% 🟢) 0.000s (-100.0% 🟢) 4.521s (-6.0% 🟢) 1.538s 14 1.00x
▲ Vercel Next.js (Turbopack) 3.268s (-67.9% 🟢) 4.698s (-59.2% 🟢) 0.000s (+Infinity% 🔺) 5.249s (-56.4% 🟢) 1.981s 12 1.10x
▲ Vercel Express 3.281s (-12.3% 🟢) 4.437s (-13.0% 🟢) 0.000s (-100.0% 🟢) 4.926s (-10.9% 🟢) 1.644s 13 1.10x

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

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

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.739s (-1.9%) 2.138s (-1.8%) 0.000s (+Infinity% 🔺) 2.152s (-2.1%) 0.413s 28 1.00x
🐘 Postgres Nitro 1.740s (-2.9%) 2.104s (-1.7%) 0.000s (-3.4%) 2.141s (-1.5%) 0.401s 29 1.00x
🐘 Postgres Next.js (Turbopack) 1.830s 2.182s 0.000s 2.190s 0.360s 28 1.05x
💻 Local Nitro 3.433s (+1.4%) 4.032s (~) 0.000s (-50.0% 🟢) 4.034s (~) 0.601s 15 1.97x
💻 Local Express 3.528s (+1.7%) 4.034s (~) 0.001s (-8.3% 🟢) 4.038s (~) 0.509s 15 2.03x
💻 Local Next.js (Turbopack) 3.710s 4.230s 0.001s 4.235s 0.525s 15 2.13x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.765s (-17.9% 🟢) 5.262s (-12.6% 🟢) 0.000s (NaN%) 5.751s (-10.9% 🟢) 1.987s 11 1.00x
▲ Vercel Nitro 4.011s (-2.0%) 5.264s (-2.0%) 0.000s (-100.0% 🟢) 5.742s (-0.9%) 1.732s 11 1.07x
▲ Vercel Next.js (Turbopack) 4.313s (-23.2% 🟢) 5.799s (-16.9% 🟢) 0.000s (-100.0% 🟢) 6.333s (-16.0% 🟢) 2.020s 10 1.15x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 14/21
🐘 Postgres Nitro 17/21
▲ Vercel Nitro 11/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 17/21
Next.js (Turbopack) 🐘 Postgres 17/21
Nitro 🐘 Postgres 19/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)

📋 View full workflow run

Sign up for free to 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.

0 participants