Skip to content

Add stable Next.js eager and lazy test coverage#1747

Merged
ijjk merged 21 commits into
mainfrom
ijjk/eager-testing
May 4, 2026
Merged

Add stable Next.js eager and lazy test coverage#1747
ijjk merged 21 commits into
mainfrom
ijjk/eager-testing

Conversation

@ijjk
Copy link
Copy Markdown
Member

@ijjk ijjk commented Apr 15, 2026

Summary

  • run stable nextjs-turbopack and nextjs-webpack in both lazyDiscovery enabled and disabled modes
  • keep @workflow/next and the e2e helpers aligned with env-driven eager/deferred detection
  • update result parsing for the new artifact names

Alternative to #1713

Testing

  • pnpm vitest run packages/next/src/index.test.ts packages/next/src/builder.test.ts
  • APP_NAME=nextjs-turbopack WORKFLOW_NEXT_LAZY_DISCOVERY=0 pnpm vitest run packages/core/e2e/local-build.test.ts
  • APP_NAME=nextjs-turbopack WORKFLOW_NEXT_LAZY_DISCOVERY=1 pnpm vitest run packages/core/e2e/local-build.test.ts
  • APP_NAME=nextjs-webpack WORKFLOW_NEXT_LAZY_DISCOVERY=0 pnpm vitest run packages/core/e2e/local-build.test.ts
  • APP_NAME=nextjs-webpack WORKFLOW_NEXT_LAZY_DISCOVERY=1 pnpm vitest run packages/core/e2e/local-build.test.ts

@ijjk ijjk requested a review from a team as a code owner April 15, 2026 19:04
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 15, 2026

🦋 Changeset detected

Latest commit: 8bd52fa

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 18 packages
Name Type
@workflow/builders Patch
@workflow/core Patch
@workflow/next Patch
@workflow/astro Patch
@workflow/cli Patch
@workflow/nest Patch
@workflow/nitro Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/vitest Patch
tarballs Patch
@workflow/web-shared Patch
@workflow/web Patch
workflow Patch
@workflow/world-testing Patch
@workflow/nuxt Patch
@workflow/ai Patch

Not sure what this means? Click here to learn what changesets are.

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

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 15, 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 May 4, 2026 8:51pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment May 4, 2026 8:51pm
example-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-astro-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-express-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-fastify-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-hono-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-nitro-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-nuxt-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-sveltekit-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-tanstack-start-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workbench-vite-workflow Ready Ready Preview, Comment May 4, 2026 8:51pm
workflow-docs Ready Ready Preview, Comment, Open in v0 May 4, 2026 8:51pm
workflow-swc-playground Ready Ready Preview, Comment May 4, 2026 8:51pm
workflow-tarballs Ready Ready Preview, Comment May 4, 2026 8:51pm
workflow-web Ready Ready Preview, Comment May 4, 2026 8:51pm

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 15, 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 🥇 Nitro 0.031s (-28.8% 🟢) 1.005s (~) 0.974s 10 1.00x
💻 Local Express 0.033s (-26.6% 🟢) 1.005s (~) 0.973s 10 1.06x
💻 Local Next.js (Turbopack) 0.043s 1.005s 0.962s 10 1.40x
🐘 Postgres Express 0.049s (-15.5% 🟢) 1.011s (~) 0.962s 10 1.60x
🌐 Redis Next.js (Turbopack) 0.054s 1.005s 0.951s 10 1.76x
🐘 Postgres Next.js (Turbopack) 0.059s 1.010s 0.951s 10 1.93x
🌐 MongoDB Next.js (Turbopack) 0.079s 1.007s 0.929s 10 2.57x
🐘 Postgres Nitro 0.123s (+28.9% 🔺) 1.064s (+2.0%) 0.941s 10 4.00x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 0.233s (-43.2% 🟢) 2.298s (-8.4% 🟢) 2.066s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.044s (+315.1% 🔺) 3.052s (+30.8% 🔺) 2.008s 10 4.49x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.071s (-5.4% 🟢) 2.005s (~) 0.935s 10 1.00x
💻 Local Express 1.071s (-4.8%) 2.006s (~) 0.935s 10 1.00x
🐘 Postgres Express 1.084s (-5.4% 🟢) 2.009s (~) 0.925s 10 1.01x
💻 Local Next.js (Turbopack) 1.090s 2.005s 0.916s 10 1.02x
🌐 Redis Next.js (Turbopack) 1.118s 2.008s 0.890s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.124s 2.009s 0.885s 10 1.05x
🌐 MongoDB Next.js (Turbopack) 1.165s 2.008s 0.843s 10 1.09x
🐘 Postgres Nitro 1.210s (+6.2% 🔺) 2.033s (+1.2%) 0.823s 10 1.13x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.558s (-60.0% 🟢) 3.536s (-40.2% 🟢) 1.977s 10 1.00x
▲ Vercel Next.js (Turbopack) 2.730s (+34.1% 🔺) 4.524s (+18.1% 🔺) 1.794s 10 1.75x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.403s (-5.0%) 11.020s (~) 0.617s 3 1.00x
🐘 Postgres Express 10.413s (-5.0% 🟢) 11.011s (~) 0.598s 3 1.00x
💻 Local Express 10.452s (-4.3%) 11.021s (~) 0.568s 3 1.00x
💻 Local Next.js (Turbopack) 10.541s 11.024s 0.482s 3 1.01x
🐘 Postgres Next.js (Turbopack) 10.669s 11.016s 0.347s 3 1.03x
🌐 Redis Next.js (Turbopack) 10.672s 11.023s 0.351s 3 1.03x
🌐 MongoDB Next.js (Turbopack) 10.777s 11.018s 0.242s 3 1.04x
🐘 Postgres Nitro 11.057s (+1.7%) 11.375s (+3.2%) 0.318s 3 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 13.174s (-44.5% 🟢) 15.050s (-40.1% 🟢) 1.876s 3 1.00x
▲ Vercel Next.js (Turbopack) 14.337s (-17.2% 🟢) 16.638s (-14.2% 🟢) 2.301s 2 1.09x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.449s (-10.7% 🟢) 14.026s (-12.5% 🟢) 0.577s 5 1.00x
🐘 Postgres Express 13.460s (-7.7% 🟢) 14.020s (-6.7% 🟢) 0.560s 5 1.00x
💻 Local Express 13.525s (-9.7% 🟢) 14.027s (-6.7% 🟢) 0.502s 5 1.01x
💻 Local Next.js (Turbopack) 13.741s 14.025s 0.284s 5 1.02x
🌐 Redis Next.js (Turbopack) 14.143s 15.029s 0.886s 4 1.05x
🐘 Postgres Next.js (Turbopack) 14.152s 15.019s 0.866s 4 1.05x
🌐 MongoDB Next.js (Turbopack) 14.183s 15.022s 0.839s 4 1.05x
🐘 Postgres Nitro 14.781s (+1.3%) 15.521s (+3.3%) 0.739s 4 1.10x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 21.479s (-66.7% 🟢) 23.387s (-64.9% 🟢) 1.908s 3 1.00x
▲ Vercel Next.js (Turbopack) 22.853s (-56.5% 🟢) 25.276s (-53.7% 🟢) 2.423s 3 1.06x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 11.901s (-29.1% 🟢) 12.147s (-28.7% 🟢) 0.246s 8 1.00x
💻 Local Express 11.908s (-28.3% 🟢) 12.146s (-28.7% 🟢) 0.238s 8 1.00x
🐘 Postgres Express 11.923s (-14.9% 🟢) 12.264s (-16.0% 🟢) 0.341s 8 1.00x
💻 Local Next.js (Turbopack) 12.371s 13.024s 0.653s 7 1.04x
🌐 Redis Next.js (Turbopack) 13.024s 13.598s 0.574s 7 1.09x
🌐 MongoDB Next.js (Turbopack) 13.264s 14.021s 0.757s 7 1.11x
🐘 Postgres Next.js (Turbopack) 13.294s 14.020s 0.726s 7 1.12x
🐘 Postgres Nitro 14.003s (~) 14.453s (+1.0%) 0.450s 7 1.18x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 32.125s (-92.4% 🟢) 34.473s (-91.9% 🟢) 2.347s 3 1.00x
▲ Vercel Next.js (Turbopack) 34.933s (-91.1% 🟢) 37.194s (-90.6% 🟢) 2.261s 3 1.09x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.151s (-8.7% 🟢) 2.007s (~) 0.856s 15 1.00x
💻 Local Nitro 1.157s (-29.1% 🟢) 2.005s (-3.3%) 0.849s 15 1.01x
💻 Local Express 1.180s (-20.8% 🟢) 2.006s (~) 0.826s 15 1.03x
🐘 Postgres Next.js (Turbopack) 1.212s 2.007s 0.795s 15 1.05x
💻 Local Next.js (Turbopack) 1.229s 2.005s 0.777s 15 1.07x
🌐 Redis Next.js (Turbopack) 1.257s 2.006s 0.750s 15 1.09x
🐘 Postgres Nitro 1.438s (+12.8% 🔺) 2.175s (+8.3% 🔺) 0.738s 14 1.25x
🌐 MongoDB Next.js (Turbopack) 2.022s 2.735s 0.712s 11 1.76x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.455s (-12.9% 🟢) 3.919s (-9.3% 🟢) 1.464s 8 1.00x
▲ Vercel Next.js (Turbopack) 3.997s (+17.6% 🔺) 6.161s (+24.9% 🔺) 2.164s 5 1.63x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.233s (-47.8% 🟢) 2.007s (-33.3% 🟢) 0.774s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.359s 2.008s 0.649s 15 1.10x
🐘 Postgres Nitro 1.519s (-35.4% 🟢) 2.169s (-27.9% 🟢) 0.650s 14 1.23x
💻 Local Nitro 1.607s (-48.9% 🟢) 2.005s (-48.4% 🟢) 0.398s 15 1.30x
💻 Local Express 1.738s (-41.2% 🟢) 2.005s (-41.9% 🟢) 0.267s 15 1.41x
💻 Local Next.js (Turbopack) 1.741s 2.005s 0.264s 15 1.41x
🌐 Redis Next.js (Turbopack) 2.360s 3.008s 0.648s 10 1.91x
🌐 MongoDB Next.js (Turbopack) 3.559s 4.009s 0.450s 8 2.89x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.181s (-21.5% 🟢) 4.935s (-16.7% 🟢) 1.753s 7 1.00x
▲ Vercel Next.js (Turbopack) 4.971s (-30.0% 🟢) 6.782s (-23.8% 🟢) 1.811s 5 1.56x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.357s (-61.1% 🟢) 2.007s (-50.0% 🟢) 0.649s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.639s 2.007s 0.369s 15 1.21x
🐘 Postgres Nitro 2.765s (-20.5% 🟢) 3.708s (-7.5% 🟢) 0.944s 9 2.04x
🌐 Redis Next.js (Turbopack) 3.599s 4.010s 0.411s 8 2.65x
💻 Local Nitro 4.165s (-50.1% 🟢) 4.440s (-50.8% 🟢) 0.275s 7 3.07x
💻 Local Next.js (Turbopack) 4.462s 5.012s 0.549s 6 3.29x
💻 Local Express 5.166s (-38.0% 🟢) 5.514s (-38.9% 🟢) 0.348s 6 3.81x
🌐 MongoDB Next.js (Turbopack) 6.270s 7.012s 0.742s 5 4.62x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.897s (+38.9% 🔺) 6.501s (+17.5% 🔺) 1.604s 5 1.00x
▲ Vercel Next.js (Turbopack) 8.108s (-9.1% 🟢) 10.301s (-6.0% 🟢) 2.193s 3 1.66x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.154s (-8.2% 🟢) 2.009s (~) 0.855s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.212s 2.007s 0.796s 15 1.05x
🌐 Redis Next.js (Turbopack) 1.226s 2.006s 0.780s 15 1.06x
💻 Local Next.js (Turbopack) 1.297s 2.006s 0.709s 15 1.12x
💻 Local Nitro 1.338s (-28.3% 🟢) 2.006s (-14.3% 🟢) 0.667s 15 1.16x
💻 Local Express 1.419s (-25.1% 🟢) 2.006s (-15.1% 🟢) 0.587s 15 1.23x
🐘 Postgres Nitro 1.482s (+17.9% 🔺) 2.119s (+5.5% 🔺) 0.637s 15 1.28x
🌐 MongoDB Next.js (Turbopack) 2.032s 2.735s 0.703s 11 1.76x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.605s (+5.9% 🔺) 4.336s (+4.0%) 1.732s 7 1.00x
▲ Vercel Next.js (Turbopack) 4.493s (+53.3% 🔺) 6.104s (+31.5% 🔺) 1.611s 5 1.73x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.246s (-46.8% 🟢) 2.011s (-33.2% 🟢) 0.765s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.362s 2.008s 0.647s 15 1.09x
🐘 Postgres Nitro 1.602s (-31.5% 🟢) 2.257s (-25.0% 🟢) 0.655s 14 1.29x
💻 Local Nitro 1.603s (-47.7% 🟢) 2.005s (-48.4% 🟢) 0.402s 15 1.29x
💻 Local Next.js (Turbopack) 1.998s 2.507s 0.509s 12 1.60x
💻 Local Express 2.135s (-31.8% 🟢) 2.593s (-31.1% 🟢) 0.458s 12 1.71x
🌐 Redis Next.js (Turbopack) 2.344s 3.008s 0.664s 10 1.88x
🌐 MongoDB Next.js (Turbopack) 3.558s 4.009s 0.451s 8 2.85x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.175s (-1.8%) 5.025s (-1.0%) 1.850s 6 1.00x
▲ Vercel Next.js (Turbopack) 4.973s (+58.3% 🔺) 7.171s (+58.6% 🔺) 2.198s 5 1.57x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.389s (-60.3% 🟢) 2.008s (-49.9% 🟢) 0.619s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.629s 2.008s 0.378s 15 1.17x
🐘 Postgres Nitro 2.367s (-32.0% 🟢) 3.260s (-18.7% 🟢) 0.893s 10 1.70x
🌐 Redis Next.js (Turbopack) 3.594s 4.010s 0.416s 8 2.59x
💻 Local Next.js (Turbopack) 4.698s 5.178s 0.480s 6 3.38x
💻 Local Nitro 4.856s (-46.9% 🟢) 5.349s (-46.6% 🟢) 0.494s 6 3.50x
🌐 MongoDB Next.js (Turbopack) 6.293s 7.011s 0.718s 5 4.53x
💻 Local Express 6.573s (-25.3% 🟢) 7.017s (-24.3% 🟢) 0.444s 5 4.73x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.071s (~) 7.082s (+3.9%) 2.011s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.977s (-11.5% 🟢) 8.166s (-4.4%) 2.189s 4 1.18x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: 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 🥇 Express 0.445s (-46.9% 🟢) 1.006s (-1.7%) 0.561s 60 1.00x
💻 Local Nitro 0.474s (-51.7% 🟢) 1.004s (-8.2% 🟢) 0.530s 60 1.06x
💻 Local Express 0.486s (-50.6% 🟢) 1.004s (-6.7% 🟢) 0.518s 60 1.09x
💻 Local Next.js (Turbopack) 0.566s 1.004s 0.438s 60 1.27x
🌐 Redis Next.js (Turbopack) 0.640s 1.004s 0.364s 60 1.44x
🐘 Postgres Next.js (Turbopack) 0.685s 1.006s 0.321s 60 1.54x
🌐 MongoDB Next.js (Turbopack) 0.716s 1.005s 0.289s 60 1.61x
🐘 Postgres Nitro 0.747s (-9.0% 🟢) 1.189s (+18.2% 🔺) 0.442s 51 1.68x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.334s (-75.8% 🟢) 7.187s (-70.1% 🟢) 1.852s 9 1.00x
▲ Vercel Next.js (Turbopack) 7.350s (-49.3% 🟢) 9.234s (-42.6% 🟢) 1.884s 7 1.38x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.058s (-46.5% 🟢) 1.613s (-28.5% 🟢) 0.555s 56 1.00x
💻 Local Nitro 1.156s (-61.9% 🟢) 2.005s (-46.7% 🟢) 0.849s 45 1.09x
💻 Local Express 1.204s (-60.1% 🟢) 2.006s (-44.1% 🟢) 0.802s 45 1.14x
💻 Local Next.js (Turbopack) 1.389s 2.005s 0.615s 45 1.31x
🌐 Redis Next.js (Turbopack) 1.524s 2.006s 0.482s 45 1.44x
🐘 Postgres Next.js (Turbopack) 1.593s 2.007s 0.414s 45 1.50x
🐘 Postgres Nitro 1.608s (-16.6% 🟢) 2.055s (-2.2%) 0.447s 44 1.52x
🌐 MongoDB Next.js (Turbopack) 1.817s 2.007s 0.189s 45 1.72x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 12.994s (-67.1% 🟢) 15.144s (-63.3% 🟢) 2.150s 6 1.00x
▲ Vercel Next.js (Turbopack) 16.852s (-66.2% 🟢) 19.185s (-62.9% 🟢) 2.333s 5 1.30x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.996s (-50.0% 🟢) 2.407s (-44.9% 🟢) 0.412s 50 1.00x
💻 Local Nitro 2.563s (-72.4% 🟢) 3.007s (-70.0% 🟢) 0.444s 40 1.28x
💻 Local Express 2.737s (-70.3% 🟢) 3.008s (-70.0% 🟢) 0.271s 40 1.37x
🌐 Redis Next.js (Turbopack) 3.011s 3.522s 0.511s 35 1.51x
💻 Local Next.js (Turbopack) 3.080s 3.789s 0.709s 32 1.54x
🐘 Postgres Next.js (Turbopack) 3.171s 4.010s 0.839s 30 1.59x
🐘 Postgres Nitro 3.411s (-16.9% 🟢) 3.951s (-14.2% 🟢) 0.540s 31 1.71x
🌐 MongoDB Next.js (Turbopack) 4.140s 5.012s 0.871s 24 2.07x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 40.012s (-58.7% 🟢) 42.083s (-57.2% 🟢) 2.071s 3 1.00x
▲ Vercel Next.js (Turbopack) 50.105s (-53.2% 🟢) 52.801s (-51.5% 🟢) 2.696s 3 1.25x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.187s (-33.9% 🟢) 1.005s (~) 0.818s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.239s 1.006s 0.766s 60 1.28x
🌐 Redis Next.js (Turbopack) 0.247s 1.004s 0.757s 60 1.32x
🐘 Postgres Nitro 0.395s (+39.4% 🔺) 1.087s (+7.9% 🔺) 0.692s 56 2.11x
💻 Local Nitro 0.412s (-31.9% 🟢) 1.004s (-1.7%) 0.592s 60 2.20x
💻 Local Express 0.431s (-23.1% 🟢) 1.004s (~) 0.573s 60 2.31x
💻 Local Next.js (Turbopack) 0.509s 1.004s 0.495s 60 2.73x
🌐 MongoDB Next.js (Turbopack) 1.027s 1.771s 0.744s 34 5.50x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.061s (+24.1% 🔺) 3.706s (+10.6% 🔺) 1.645s 17 1.00x
▲ Vercel Next.js (Turbopack) 3.722s (+84.0% 🔺) 5.626s (+48.3% 🔺) 1.904s 11 1.81x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.314s (-38.4% 🟢) 1.006s (~) 0.692s 90 1.00x
🌐 Redis Next.js (Turbopack) 0.420s 1.004s 0.584s 90 1.34x
🐘 Postgres Next.js (Turbopack) 0.457s 1.006s 0.549s 90 1.45x
🐘 Postgres Nitro 1.183s (+138.3% 🔺) 1.756s (+74.4% 🔺) 0.573s 52 3.76x
💻 Local Nitro 2.128s (-16.1% 🟢) 2.655s (-11.8% 🟢) 0.527s 34 6.77x
💻 Local Express 2.210s (-12.0% 🟢) 2.975s (-1.1%) 0.765s 31 7.04x
💻 Local Next.js (Turbopack) 2.229s 2.977s 0.748s 31 7.09x
🌐 MongoDB Next.js (Turbopack) 2.603s 3.006s 0.404s 30 8.28x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 7.234s (+104.6% 🔺) 9.202s (+77.2% 🔺) 1.967s 10 1.00x
▲ Vercel Nitro 8.560s (+165.4% 🔺) 10.400s (+115.7% 🔺) 1.840s 9 1.18x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.642s (-21.6% 🟢) 1.006s (-1.1%) 0.364s 120 1.00x
🌐 Redis Next.js (Turbopack) 0.775s 1.004s 0.229s 120 1.21x
🐘 Postgres Next.js (Turbopack) 0.950s 1.371s 0.421s 88 1.48x
🐘 Postgres Nitro 1.287s (+62.9% 🔺) 1.830s (+81.6% 🔺) 0.543s 66 2.01x
🌐 MongoDB Next.js (Turbopack) 5.380s 6.013s 0.633s 20 8.38x
💻 Local Nitro 9.077s (-18.9% 🟢) 9.559s (-18.0% 🟢) 0.482s 13 14.15x
💻 Local Express 10.120s (-9.6% 🟢) 10.697s (-10.4% 🟢) 0.578s 12 15.77x
💻 Local Next.js (Turbopack) 10.806s 11.389s 0.583s 11 16.84x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 18.814s (+143.6% 🔺) 20.893s (+122.3% 🔺) 2.079s 6 1.00x
▲ Vercel Next.js (Turbopack) 21.505s (+108.2% 🔺) 23.261s (+89.3% 🔺) 1.756s 6 1.14x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: 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
💻 Local 🥇 Nitro 1.118s (+423.2% 🔺) 2.005s (+99.6% 🔺) 0.009s (-27.2% 🟢) 2.016s (+97.9% 🔺) 0.898s 10 1.00x
💻 Local Express 1.134s (+469.6% 🔺) 2.005s (+99.6% 🔺) 0.012s (+0.8%) 2.019s (+98.3% 🔺) 0.885s 10 1.01x
🐘 Postgres Express 1.135s (+453.3% 🔺) 1.995s (+99.8% 🔺) 0.001s (-25.0% 🟢) 2.010s (+98.7% 🔺) 0.875s 10 1.02x
💻 Local Next.js (Turbopack) 1.158s 2.004s 0.010s 2.017s 0.859s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.192s 2.002s 0.001s 2.011s 0.819s 10 1.07x
🐘 Postgres Nitro 1.366s (+566.4% 🔺) 1.996s (+99.7% 🔺) 0.252s (+16693.3% 🔺) 2.288s (+126.3% 🔺) 0.922s 10 1.22x
🌐 MongoDB Next.js (Turbopack) ⚠️ missing - - - - -
🌐 Redis Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.168s (-43.4% 🟢) 3.183s (-39.7% 🟢) 1.982s (+167.1% 🔺) 5.586s (-13.8% 🟢) 3.419s 10 1.00x
▲ Vercel Next.js (Turbopack) 4.848s (-29.3% 🟢) 4.906s (-43.3% 🟢) 0.753s (+19.2% 🔺) 7.527s (-23.1% 🟢) 2.678s 10 2.24x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.499s (+78.7% 🔺) 2.011s (+98.7% 🔺) 0.009s (-4.7%) 2.021s (+81.1% 🔺) 0.522s 30 1.00x
🐘 Postgres Express 1.503s (+138.6% 🔺) 2.005s (+99.2% 🔺) 0.004s (~) 2.025s (+97.9% 🔺) 0.522s 30 1.00x
💻 Local Next.js (Turbopack) 1.567s 2.009s 0.010s 2.022s 0.455s 30 1.05x
🐘 Postgres Next.js (Turbopack) 1.666s 2.010s 0.004s 2.025s 0.359s 30 1.11x
💻 Local Express 1.948s (+157.4% 🔺) 2.010s (+95.3% 🔺) 0.010s (+11.3% 🔺) 2.423s (+133.0% 🔺) 0.474s 25 1.30x
🐘 Postgres Nitro 2.911s (+366.4% 🔺) 3.335s (+231.3% 🔺) 0.003s (-30.1% 🟢) 3.391s (+231.6% 🔺) 0.480s 18 1.94x
🌐 MongoDB Next.js (Turbopack) ⚠️ missing - - - - -
🌐 Redis Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.673s (-80.7% 🟢) 6.955s (-77.4% 🟢) 0.272s (+142.4% 🔺) 7.669s (-75.9% 🟢) 1.997s 8 1.00x
▲ Vercel Next.js (Turbopack) 12.917s (-23.7% 🟢) 14.279s (-21.7% 🟢) 0.232s (+9.9% 🔺) 15.371s (-18.8% 🟢) 2.453s 4 2.28x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.688s (-28.4% 🟢) 1.048s (-18.0% 🟢) 0.000s (+61.4% 🔺) 1.061s (-18.8% 🟢) 0.373s 57 1.00x
🐘 Postgres Next.js (Turbopack) 0.796s 1.035s 0.000s 1.042s 0.247s 58 1.16x
💻 Local Nitro 1.323s (+8.2% 🔺) 2.014s (~) 0.000s (+133.3% 🔺) 2.015s (~) 0.693s 30 1.92x
💻 Local Express 1.323s (+8.0% 🔺) 2.015s (~) 0.000s (-50.0% 🟢) 2.017s (~) 0.693s 30 1.92x
💻 Local Next.js (Turbopack) 1.409s 2.012s 0.000s 2.015s 0.606s 30 2.05x
🐘 Postgres Nitro 1.766s (+82.3% 🔺) 2.190s (+75.6% 🔺) 0.000s (-100.0% 🟢) 2.266s (+80.2% 🔺) 0.500s 28 2.57x
🌐 MongoDB Next.js (Turbopack) ⚠️ missing - - - - -
🌐 Redis Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.375s (+10.6% 🔺) 4.521s (+2.9%) 0.000s (+400.0% 🔺) 4.935s (+2.6%) 1.561s 13 1.00x
▲ Vercel Next.js (Turbopack) 6.418s (-37.0% 🟢) 6.591s (-42.8% 🟢) 0.000s (NaN%) 8.199s (-32.0% 🟢) 1.781s 8 1.90x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

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.358s (-23.4% 🟢) 2.065s (-5.2% 🟢) 0.000s (+Infinity% 🔺) 2.081s (-5.3% 🟢) 0.723s 29 1.00x
🐘 Postgres Next.js (Turbopack) 1.647s 2.071s 0.000s 2.116s 0.468s 29 1.21x
💻 Local Next.js (Turbopack) 2.706s 3.360s 0.001s 3.365s 0.658s 18 1.99x
💻 Local Nitro 3.091s (-8.7% 🟢) 3.777s (-6.3% 🟢) 0.001s (+99.2% 🔺) 3.781s (-6.3% 🟢) 0.690s 16 2.28x
💻 Local Express 3.146s (-9.3% 🟢) 3.967s (-1.6%) 0.001s (+40.6% 🔺) 3.970s (-1.6%) 0.825s 16 2.32x
🐘 Postgres Nitro 4.210s (+135.0% 🔺) 4.794s (+123.9% 🔺) 0.000s (+100.0% 🔺) 4.856s (+123.3% 🔺) 0.647s 14 3.10x
🌐 MongoDB Next.js (Turbopack) ⚠️ missing - - - - -
🌐 Redis Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 7.326s (+30.4% 🔺) 8.562s (+22.6% 🔺) 0.000s (+14.3% 🔺) 9.225s (+22.3% 🔺) 1.899s 7 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 18/21
🐘 Postgres Express 21/21
▲ Vercel Nitro 19/21
Fastest World by Framework

Winner determined by most benchmark wins

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


Some benchmark jobs failed:

  • Local: success
  • Postgres: success
  • Vercel: failure

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 15, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 859 0 219 1078
✅ 💻 Local Development 1153 0 219 1372
✅ 📦 Local Production 1153 0 219 1372
✅ 🐘 Local Postgres 1153 0 219 1372
✅ 🪟 Windows 98 0 0 98
✅ 📋 Other 510 0 176 686
Total 4926 0 1052 5978

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 72 0 26
✅ example 72 0 26
✅ express 72 0 26
✅ fastify 72 0 26
✅ hono 72 0 26
✅ nextjs-turbopack 96 0 2
✅ nextjs-webpack 96 0 2
✅ nitro 72 0 26
✅ nuxt 72 0 26
✅ sveltekit 91 0 7
✅ vite 72 0 26
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 73 0 25
✅ express-stable 73 0 25
✅ fastify-stable 73 0 25
✅ hono-stable 73 0 25
✅ nextjs-turbopack-canary 79 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 98 0 0
✅ nextjs-webpack-canary 79 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 98 0 0
✅ nitro-stable 73 0 25
✅ nuxt-stable 73 0 25
✅ sveltekit-stable 92 0 6
✅ vite-stable 73 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 73 0 25
✅ express-stable 73 0 25
✅ fastify-stable 73 0 25
✅ hono-stable 73 0 25
✅ nextjs-turbopack-canary 79 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 98 0 0
✅ nextjs-webpack-canary 79 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 98 0 0
✅ nitro-stable 73 0 25
✅ nuxt-stable 73 0 25
✅ sveltekit-stable 92 0 6
✅ vite-stable 73 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 73 0 25
✅ express-stable 73 0 25
✅ fastify-stable 73 0 25
✅ hono-stable 73 0 25
✅ nextjs-turbopack-canary 79 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 98 0 0
✅ nextjs-webpack-canary 79 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 98 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 98 0 0
✅ nitro-stable 73 0 25
✅ nuxt-stable 73 0 25
✅ sveltekit-stable 92 0 6
✅ vite-stable 73 0 25
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 98 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 73 0 25
✅ e2e-local-dev-tanstack-start- 73 0 25
✅ e2e-local-postgres-nest-stable 73 0 25
✅ e2e-local-postgres-tanstack-start- 73 0 25
✅ e2e-local-prod-nest-stable 73 0 25
✅ e2e-local-prod-tanstack-start- 73 0 25
✅ e2e-vercel-prod-tanstack-start 72 0 26

📋 View full workflow run

Copy link
Copy Markdown
Member

@VaguelySerious VaguelySerious left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI review: no blocking issues

Comment thread packages/core/e2e/utils.ts Outdated
Comment thread packages/next/src/index.test.ts Outdated
Comment thread packages/next/src/loader.ts Outdated
Comment thread packages/next/src/builder.ts Outdated
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.

3 participants