Skip to content

clarify serverExternalPackages warning#2417

Merged
TooTallNate merged 1 commit into
mainfrom
clarify-server-external-warning
Jun 15, 2026
Merged

clarify serverExternalPackages warning#2417
TooTallNate merged 1 commit into
mainfrom
clarify-server-external-warning

Conversation

@TooTallNate

@TooTallNate TooTallNate commented Jun 15, 2026

Copy link
Copy Markdown
Member

Summary

  • Clarifies that packages removed from serverExternalPackages are still compiled by Workflow during the build.
  • Updates the Next integration test and v4/v5 docs copy to match the warning.
  • Adds a patch changeset for @workflow/next.

Testing

  • pnpm vitest run packages/next/src/index.test.ts
  • pnpm biome check \"packages/next/src/index.ts\" \"packages/next/src/index.test.ts\" \"docs/content/docs/v5/api-reference/workflow-next/with-workflow.mdx\" \"docs/content/docs/v4/api-reference/workflow-next/with-workflow.mdx\" \".changeset/clear-server-external-warning.md\" (reports pre-existing cognitive-complexity warning in packages/next/src/index.ts)

Docs Preview

Page v4 v5
withWorkflow API reference https://workflow-docs-git-clarify-server-external-warning.vercel.sh/docs/api-reference/workflow-next/with-workflow https://workflow-docs-git-clarify-server-external-warning.vercel.sh/v5/docs/api-reference/workflow-next/with-workflow

@TooTallNate TooTallNate requested review from a team and ijjk as code owners June 15, 2026 00:58
@changeset-bot

changeset-bot Bot commented Jun 15, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6050136

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

This PR includes changesets to release 16 packages
Name Type
@workflow/next Patch
workflow Patch
@workflow/world-testing Patch
@workflow/core Patch
@workflow/builders Patch
@workflow/cli Patch
@workflow/nitro Patch
@workflow/vitest Patch
@workflow/web-shared Patch
@workflow/web Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/nuxt 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

vercel Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

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 Jun 15, 2026 1:02am
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jun 15, 2026 1:02am
example-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-astro-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-express-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-fastify-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-hono-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-nitro-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-nuxt-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-sveltekit-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workbench-vite-workflow Ready Ready Preview, Comment Jun 15, 2026 1:02am
workflow-docs Ready Ready Preview, Comment, Open in v0 Jun 15, 2026 1:02am
workflow-swc-playground Ready Ready Preview, Comment Jun 15, 2026 1:02am
workflow-tarballs Ready Ready Preview, Comment Jun 15, 2026 1:02am
workflow-web Ready Ready Preview, Comment Jun 15, 2026 1:02am

@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1442 0 219 1661
✅ 💻 Local Development 1895 0 219 2114
✅ 📦 Local Production 1895 0 219 2114
✅ 🐘 Local Postgres 1881 0 233 2114
✅ 🪟 Windows 151 0 0 151
✅ 📋 Other 879 0 178 1057
Total 8143 0 1068 9211

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 125 0 26
✅ example 125 0 26
✅ express 125 0 26
✅ fastify 125 0 26
✅ hono 125 0 26
✅ nextjs-turbopack 149 0 2
✅ nextjs-webpack 149 0 2
✅ nitro 125 0 26
✅ nuxt 125 0 26
✅ sveltekit 144 0 7
✅ vite 125 0 26
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 126 0 25
✅ express-stable 126 0 25
✅ fastify-stable 126 0 25
✅ hono-stable 126 0 25
✅ nextjs-turbopack-canary 132 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 151 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 151 0 0
✅ nextjs-webpack-canary 132 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 151 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 151 0 0
✅ nitro-stable 126 0 25
✅ nuxt-stable 126 0 25
✅ sveltekit-stable 145 0 6
✅ vite-stable 126 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 126 0 25
✅ express-stable 126 0 25
✅ fastify-stable 126 0 25
✅ hono-stable 126 0 25
✅ nextjs-turbopack-canary 132 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 151 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 151 0 0
✅ nextjs-webpack-canary 132 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 151 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 151 0 0
✅ nitro-stable 126 0 25
✅ nuxt-stable 126 0 25
✅ sveltekit-stable 145 0 6
✅ vite-stable 126 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 125 0 26
✅ express-stable 125 0 26
✅ fastify-stable 125 0 26
✅ hono-stable 125 0 26
✅ nextjs-turbopack-canary 131 0 20
✅ nextjs-turbopack-stable-lazy-discovery-disabled 150 0 1
✅ nextjs-turbopack-stable-lazy-discovery-enabled 150 0 1
✅ nextjs-webpack-canary 131 0 20
✅ nextjs-webpack-stable-lazy-discovery-disabled 150 0 1
✅ nextjs-webpack-stable-lazy-discovery-enabled 150 0 1
✅ nitro-stable 125 0 26
✅ nuxt-stable 125 0 26
✅ sveltekit-stable 144 0 7
✅ vite-stable 125 0 26
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 151 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 126 0 25
✅ e2e-local-dev-tanstack-start- 126 0 25
✅ e2e-local-postgres-nest-stable 125 0 26
✅ e2e-local-postgres-tanstack-start- 125 0 26
✅ e2e-local-prod-nest-stable 126 0 25
✅ e2e-local-prod-tanstack-start- 126 0 25
✅ e2e-vercel-prod-tanstack-start 125 0 26

📋 View full workflow run

@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

📊 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.045s (+4.7%) 1.007s (~) 0.962s 10 1.00x
💻 Local Nitro 0.045s (-6.5% 🟢) 1.006s (~) 0.962s 10 1.00x
🐘 Postgres Nitro 0.061s (-5.6% 🟢) 1.012s (~) 0.952s 10 1.36x
💻 Local Next.js (Turbopack) 0.062s (+0.8%) 1.006s (~) 0.944s 10 1.39x
🐘 Postgres Express 0.068s (+12.7% 🔺) 1.012s (~) 0.944s 10 1.53x
🐘 Postgres Next.js (Turbopack) 0.069s (+3.0%) 1.013s (~) 0.944s 10 1.54x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.329s (+2.7%) 2.560s (+11.8% 🔺) 2.231s 10 1.00x
▲ Vercel Next.js (Turbopack) 0.340s (-15.4% 🟢) 3.005s (+17.9% 🔺) 2.665s 10 1.03x
▲ Vercel Nitro 0.372s (+41.6% 🔺) 2.713s (+15.1% 🔺) 2.341s 10 1.13x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.098s (~) 2.006s (~) 0.908s 10 1.00x
💻 Local Express 1.098s (~) 2.006s (~) 0.908s 10 1.00x
🐘 Postgres Nitro 1.113s (~) 2.010s (~) 0.897s 10 1.01x
🐘 Postgres Express 1.119s (+1.1%) 2.020s (~) 0.901s 10 1.02x
💻 Local Next.js (Turbopack) 1.145s (~) 2.007s (~) 0.862s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.145s (-0.9%) 2.009s (~) 0.864s 10 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.796s (+7.4% 🔺) 3.397s (-7.5% 🟢) 1.601s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.806s (+9.6% 🔺) 3.871s (+1.0%) 2.065s 10 1.01x
▲ Vercel Nitro 1.864s (+13.8% 🔺) 3.898s (+2.6%) 2.034s 10 1.04x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 10.533s (~) 11.022s (~) 0.489s 3 1.00x
🐘 Postgres Express 10.568s (~) 11.018s (~) 0.450s 3 1.00x
🐘 Postgres Nitro 10.570s (~) 11.017s (~) 0.447s 3 1.00x
💻 Local Nitro 10.599s (~) 11.022s (~) 0.424s 3 1.01x
💻 Local Next.js (Turbopack) 10.808s (~) 11.024s (~) 0.216s 3 1.03x
🐘 Postgres Next.js (Turbopack) 10.850s (-0.9%) 11.015s (-3.0%) 0.166s 3 1.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 14.670s (-40.8% 🟢) 16.196s (-38.0% 🟢) 1.526s 2 1.00x
▲ Vercel Next.js (Turbopack) 14.974s (-2.1%) 18.833s (+8.4% 🔺) 3.859s 2 1.02x
▲ Vercel Express 15.570s (+10.1% 🔺) 17.054s (+9.6% 🔺) 1.484s 2 1.06x

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

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.737s (~) 14.027s (~) 0.289s 5 1.00x
🐘 Postgres Nitro 13.769s (-0.8%) 14.016s (-1.4%) 0.247s 5 1.00x
💻 Local Express 13.780s (~) 14.027s (~) 0.246s 5 1.00x
🐘 Postgres Express 13.808s (~) 14.021s (~) 0.213s 5 1.01x
💻 Local Next.js (Turbopack) 14.421s (-0.7%) 15.029s (~) 0.608s 4 1.05x
🐘 Postgres Next.js (Turbopack) 14.573s (-1.3%) 15.021s (-1.6%) 0.448s 4 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 23.632s (+4.9%) 25.236s (+3.4%) 1.604s 3 1.00x
▲ Vercel Next.js (Turbopack) 23.931s (+14.7% 🔺) 26.736s (+17.5% 🔺) 2.805s 3 1.01x
▲ Vercel Nitro 24.349s (+15.5% 🔺) 26.524s (+15.5% 🔺) 2.175s 3 1.03x

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

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 12.506s (~) 13.024s (~) 0.517s 7 1.00x
💻 Local Nitro 12.604s (~) 13.024s (~) 0.420s 7 1.01x
🐘 Postgres Express 12.648s (+1.5%) 13.018s (~) 0.370s 7 1.01x
🐘 Postgres Nitro 12.691s (+1.4%) 13.162s (+1.1%) 0.471s 7 1.01x
💻 Local Next.js (Turbopack) 13.812s (+1.5%) 14.026s (~) 0.214s 7 1.10x
🐘 Postgres Next.js (Turbopack) 13.834s (~) 14.163s (-1.0%) 0.329s 7 1.11x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 33.027s (+8.6% 🔺) 35.760s (+9.9% 🔺) 2.733s 3 1.00x
▲ Vercel Express 34.609s (-9.3% 🟢) 36.550s (-7.6% 🟢) 1.941s 3 1.05x
▲ Vercel Nitro 34.625s (+15.3% 🔺) 36.632s (+13.4% 🔺) 2.007s 3 1.05x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.190s (-3.4%) 2.005s (~) 0.816s 15 1.00x
🐘 Postgres Nitro 1.192s (-1.2%) 2.007s (~) 0.815s 15 1.00x
🐘 Postgres Express 1.207s (~) 2.008s (~) 0.801s 15 1.01x
💻 Local Nitro 1.273s (+7.0% 🔺) 2.007s (~) 0.734s 15 1.07x
🐘 Postgres Next.js (Turbopack) 1.292s (+1.5%) 2.008s (~) 0.716s 15 1.09x
💻 Local Next.js (Turbopack) 1.335s (+1.9%) 2.006s (~) 0.671s 15 1.12x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.225s (-29.3% 🟢) 5.230s (-13.0% 🟢) 2.005s 6 1.00x
▲ Vercel Nitro 3.369s (+38.4% 🔺) 5.200s (+28.6% 🔺) 1.831s 6 1.04x
▲ Vercel Next.js (Turbopack) 3.437s (+29.3% 🔺) 5.186s (+18.4% 🔺) 1.749s 6 1.07x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.336s (-3.5%) 2.392s (~) 1.057s 13 1.00x
🐘 Postgres Express 1.379s (+1.5%) 2.316s (-3.2%) 0.937s 13 1.03x
🐘 Postgres Next.js (Turbopack) 1.606s (+2.1%) 2.317s (+1.0%) 0.711s 13 1.20x
💻 Local Express 1.617s (~) 2.006s (~) 0.389s 15 1.21x
💻 Local Next.js (Turbopack) 1.928s (+8.9% 🔺) 2.393s (+19.3% 🔺) 0.465s 13 1.44x
💻 Local Nitro 1.936s (-1.3%) 2.293s (-1.0%) 0.357s 14 1.45x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.732s (-24.1% 🟢) 4.432s (-12.9% 🟢) 1.700s 7 1.00x
▲ Vercel Nitro 3.287s (-8.7% 🟢) 5.337s (-2.0%) 2.051s 6 1.20x
▲ Vercel Next.js (Turbopack) 4.101s (+32.0% 🔺) 7.151s (+38.0% 🔺) 3.049s 6 1.50x

🔍 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 🥇 Express 1.645s (+3.9%) 4.014s (~) 2.369s 8 1.00x
🐘 Postgres Nitro 1.658s (+3.0%) 3.886s (-6.3% 🟢) 2.228s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.205s (-2.1%) 4.302s (+7.1% 🔺) 1.097s 7 1.95x
💻 Local Express 4.122s (-2.7%) 4.585s (-2.9%) 0.463s 7 2.51x
💻 Local Nitro 5.593s (+1.7%) 6.180s (+2.8%) 0.587s 6 3.40x
💻 Local Next.js (Turbopack) 5.862s (+21.0% 🔺) 6.213s (+16.2% 🔺) 0.352s 5 3.56x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.237s (-6.7% 🟢) 6.774s (+7.6% 🔺) 2.537s 5 1.00x
▲ Vercel Express 4.311s (+2.5%) 6.210s (+2.5%) 1.899s 6 1.02x
▲ Vercel Next.js (Turbopack) 4.411s (-15.1% 🟢) 7.834s (+12.0% 🔺) 3.423s 5 1.04x

🔍 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 🥇 Nitro 1.210s (-0.5%) 2.007s (~) 0.796s 15 1.00x
🐘 Postgres Express 1.215s (+1.3%) 2.007s (~) 0.792s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.280s (~) 2.008s (~) 0.728s 15 1.06x
💻 Local Next.js (Turbopack) 1.353s (-2.1%) 2.007s (~) 0.654s 15 1.12x
💻 Local Express 1.495s (-1.1%) 2.006s (~) 0.511s 15 1.23x
💻 Local Nitro 1.559s (-5.9% 🟢) 2.007s (~) 0.448s 15 1.29x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.489s (-15.4% 🟢) 4.965s (+2.1%) 2.477s 7 1.00x
▲ Vercel Next.js (Turbopack) 2.565s (-26.1% 🟢) 4.399s (-13.3% 🟢) 1.834s 7 1.03x
▲ Vercel Express 2.756s (+13.9% 🔺) 4.711s (+13.4% 🔺) 1.955s 7 1.11x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.375s (+1.7%) 2.393s (-7.7% 🟢) 1.017s 13 1.00x
🐘 Postgres Express 1.407s (~) 2.592s (+11.9% 🔺) 1.185s 12 1.02x
🐘 Postgres Next.js (Turbopack) 1.519s (-6.3% 🟢) 2.075s (-9.6% 🟢) 0.556s 15 1.10x
💻 Local Express 1.689s (-3.3%) 2.005s (-6.7% 🟢) 0.317s 15 1.23x
💻 Local Next.js (Turbopack) 1.970s (-4.9%) 2.508s (-11.2% 🟢) 0.538s 12 1.43x
💻 Local Nitro 2.299s (+7.7% 🔺) 2.758s (+6.4% 🔺) 0.459s 12 1.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.828s (-6.3% 🟢) 4.349s (-2.4%) 1.521s 7 1.00x
▲ Vercel Nitro 2.895s (+10.2% 🔺) 4.779s (+18.0% 🔺) 1.884s 7 1.02x
▲ Vercel Next.js (Turbopack) 3.274s (+24.8% 🔺) 5.584s (+29.6% 🔺) 2.310s 6 1.16x

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

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.601s (-0.7%) 4.012s (+6.7% 🔺) 2.411s 8 1.00x
🐘 Postgres Express 1.729s (+10.1% 🔺) 4.140s (+3.2%) 2.411s 8 1.08x
🐘 Postgres Next.js (Turbopack) 3.486s (+27.5% 🔺) 4.390s (+27.0% 🔺) 0.905s 8 2.18x
💻 Local Express 4.793s (+2.3%) 5.178s (~) 0.384s 6 2.99x
💻 Local Next.js (Turbopack) 5.364s (+9.1% 🔺) 6.216s (+19.9% 🔺) 0.852s 5 3.35x
💻 Local Nitro 5.910s (+1.0%) 6.415s (~) 0.505s 5 3.69x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.992s (+15.5% 🔺) 7.155s (+40.0% 🔺) 3.163s 5 1.00x
▲ Vercel Nitro 4.474s (~) 6.723s (+11.6% 🔺) 2.249s 5 1.12x
▲ Vercel Next.js (Turbopack) 4.596s (+30.1% 🔺) 6.637s (+22.2% 🔺) 2.041s 5 1.15x

🔍 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.556s (-3.2%) 1.006s (-1.7%) 0.450s 60 1.00x
💻 Local Express 0.613s (-1.9%) 1.005s (-1.6%) 0.392s 60 1.10x
💻 Local Nitro 0.618s (-1.6%) 1.005s (~) 0.388s 60 1.11x
🐘 Postgres Express 0.647s (+14.9% 🔺) 1.059s (+5.2% 🔺) 0.412s 57 1.16x
🐘 Postgres Next.js (Turbopack) 0.850s (~) 1.023s (-3.4%) 0.173s 59 1.53x
💻 Local Next.js (Turbopack) 0.889s (+1.0%) 1.076s (+3.6%) 0.188s 56 1.60x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.955s (-2.8%) 8.021s (+2.9%) 2.066s 8 1.00x
▲ Vercel Express 6.041s (+9.5% 🔺) 8.582s (+18.3% 🔺) 2.541s 8 1.01x
▲ Vercel Nitro 6.234s (+21.8% 🔺) 7.655s (+12.1% 🔺) 1.421s 8 1.05x

🔍 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.358s (~) 2.030s (+1.1%) 0.672s 45 1.00x
🐘 Postgres Express 1.400s (+3.3%) 2.030s (~) 0.630s 45 1.03x
💻 Local Express 1.486s (-0.6%) 2.006s (~) 0.520s 45 1.09x
💻 Local Nitro 1.581s (+1.4%) 2.007s (~) 0.426s 45 1.16x
🐘 Postgres Next.js (Turbopack) 1.990s (~) 2.316s (-3.6%) 0.326s 39 1.47x
💻 Local Next.js (Turbopack) 2.158s (~) 3.009s (+1.1%) 0.851s 30 1.59x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 14.757s (+1.4%) 17.581s (+7.0% 🔺) 2.824s 6 1.00x
▲ Vercel Next.js (Turbopack) 15.587s (-5.2% 🟢) 17.707s (-4.4%) 2.120s 6 1.06x
▲ Vercel Express 15.602s (+2.0%) 18.032s (+4.3%) 2.430s 5 1.06x

🔍 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 2.701s (~) 3.086s (~) 0.385s 39 1.00x
🐘 Postgres Express 2.806s (+3.1%) 3.137s (+0.8%) 0.331s 39 1.04x
💻 Local Express 3.284s (+3.0%) 4.042s (+1.7%) 0.758s 30 1.22x
💻 Local Nitro 3.344s (-0.9%) 4.010s (~) 0.665s 30 1.24x
🐘 Postgres Next.js (Turbopack) 4.024s (+4.3%) 4.494s (+11.1% 🔺) 0.470s 27 1.49x
💻 Local Next.js (Turbopack) 4.522s (+4.9%) 5.094s (+1.7%) 0.572s 24 1.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 28.734s (+8.0% 🔺) 31.355s (+9.9% 🔺) 2.621s 4 1.00x
▲ Vercel Nitro 29.983s (+11.1% 🔺) 34.203s (+18.2% 🔺) 4.220s 4 1.04x
▲ Vercel Next.js (Turbopack) 31.404s (+5.4% 🔺) 34.641s (+8.4% 🔺) 3.237s 4 1.09x

🔍 Observability: Express | 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 🥇 Nitro 0.235s (-2.8%) 1.006s (~) 0.771s 60 1.00x
🐘 Postgres Express 0.249s (+2.5%) 1.006s (~) 0.756s 60 1.06x
🐘 Postgres Next.js (Turbopack) 0.305s (+3.3%) 1.006s (~) 0.702s 60 1.29x
💻 Local Nitro 0.435s (+4.7%) 1.005s (~) 0.570s 60 1.85x
💻 Local Express 0.467s (+17.6% 🔺) 1.004s (~) 0.537s 60 1.99x
💻 Local Next.js (Turbopack) 0.574s (-3.2%) 1.005s (-3.3%) 0.432s 60 2.44x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.956s (+4.3%) 4.440s (+21.9% 🔺) 2.484s 14 1.00x
▲ Vercel Next.js (Turbopack) 2.220s (+9.3% 🔺) 4.167s (+6.5% 🔺) 1.947s 15 1.14x
▲ Vercel Express 2.313s (+12.9% 🔺) 4.452s (+16.8% 🔺) 2.139s 14 1.18x

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

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.399s (-1.0%) 1.053s (+3.5%) 0.653s 86 1.00x
🐘 Postgres Express 0.426s (+6.8% 🔺) 1.117s (+9.8% 🔺) 0.691s 81 1.07x
🐘 Postgres Next.js (Turbopack) 0.605s (-9.0% 🟢) 1.132s (-9.7% 🟢) 0.527s 80 1.51x
💻 Local Express 2.032s (-0.9%) 2.536s (-2.8%) 0.504s 36 5.09x
💻 Local Nitro 2.193s (~) 2.912s (+2.1%) 0.720s 31 5.49x
💻 Local Next.js (Turbopack) 2.508s (+8.4% 🔺) 3.260s (+3.6%) 0.752s 28 6.28x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.200s (+23.0% 🔺) 5.184s (+25.6% 🔺) 1.984s 18 1.00x
▲ Vercel Nitro 3.240s (+13.5% 🔺) 6.020s (+20.7% 🔺) 2.780s 15 1.01x
▲ Vercel Next.js (Turbopack) 4.298s (+30.9% 🔺) 6.429s (+21.4% 🔺) 2.131s 14 1.34x

🔍 Observability: Express | Nitro | 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.760s (-3.2%) 1.294s (-8.2% 🟢) 0.534s 94 1.00x
🐘 Postgres Express 0.835s (+10.1% 🔺) 1.465s (+4.5%) 0.630s 83 1.10x
🐘 Postgres Next.js (Turbopack) 2.897s (-7.0% 🟢) 3.885s (-3.2%) 0.988s 31 3.81x
💻 Local Express 8.683s (-2.3%) 9.256s (-2.4%) 0.573s 13 11.43x
💻 Local Nitro 9.976s (+0.6%) 10.446s (~) 0.469s 12 13.13x
💻 Local Next.js (Turbopack) 11.037s (+5.1% 🔺) 11.846s (+4.0%) 0.809s 11 14.52x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.481s (-10.9% 🟢) 8.136s (+3.1%) 2.655s 15 1.00x
▲ Vercel Express 5.676s (-27.7% 🟢) 7.848s (-17.4% 🟢) 2.172s 16 1.04x
▲ Vercel Next.js (Turbopack) 7.000s (-23.8% 🟢) 9.535s (-15.8% 🟢) 2.535s 13 1.28x

🔍 Observability: Nitro | Express | 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 🥇 Express 1.152s (~) 2.004s (~) 0.009s (-6.1% 🟢) 2.016s (~) 0.864s 10 1.00x
🐘 Postgres Express 1.162s (~) 2.001s (~) 0.001s (+44.4% 🔺) 2.010s (~) 0.848s 10 1.01x
💻 Local Nitro 1.170s (~) 2.005s (~) 0.012s (-2.4%) 2.020s (~) 0.850s 10 1.02x
🐘 Postgres Nitro 1.204s (+2.9%) 1.996s (~) 0.001s (+20.0% 🔺) 2.010s (~) 0.806s 10 1.05x
💻 Local Next.js (Turbopack) 1.215s (~) 2.003s (~) 0.013s (+21.9% 🔺) 2.020s (~) 0.805s 10 1.05x
🐘 Postgres Next.js (Turbopack) 1.231s (~) 2.002s (~) 0.001s (-15.4% 🟢) 2.011s (~) 0.780s 10 1.07x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.478s (+9.3% 🔺) 4.005s (+10.2% 🔺) 0.905s (+0.5%) 5.424s (+7.1% 🔺) 2.947s 10 1.00x
▲ Vercel Express 2.572s (+13.9% 🔺) 4.139s (+19.0% 🔺) 0.887s (-14.3% 🟢) 5.419s (+9.7% 🔺) 2.847s 10 1.04x
▲ Vercel Nitro 2.943s (+22.4% 🔺) 4.690s (+33.5% 🔺) 0.715s (-46.7% 🟢) 5.914s (+11.4% 🔺) 2.972s 10 1.19x

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

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.568s (-0.9%) 2.006s (~) 0.005s (-1.3%) 2.026s (~) 0.458s 30 1.00x
💻 Local Express 1.570s (~) 2.010s (~) 0.011s (-5.8% 🟢) 2.024s (~) 0.454s 30 1.00x
🐘 Postgres Express 1.597s (+1.8%) 2.004s (~) 0.005s (-7.6% 🟢) 2.025s (~) 0.428s 30 1.02x
💻 Local Nitro 1.599s (~) 2.011s (~) 0.013s (+8.6% 🔺) 2.026s (~) 0.427s 30 1.02x
💻 Local Next.js (Turbopack) 1.737s (+0.7%) 2.010s (~) 0.012s (+6.9% 🔺) 2.025s (~) 0.288s 30 1.11x
🐘 Postgres Next.js (Turbopack) 1.796s (~) 2.011s (~) 0.006s (+1.8%) 2.028s (~) 0.232s 30 1.15x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 6.421s (-19.1% 🟢) 7.859s (-16.0% 🟢) 0.212s (-38.8% 🟢) 8.659s (-16.3% 🟢) 2.238s 7 1.00x
▲ Vercel Nitro 6.875s (+14.2% 🔺) 9.538s (+30.5% 🔺) 0.320s (+19.8% 🔺) 10.435s (+27.7% 🔺) 3.560s 6 1.07x
▲ Vercel Express 6.917s (+9.3% 🔺) 9.325s (+24.8% 🔺) 0.463s (-13.4% 🟢) 10.208s (+20.1% 🔺) 3.292s 6 1.08x

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

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.774s (+1.0%) 1.028s (-2.1%) 0.000s (-50.0% 🟢) 1.053s (-0.6%) 0.279s 57 1.00x
🐘 Postgres Nitro 0.786s (+5.6% 🔺) 1.048s (~) 0.000s (+1.8%) 1.086s (+1.7%) 0.300s 56 1.02x
🐘 Postgres Next.js (Turbopack) 1.023s (-2.2%) 1.488s (-2.4%) 0.000s (NaN%) 1.496s (-2.5%) 0.472s 41 1.32x
💻 Local Express 1.396s (+0.8%) 2.013s (~) 0.000s (+14.3% 🔺) 2.015s (~) 0.619s 30 1.80x
💻 Local Nitro 1.442s (+1.5%) 2.013s (~) 0.000s (-35.7% 🟢) 2.016s (~) 0.574s 30 1.86x
💻 Local Next.js (Turbopack) 1.517s (+5.0%) 2.013s (~) 0.001s (+216.7% 🔺) 2.016s (~) 0.500s 30 1.96x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.971s (-3.0%) 4.474s (+6.8% 🔺) 0.001s (+Infinity% 🔺) 4.902s (+5.9% 🔺) 1.930s 13 1.00x
▲ Vercel Nitro 3.246s (-1.8%) 5.194s (+6.7% 🔺) 0.001s (+1645.5% 🔺) 5.771s (+7.3% 🔺) 2.525s 11 1.09x
▲ Vercel Next.js (Turbopack) 3.319s (-23.3% 🟢) 5.590s (-3.6%) 0.000s (NaN%) 6.133s (-2.9%) 2.813s 10 1.12x

🔍 Observability: Express | 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.553s (-5.9% 🟢) 2.138s (~) 0.000s (+Infinity% 🔺) 2.180s (-0.6%) 0.628s 28 1.00x
🐘 Postgres Nitro 1.743s (+1.0%) 2.218s (-1.6%) 0.000s (NaN%) 2.231s (-1.6%) 0.488s 27 1.12x
🐘 Postgres Next.js (Turbopack) 2.174s (~) 2.655s (+1.6%) 0.000s (~) 2.663s (+1.3%) 0.489s 23 1.40x
💻 Local Next.js (Turbopack) 2.735s (-6.5% 🟢) 3.288s (-7.5% 🟢) 0.000s (-86.2% 🟢) 3.291s (-7.5% 🟢) 0.557s 19 1.76x
💻 Local Express 3.055s (~) 3.837s (+2.9%) 0.001s (+19.5% 🔺) 3.841s (+2.9%) 0.786s 16 1.97x
💻 Local Nitro 3.269s (+3.4%) 3.966s (+3.3%) 0.001s (-9.1% 🟢) 3.969s (+3.2%) 0.699s 16 2.11x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 4.552s (-30.9% 🟢) 6.984s (-16.1% 🟢) 0.000s (+Infinity% 🔺) 7.592s (-14.3% 🟢) 3.040s 8 1.00x
▲ Vercel Nitro 4.724s (-14.1% 🟢) 6.662s (-6.0% 🟢) 0.000s (-100.0% 🟢) 7.255s (-4.2%) 2.531s 9 1.04x
▲ Vercel Express 4.928s (-23.9% 🟢) 6.619s (-13.6% 🟢) 0.000s (-100.0% 🟢) 7.018s (-14.5% 🟢) 2.090s 9 1.08x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Express 16/21
🐘 Postgres Nitro 15/21
▲ Vercel Express 10/21
Fastest World by Framework

Winner determined by most benchmark wins

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

Worlds:

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

📋 View full workflow run

@TooTallNate TooTallNate enabled auto-merge (squash) June 15, 2026 01:01
@TooTallNate TooTallNate merged commit 1946718 into main Jun 15, 2026
266 of 270 checks passed
@TooTallNate TooTallNate deleted the clarify-server-external-warning branch June 15, 2026 16:25
github-actions Bot added a commit that referenced this pull request Jun 15, 2026
Signed-off-by: Nathan Rajlich <n@n8.io>
@github-actions

Copy link
Copy Markdown
Contributor

Backport PR opened against stable: #2431. Merge conflicts were resolved by AI — please review carefully. (backport job 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.

3 participants