Skip to content

Conversation

@adriandlam
Copy link
Member

@adriandlam adriandlam commented Dec 4, 2025

  • fixes discrepancies between getting started pages
  • add dynamic og
  • adds lint scripts for checking if codeblock examples are valid and if they use single quotes
  • small fixes in docs styling

@changeset-bot
Copy link

changeset-bot bot commented Dec 4, 2025

⚠️ No Changeset found

Latest commit: 8926241

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link
Contributor

vercel bot commented Dec 4, 2025

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

Project Deployment Preview Comments Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview Comment Dec 4, 2025 10:20pm
example-nextjs-workflow-webpack Ready Ready Preview Comment Dec 4, 2025 10:20pm
example-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-astro-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-express-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-fastify-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-hono-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-nitro-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-nuxt-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-sveltekit-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workbench-vite-workflow Ready Ready Preview Comment Dec 4, 2025 10:20pm
workflow-docs Ready Ready Preview Comment Dec 4, 2025 10:20pm

@github-actions
Copy link
Contributor

github-actions bot commented Dec 4, 2025

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
⚠️ ▲ Vercel Production 250 0 10 260
✅ 🪟 Windows 26 0 0 26
❌ 🌍 Community Worlds 82 34 0 116
⚠️ 📋 Other 25 0 1 26
Total 383 34 11 428

❌ Failed Tests

mongodb (🌍 Community Worlds): e2e webhookWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected 404 to be 202 // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:255:24
    at processTicksAndRejections (node:internal/process/tas
redis (🌍 Community Worlds): e2e webhookWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected 404 to be 200 // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:285:25
    at processTicksAndRejections (node:internal/process/tas
starter (🌍 Community Worlds): e2e addTenWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected {} to match object { …(5) }
    at Proxy.<anonymous> (file:///home/runner/work/workflow/workflow/node_modules/.pnpm/@vitest+expect@3.2.4/node_modules/@vitest/expect/dist/index
starter (🌍 Community Worlds): e2e addTenWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected {} to match object { …(5) }
    at Proxy.<anonymous> (file:///home/runner/work/workflow/workflow/node_modules/.pnpm/@vitest+expect@3.2.4/node_modules/@vitest/expect/dist/index
starter (🌍 Community Worlds): e2e retryAttemptCounterWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected {} to match object { …(3) }
    at Proxy.<anonymous> (file:///home/runner/work/workflow/workflow/node_modules/.pnpm/@vitest+expect@3.2.4/node_modules/@vitest/expect/dist/index
starter (🌍 Community Worlds): e2e crossFileErrorWorkflow - stack traces work across imported modules

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected undefined to be 'failed' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:647:30
    at processTicksAndRejections (node:internal/
starter (🌍 Community Worlds): e2e hookCleanupTestWorkflow - hook token reuse after workflow completion

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected undefined to be 'completed' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:725:31
    at processTicksAndRejections (node:intern
starter (🌍 Community Worlds): e2e stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected undefined to be 'completed' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:748:30
    at processTicksAndRejections (node:intern
starter (🌍 Community Worlds): e2e stepFunctionWithClosureWorkflow - step function with closure variables passed as argument

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected undefined to be 'completed' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:784:30
    at processTicksAndRejections (node:intern
starter (🌍 Community Worlds): e2e spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

AssertionError: expected undefined to be 'completed' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:835:36
    at processTicksAndRejections (node:intern
turso (🌍 Community Worlds): e2e addTenWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=addTenWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/pack
turso (🌍 Community Worlds): e2e addTenWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F98_duplicate_case.ts&workflowFn=addTenWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/wo
turso (🌍 Community Worlds): e2e should work with react rendering in step

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F8_react_render.tsx&workflowFn=reactWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workf
turso (🌍 Community Worlds): e2e promiseAllWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=promiseAllWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/
turso (🌍 Community Worlds): e2e promiseRaceWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=promiseRaceWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow
turso (🌍 Community Worlds): e2e promiseAnyWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=promiseAnyWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/
turso (🌍 Community Worlds): e2e readableStreamWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=readableStreamWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workf
turso (🌍 Community Worlds): e2e hookWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=hookWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/packag
turso (🌍 Community Worlds): e2e webhookWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=webhookWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/pac
turso (🌍 Community Worlds): e2e sleepingWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=sleepingWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/pa
turso (🌍 Community Worlds): e2e nullByteWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=nullByteWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/pa
turso (🌍 Community Worlds): e2e workflowAndStepMetadataWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=workflowAndStepMetadataWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workf
turso (🌍 Community Worlds): e2e outputStreamWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=outputStreamWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflo
turso (🌍 Community Worlds): e2e outputStreamInsideStepWorkflow - getWritable() called inside step functions

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=outputStreamInsideStepWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workfl
turso (🌍 Community Worlds): e2e fetchWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=fetchWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workflow/packa
turso (🌍 Community Worlds): e2e promiseRaceStressTestWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=promiseRaceStressTestWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflo
turso (🌍 Community Worlds): e2e retryAttemptCounterWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=retryAttemptCounterWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/
turso (🌍 Community Worlds): e2e retryableAndFatalErrorWorkflow

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=retryableAndFatalErrorWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workfl
turso (🌍 Community Worlds): e2e crossFileErrorWorkflow - stack traces work across imported modules

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=crossFileErrorWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/workf
turso (🌍 Community Worlds): e2e hookCleanupTestWorkflow - hook token reuse after workflow completion

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=hookCleanupTestWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/work
turso (🌍 Community Worlds): e2e stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=stepFunctionPassingWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/
turso (🌍 Community Worlds): e2e stepFunctionWithClosureWorkflow - step function with closure variables passed as argument

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=stepFunctionWithClosureWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workf
turso (🌍 Community Worlds): e2e closureVariableWorkflow - nested step functions with closure variables

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=closureVariableWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflow/work
turso (🌍 Community Worlds): e2e spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step

File: /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts

Error: Failed to trigger workflow: http://localhost:3000/api/trigger?workflowFile=workflows%2F99_e2e.ts&workflowFn=spawnWorkflowFromStepWorkflow 500: 
    at triggerWorkflow (/home/runner/work/workflo

Details by Category

⚠️ ▲ Vercel Production
App Passed Failed Skipped
⚠️ astro 25 0 1
⚠️ example 25 0 1
⚠️ express 25 0 1
⚠️ hono 25 0 1
⚠️ nextjs-turbopack 25 0 1
⚠️ nextjs-webpack 25 0 1
⚠️ nitro 25 0 1
⚠️ nuxt 25 0 1
⚠️ sveltekit 25 0 1
⚠️ vite 25 0 1
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 26 0 0
❌ 🌍 Community Worlds
App Passed Failed Skipped
✅ mongodb-dev 3 0 0
❌ mongodb 25 1 0
✅ redis-dev 3 0 0
❌ redis 25 1 0
✅ starter-dev 3 0 0
❌ starter 18 8 0
✅ turso-dev 3 0 0
❌ turso 2 24 0
⚠️ 📋 Other
App Passed Failed Skipped
⚠️ e2e-vercel-prod-fastify 25 0 1

@github-actions
Copy link
Contributor

github-actions bot commented Dec 4, 2025

📊 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 🥇 Next.js (Turbopack) 0.036s (+8.4% 🔺) 1.016s (~) 0.979s 10 1.00x
🌐 Starter Next.js (Turbopack) 0.037s (-10.9% 🟢) 1.014s (~) 0.977s 10 1.02x
🌐 Redis Next.js (Turbopack) 0.041s (-3.5%) 1.017s (~) 0.976s 10 1.13x
💻 Local Express 0.044s (-2.9%) 1.007s (~) 0.963s 10 1.21x
💻 Local Nitro 0.056s (+31.2% 🔺) 1.016s (+1.0%) 0.961s 10 1.53x
🌐 MongoDB Next.js (Turbopack) 0.076s (+20.9% 🔺) 1.016s (~) 0.940s 10 2.10x
🐘 Postgres Nitro 0.299s (-36.5% 🟢) 1.013s (~) 0.714s 10 8.24x
🐘 Postgres Next.js (Turbopack) 0.375s (+138.5% 🔺) 1.041s (+2.1%) 0.666s 10 10.33x
🐘 Postgres Express 0.420s (+9.4% 🔺) 1.013s (~) 0.594s 10 11.56x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.542s (+1.6%) 1.690s (+16.3% 🔺) 1.148s 10 1.00x
▲ Vercel Next.js (Turbopack) 0.619s (+10.1% 🔺) 1.554s (+5.1% 🔺) 0.935s 10 1.14x
▲ Vercel Nitro 0.629s (+0.7%) 1.555s (-1.9%) 0.927s 10 1.16x

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.086s (+13.9% 🔺) 1.012s (~) 0.926s 10 1.00x
🌐 Starter Next.js (Turbopack) 0.092s (+13.2% 🔺) 1.009s (~) 0.918s 10 1.07x
🌐 Redis Next.js (Turbopack) 0.098s (-3.2%) 1.011s (~) 0.913s 10 1.14x
💻 Local Nitro 0.111s (+1.0%) 1.005s (~) 0.895s 10 1.29x
💻 Local Express 0.112s (-3.9%) 1.006s (~) 0.894s 10 1.30x
🌐 MongoDB Next.js (Turbopack) 0.272s (-12.8% 🟢) 1.012s (~) 0.740s 10 3.16x
🐘 Postgres Next.js (Turbopack) 0.775s (-5.4% 🟢) 1.214s (+19.8% 🔺) 0.439s 10 9.01x
🐘 Postgres Nitro 1.160s (-14.7% 🟢) 2.012s (~) 0.852s 10 13.49x
🐘 Postgres Express 1.287s (+4.1%) 2.013s (~) 0.725s 10 14.97x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.635s (-5.7% 🟢) 2.487s (-6.5% 🟢) 0.852s 10 1.00x
▲ Vercel Nitro 1.663s (+10.0% 🔺) 2.479s (-3.3%) 0.816s 10 1.02x
▲ Vercel Express 1.714s (+9.5% 🔺) 2.627s (+7.1% 🔺) 0.913s 10 1.05x

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.509s (+3.5%) 1.013s (~) 0.504s 5 1.00x
🌐 Starter Next.js (Turbopack) 0.580s (-0.6%) 1.008s (~) 0.429s 5 1.14x
🌐 Redis Next.js (Turbopack) 0.632s (-2.4%) 1.010s (~) 0.378s 5 1.24x
💻 Local Nitro 0.772s (+0.5%) 1.005s (~) 0.233s 5 1.52x
💻 Local Express 0.780s (-1.5%) 1.007s (~) 0.227s 5 1.53x
🌐 MongoDB Next.js (Turbopack) 2.171s (+0.5%) 3.016s (~) 0.845s 5 4.27x
🐘 Postgres Next.js (Turbopack) 4.904s (+2.4%) 5.620s (+12.0% 🔺) 0.717s 5 9.64x
🐘 Postgres Express 10.176s (+0.6%) 11.028s (~) 0.853s 5 20.01x
🐘 Postgres Nitro 10.347s (+0.7%) 11.023s (~) 0.676s 5 20.34x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 11.511s (+7.2% 🔺) 12.262s (+4.7%) 0.751s 5 1.00x
▲ Vercel Next.js (Turbopack) 12.426s (+14.7% 🔺) 13.096s (+13.7% 🔺) 0.670s 5 1.08x
▲ Vercel Nitro 12.766s (+17.3% 🔺) 13.507s (+15.9% 🔺) 0.741s 5 1.11x

workflow with 10 parallel steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Starter 🥇 Next.js (Turbopack) 0.362s (+3.7%) 1.008s (~) 0.646s 5 1.00x
💻 Local Express 0.389s (-4.4%) 1.006s (~) 0.617s 5 1.07x
💻 Local Nitro 0.389s (-8.6% 🟢) 1.005s (~) 0.616s 5 1.07x
🌐 Redis Next.js (Turbopack) 0.392s (+5.9% 🔺) 1.010s (~) 0.618s 5 1.08x
💻 Local Next.js (Turbopack) 0.419s (+19.7% 🔺) 1.010s (~) 0.591s 5 1.16x
🐘 Postgres Next.js (Turbopack) 0.913s (+24.8% 🔺) 1.013s (~) 0.100s 5 2.52x
🐘 Postgres Express 1.396s (-19.0% 🟢) 2.014s (~) 0.618s 5 3.85x
🌐 MongoDB Next.js (Turbopack) 1.639s (-3.2%) 2.013s (~) 0.373s 5 4.53x
🐘 Postgres Nitro 1.690s (+21.3% 🔺) 2.013s (~) 0.323s 5 4.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.044s (+7.0% 🔺) 3.925s (+3.1%) 0.881s 5 1.00x
▲ Vercel Express 3.137s (-1.9%) 3.802s (-3.1%) 0.665s 5 1.03x
▲ Vercel Nitro 3.370s (+13.0% 🔺) 4.084s (+5.0%) 0.715s 5 1.11x

Stream Benchmarks

Stream benchmarks include Time to First Byte (TTFB) metrics.

workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.117s (+9.3% 🔺) 1.003s (~) 1.015s (~) 0.898s 10 1.00x
🌐 Starter Next.js (Turbopack) 0.132s (-0.5%) 1.003s (~) 1.009s (~) 0.877s 10 1.13x
🌐 Redis Next.js (Turbopack) 0.146s (-3.2%) 1.003s (~) 1.010s (~) 0.864s 10 1.25x
💻 Local Express 0.176s (-2.8%) 0.992s (~) 1.009s (~) 0.833s 10 1.51x
💻 Local Nitro 0.178s (~) 0.992s (~) 1.008s (~) 0.831s 10 1.52x
🌐 MongoDB Next.js (Turbopack) 0.474s (-8.5% 🟢) 0.974s (+4.3%) 1.013s (~) 0.539s 10 4.06x
🐘 Postgres Next.js (Turbopack) 0.841s (-37.2% 🟢) 0.817s (-58.0% 🟢) 1.013s (-49.7% 🟢) 0.173s 10 7.20x
🐘 Postgres Nitro 2.333s (+97.5% 🔺) 2.712s (+39.2% 🔺) 3.015s (+49.9% 🔺) 0.682s 10 19.97x
🐘 Postgres Express 2.441s (+54.4% 🔺) 2.599s (+46.5% 🔺) 3.014s (+42.7% 🔺) 0.572s 10 20.90x

▲ Production (Vercel)

World Framework Workflow Time TTFB Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.582s (~) 2.857s (-7.2% 🟢) 3.301s (-5.9% 🟢) 0.719s 10 1.00x
▲ Vercel Express 2.661s (-0.5%) 3.177s (+1.4%) 3.603s (+1.3%) 0.942s 10 1.03x
▲ Vercel Next.js (Turbopack) 2.824s (+8.7% 🔺) 3.186s (+5.2% 🔺) 3.657s (+5.0%) 0.833s 10 1.09x

Summary: Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 4/5
🐘 Postgres Next.js (Turbopack) 4/5
▲ Vercel Express 2/5

Summary: Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 💻 Local 5/5
Next.js (Turbopack) 💻 Local 4/5
Nitro 💻 Local 5/5
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)
  • 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
  • 🌐 Starter: Community world (local development)
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

adriandlam and others added 2 commits December 4, 2025 14:14
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
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.

2 participants