Skip to content

Conversation

@pranaygp
Copy link
Collaborator

@pranaygp pranaygp commented Dec 5, 2025

Add a link to the Workflow DevKit Compiler Playground in the documentation footer to improve accessibility.


Slack Thread

Open in Cursor Open in Web

Co-authored-by: pranay.prakash <pranay.prakash@vercel.com>
@cursor
Copy link

cursor bot commented Dec 5, 2025

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@changeset-bot
Copy link

changeset-bot bot commented Dec 5, 2025

⚠️ No Changeset found

Latest commit: 23252b3

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 5, 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 5, 2025 9:01pm
example-nextjs-workflow-webpack Ready Ready Preview Comment Dec 5, 2025 9:01pm
example-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-astro-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-express-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-fastify-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-hono-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-nitro-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-nuxt-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-sveltekit-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workbench-vite-workflow Ready Ready Preview Comment Dec 5, 2025 9:01pm
workflow-docs Ready Ready Preview Comment Dec 5, 2025 9:01pm

@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 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 '' to be 'Hello from webhook!' // Object.is equality
    at /home/runner/work/workflow/workflow/packages/core/e2e/e2e.test.ts:287:19
    at processTicksAndRejections (node:int
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 5, 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
🌐 Starter 🥇 Next.js (Turbopack) 0.038s (-1.3%) 1.014s (~) 0.976s 10 1.00x
💻 Local Next.js (Turbopack) 0.042s (-1.0%) 1.019s (~) 0.977s 10 1.10x
🌐 Redis Next.js (Turbopack) 0.042s (-4.1%) 1.017s (~) 0.975s 10 1.11x
💻 Local Express 0.044s (-1.6%) 1.007s (~) 0.964s 10 1.15x
💻 Local Nitro 0.046s (-2.7%) 1.007s (~) 0.961s 10 1.22x
🌐 MongoDB Next.js (Turbopack) 0.131s (+142.9% 🔺) 1.014s (~) 0.883s 10 3.48x
🐘 Postgres Next.js (Turbopack) 0.228s (+103.9% 🔺) 1.019s (~) 0.790s 10 6.04x
🐘 Postgres Nitro 0.289s (+12.6% 🔺) 1.035s (+2.2%) 0.746s 10 7.65x
🐘 Postgres Express 0.405s (+8.5% 🔺) 1.013s (~) 0.608s 10 10.71x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 0.540s (-25.3% 🟢) 1.454s (-8.3% 🟢) 0.913s 10 1.00x
▲ Vercel Nitro 0.546s (+1.9%) 1.549s (+11.0% 🔺) 1.002s 10 1.01x
▲ Vercel Express 0.555s (-14.7% 🟢) 1.590s (-4.5%) 1.035s 10 1.03x

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Starter 🥇 Next.js (Turbopack) 0.091s (-2.9%) 1.010s (~) 0.919s 10 1.00x
💻 Local Next.js (Turbopack) 0.097s (-2.8%) 1.011s (~) 0.914s 10 1.07x
🌐 Redis Next.js (Turbopack) 0.103s (-4.7%) 1.011s (~) 0.909s 10 1.13x
💻 Local Express 0.111s (-0.5%) 1.006s (~) 0.895s 10 1.22x
💻 Local Nitro 0.117s (+6.9% 🔺) 1.006s (~) 0.889s 10 1.29x
🌐 MongoDB Next.js (Turbopack) 0.324s (+6.6% 🔺) 1.012s (~) 0.687s 10 3.56x
🐘 Postgres Next.js (Turbopack) 0.891s (+19.1% 🔺) 1.113s (~) 0.222s 10 9.79x
🐘 Postgres Express 1.265s (+1.6%) 2.012s (~) 0.747s 10 13.91x
🐘 Postgres Nitro 1.477s (+32.7% 🔺) 2.011s (~) 0.534s 10 16.23x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.498s (+2.9%) 2.447s (+1.0%) 0.949s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.500s (-10.1% 🟢) 2.482s (-3.2%) 0.982s 10 1.00x
▲ Vercel Express 1.603s (+4.6%) 2.584s (+5.6% 🔺) 0.981s 10 1.07x

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Starter 🥇 Next.js (Turbopack) 0.550s (-2.5%) 1.008s (~) 0.458s 5 1.00x
💻 Local Next.js (Turbopack) 0.648s (+3.1%) 1.010s (~) 0.363s 5 1.18x
🌐 Redis Next.js (Turbopack) 0.651s (-2.0%) 1.011s (~) 0.359s 5 1.18x
💻 Local Express 0.784s (+1.4%) 1.008s (~) 0.224s 5 1.43x
💻 Local Nitro 0.809s (+3.2%) 1.007s (~) 0.198s 5 1.47x
🌐 MongoDB Next.js (Turbopack) 2.144s (-0.6%) 3.013s (~) 0.868s 5 3.90x
🐘 Postgres Next.js (Turbopack) 5.227s (+6.8% 🔺) 6.019s (+20.0% 🔺) 0.792s 5 9.50x
🐘 Postgres Express 10.141s (~) 11.025s (~) 0.885s 5 18.44x
🐘 Postgres Nitro 10.383s (-1.1%) 11.021s (~) 0.638s 5 18.88x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 10.649s (-1.2%) 11.269s (-0.8%) 0.620s 5 1.00x
▲ Vercel Express 10.770s (-0.9%) 11.766s (+1.1%) 0.996s 5 1.01x
▲ Vercel Nitro 10.850s (~) 11.442s (-2.3%) 0.592s 5 1.02x

workflow with 10 parallel steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Starter 🥇 Next.js (Turbopack) 0.349s (-4.1%) 1.009s (~) 0.660s 5 1.00x
🌐 Redis Next.js (Turbopack) 0.376s (-8.8% 🟢) 1.010s (~) 0.634s 5 1.08x
💻 Local Next.js (Turbopack) 0.395s (~) 1.011s (~) 0.616s 5 1.13x
💻 Local Express 0.395s (-4.8%) 1.005s (~) 0.610s 5 1.13x
💻 Local Nitro 0.444s (+3.8%) 1.006s (~) 0.562s 5 1.27x
🐘 Postgres Next.js (Turbopack) 0.667s (-4.6%) 1.014s (~) 0.347s 5 1.91x
🐘 Postgres Nitro 1.515s (-7.0% 🟢) 2.009s (~) 0.494s 5 4.34x
🌐 MongoDB Next.js (Turbopack) 1.592s (-2.4%) 2.010s (~) 0.418s 5 4.56x
🐘 Postgres Express 1.630s (-1.1%) 2.020s (~) 0.390s 5 4.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.717s (-1.1%) 3.497s (+1.1%) 0.779s 5 1.00x
▲ Vercel Express 2.867s (+8.1% 🔺) 3.627s (-1.9%) 0.759s 5 1.06x
▲ Vercel Next.js (Turbopack) 2.903s (+3.7%) 3.701s (+4.8%) 0.798s 5 1.07x

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
🌐 Starter 🥇 Next.js (Turbopack) 0.129s (-14.0% 🟢) 1.003s (~) 1.009s (~) 0.880s 10 1.00x
💻 Local Next.js (Turbopack) 0.144s (-2.2%) 1.003s (~) 1.014s (~) 0.870s 10 1.12x
🌐 Redis Next.js (Turbopack) 0.150s (-1.9%) 1.003s (~) 1.011s (~) 0.861s 10 1.17x
💻 Local Express 0.180s (+1.2%) 0.992s (~) 1.009s (~) 0.828s 10 1.40x
💻 Local Nitro 0.190s (+4.2%) 0.992s (~) 1.009s (~) 0.819s 10 1.48x
🌐 MongoDB Next.js (Turbopack) 0.482s (-4.9%) 0.962s (+2.5%) 1.010s (~) 0.527s 10 3.75x
🐘 Postgres Next.js (Turbopack) 0.640s (+6.6% 🔺) 0.970s (+3.1%) 1.013s (~) 0.373s 10 4.98x
🐘 Postgres Nitro 1.290s (-43.7% 🟢) 1.843s (-32.9% 🟢) 2.011s (-33.3% 🟢) 0.721s 10 10.04x
🐘 Postgres Express 1.367s (-2.1%) 1.672s (+1.8%) 2.011s (~) 0.644s 10 10.64x

▲ Production (Vercel)

World Framework Workflow Time TTFB Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.552s (+1.9%) 3.211s (+5.1% 🔺) 3.889s (+12.8% 🔺) 1.338s 10 1.00x
▲ Vercel Next.js (Turbopack) 2.552s (-2.6%) 3.108s (+1.6%) 3.519s (+1.2%) 0.967s 10 1.00x
▲ Vercel Nitro 2.672s (+6.2% 🔺) 3.090s (+5.4% 🔺) 3.517s (+2.9%) 0.846s 10 1.05x

Summary: Fastest Framework by World

Winner determined by most benchmark wins

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

Summary: Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 💻 Local 5/5
Next.js (Turbopack) 🌐 Starter 5/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)

@pranaygp
Copy link
Collaborator Author

pranaygp commented Dec 5, 2025

@cursor this is not in the footer. Make a new footer for the docs site - you can copy a similar structure like ai-sdk.dev (check the AI sdk github which also uses gestidocs) and then in the new footer, include this playground as a tool

@cursor
Copy link

cursor bot commented Dec 5, 2025

I've created a proper site-wide footer for the docs. Here's what I did:

  • Created /workspace/docs/components/geistdocs/footer.tsx - A new Footer component with three sections:

  • Updated /workspace/docs/app/layout.tsx - Added the Footer component to the main layout so it appears at the bottom of every page

  • Reverted the previous sidebar changes (removed PlaygroundLink from the TableOfContents)

The footer features a clean, modern design with a three-column grid layout, proper external link handling (opens in new tab with security attributes), and a copyright section at the bottom.


Open in Cursor Open in Web

Learn more about Cursor Agents

Co-authored-by: pranay.prakash <pranay.prakash@vercel.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.

4 participants