Skip to content

[next] make lazyDiscovery the default in withWorkflow#1805

Open
TooTallNate wants to merge 3 commits intomainfrom
nr/lazy-discovery-default-true
Open

[next] make lazyDiscovery the default in withWorkflow#1805
TooTallNate wants to merge 3 commits intomainfrom
nr/lazy-discovery-default-true

Conversation

@TooTallNate
Copy link
Copy Markdown
Member

Summary

  • Flip the default for workflows.lazyDiscovery in withWorkflow from false to true so new projects automatically get deferred workflow discovery on Next.js >= 16.2.0-canary.48
  • Users can opt back into eager discovery with workflows: { lazyDiscovery: false } on supported Next.js versions
  • Drop the now-redundant lazyDiscovery: true from the nextjs-turbopack and nextjs-webpack workbench apps
  • Reword the version-fallback warning and update the matching e2e assertion
  • Update the withWorkflow docs to reflect the new default

Companion PR

The companion change for stable (which keeps the current default but removes the workbench override so stable e2e tests still exercise eager mode) is in #1804.

Flips the default for `workflows.lazyDiscovery` from `false` to `true`
so new projects get deferred workflow discovery automatically on Next.js
versions that support deferred entries (>= 16.2.0-canary.48). Older
versions continue to fall back to eager discovery.

Users can still opt back into eager discovery explicitly by passing
`workflows: { lazyDiscovery: false }`.

Also:
- Remove the now-redundant `lazyDiscovery: true` from the Next.js
  workbench apps.
- Reword the fallback warning for clarity when lazy is the default.
- Update the local-build e2e assertion to match the new warning text.
- Update the withWorkflow docs with the new default.
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 17, 2026

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

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

@TooTallNate TooTallNate requested review from a team and ijjk as code owners April 17, 2026 21:23
Copilot AI review requested due to automatic review settings April 17, 2026 21:23
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 17, 2026

🦋 Changeset detected

Latest commit: 2063031

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

This PR includes changesets to release 17 packages
Name Type
@workflow/next Minor
workflow Patch
@workflow/ai 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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 17, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 978 0 67 1045
✅ 💻 Local Development 1054 0 86 1140
✅ 📦 Local Production 1054 0 86 1140
✅ 🐘 Local Postgres 1054 0 86 1140
✅ 🪟 Windows 95 0 0 95
✅ 📋 Other 267 0 18 285
Total 4502 0 343 4845

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 88 0 7
✅ example 88 0 7
✅ express 88 0 7
✅ fastify 88 0 7
✅ hono 88 0 7
✅ nextjs-turbopack 93 0 2
✅ nextjs-webpack 93 0 2
✅ nitro 88 0 7
✅ nuxt 88 0 7
✅ sveltekit 88 0 7
✅ vite 88 0 7
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 95 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 89 0 6
✅ e2e-local-postgres-nest-stable 89 0 6
✅ e2e-local-prod-nest-stable 89 0 6

📋 View full workflow run

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 17, 2026

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.034s (-22.3% 🟢) 1.005s (~) 0.971s 10 1.00x
💻 Local Nitro 0.044s (+2.3%) 1.005s (~) 0.961s 10 1.28x
💻 Local Next.js (Turbopack) 0.048s 1.005s 0.957s 10 1.40x
🐘 Postgres Next.js (Turbopack) 0.058s 1.011s 0.953s 10 1.67x
🐘 Postgres Nitro 0.059s (-37.6% 🟢) 1.010s (-3.2%) 0.951s 10 1.73x
🐘 Postgres Express 0.060s (+2.8%) 1.009s (~) 0.949s 10 1.73x
workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.097s (-2.5%) 2.006s (~) 0.909s 10 1.00x
💻 Local Next.js (Turbopack) 1.122s 2.006s 0.883s 10 1.02x
💻 Local Nitro 1.129s (~) 2.006s (~) 0.878s 10 1.03x
🐘 Postgres Express 1.136s (-0.9%) 2.011s (~) 0.875s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.137s 2.011s 0.874s 10 1.04x
🐘 Postgres Nitro 1.151s (+0.9%) 2.011s (~) 0.860s 10 1.05x
workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 10.639s (-2.6%) 11.024s (~) 0.385s 3 1.00x
💻 Local Next.js (Turbopack) 10.788s 11.023s 0.236s 3 1.01x
🐘 Postgres Express 10.887s (-0.7%) 11.023s (~) 0.136s 3 1.02x
🐘 Postgres Next.js (Turbopack) 10.906s 11.023s 0.117s 3 1.03x
🐘 Postgres Nitro 10.921s (~) 11.019s (~) 0.098s 3 1.03x
💻 Local Nitro 10.958s (~) 11.025s (~) 0.067s 3 1.03x
workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 14.168s (-5.4% 🟢) 15.030s (~) 0.862s 4 1.00x
🐘 Postgres Next.js (Turbopack) 14.533s 15.027s 0.494s 4 1.03x
🐘 Postgres Express 14.576s (~) 15.026s (~) 0.449s 4 1.03x
🐘 Postgres Nitro 14.621s (~) 15.023s (~) 0.402s 4 1.03x
💻 Local Next.js (Turbopack) 14.686s 15.030s 0.344s 4 1.04x
💻 Local Nitro 15.079s (~) 16.034s (~) 0.955s 4 1.06x
workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 13.809s 14.024s 0.214s 7 1.00x
🐘 Postgres Nitro 14.029s (~) 14.742s (+3.0%) 0.713s 7 1.02x
🐘 Postgres Express 14.065s (~) 14.594s (~) 0.529s 7 1.02x
💻 Local Express 14.884s (-10.3% 🟢) 15.027s (-11.8% 🟢) 0.143s 6 1.08x
💻 Local Next.js (Turbopack) 16.140s 16.697s 0.557s 6 1.17x
💻 Local Nitro 16.941s (+0.9%) 17.032s (~) 0.091s 6 1.23x
Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.230s 2.009s 0.779s 15 1.00x
🐘 Postgres Nitro 1.258s (-1.3%) 2.010s (~) 0.752s 15 1.02x
🐘 Postgres Express 1.272s (+0.9%) 2.010s (~) 0.738s 15 1.03x
💻 Local Express 1.448s (-2.8%) 2.005s (~) 0.557s 15 1.18x
💻 Local Nitro 1.539s (-5.7% 🟢) 2.005s (-3.3%) 0.467s 15 1.25x
💻 Local Next.js (Turbopack) 1.547s 2.006s 0.460s 15 1.26x
Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.337s (-1.0%) 3.007s (~) 0.670s 10 1.00x
🐘 Postgres Nitro 2.368s (+0.7%) 3.009s (~) 0.641s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.380s 3.008s 0.628s 10 1.02x
💻 Local Express 2.595s (-12.1% 🟢) 3.108s (-10.0% 🟢) 0.513s 10 1.11x
💻 Local Next.js (Turbopack) 2.903s 3.454s 0.551s 9 1.24x
💻 Local Nitro 3.020s (-3.9%) 3.886s (~) 0.866s 8 1.29x
Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.475s (~) 4.010s (~) 0.535s 8 1.00x
🐘 Postgres Express 3.476s (~) 4.013s (~) 0.537s 8 1.00x
🐘 Postgres Next.js (Turbopack) 3.646s 4.010s 0.364s 8 1.05x
💻 Local Express 6.653s (-20.2% 🟢) 7.016s (-22.3% 🟢) 0.363s 5 1.91x
💻 Local Next.js (Turbopack) 8.123s 8.517s 0.394s 4 2.34x
💻 Local Nitro 8.771s (+5.0% 🔺) 9.273s (+2.8%) 0.503s 4 2.52x
Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.234s 2.009s 0.775s 15 1.00x
🐘 Postgres Express 1.246s (-0.9%) 2.009s (~) 0.762s 15 1.01x
🐘 Postgres Nitro 1.291s (+2.7%) 2.008s (~) 0.716s 15 1.05x
💻 Local Express 1.485s (-21.6% 🟢) 2.006s (-15.2% 🟢) 0.520s 15 1.20x
💻 Local Nitro 1.566s (-16.1% 🟢) 2.006s (-14.3% 🟢) 0.441s 15 1.27x
💻 Local Next.js (Turbopack) 1.860s 2.364s 0.504s 14 1.51x
Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.333s (~) 3.009s (~) 0.676s 10 1.00x
🐘 Postgres Next.js (Turbopack) 2.386s 3.009s 0.624s 10 1.02x
🐘 Postgres Nitro 2.399s (+2.5%) 3.009s (~) 0.610s 10 1.03x
💻 Local Express 2.589s (-17.3% 🟢) 3.007s (-20.1% 🟢) 0.418s 10 1.11x
💻 Local Next.js (Turbopack) 2.911s 3.564s 0.653s 9 1.25x
💻 Local Nitro 3.355s (+9.5% 🔺) 4.010s (+3.2%) 0.655s 8 1.44x
Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.474s (-0.7%) 4.011s (~) 0.536s 8 1.00x
🐘 Postgres Nitro 3.499s (+0.5%) 4.013s (~) 0.514s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.648s 4.012s 0.364s 8 1.05x
💻 Local Express 7.237s (-17.8% 🟢) 8.015s (-13.6% 🟢) 0.779s 4 2.08x
💻 Local Next.js (Turbopack) 8.354s 8.769s 0.415s 4 2.40x
💻 Local Nitro 9.417s (+3.0%) 10.025s (~) 0.609s 3 2.71x
workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.683s (-30.6% 🟢) 1.004s (-6.7% 🟢) 0.321s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.761s 1.006s 0.245s 60 1.11x
🐘 Postgres Express 0.812s (-3.2%) 1.006s (-1.7%) 0.194s 60 1.19x
🐘 Postgres Nitro 0.825s (+0.5%) 1.023s (+1.7%) 0.199s 59 1.21x
💻 Local Next.js (Turbopack) 0.846s 1.021s 0.176s 59 1.24x
💻 Local Nitro 0.997s (+1.7%) 1.361s (+24.4% 🔺) 0.364s 45 1.46x
workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.900s (-3.9%) 2.053s (-9.1% 🟢) 0.153s 44 1.00x
🐘 Postgres Next.js (Turbopack) 1.910s 2.100s 0.190s 43 1.01x
🐘 Postgres Nitro 1.980s (+2.7%) 2.376s (+13.1% 🔺) 0.396s 38 1.04x
💻 Local Express 2.220s (-26.4% 🟢) 3.008s (-16.1% 🟢) 0.787s 30 1.17x
💻 Local Next.js (Turbopack) 2.679s 3.008s 0.328s 30 1.41x
💻 Local Nitro 3.051s (+0.5%) 3.801s (+1.1%) 0.750s 24 1.61x
workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.890s (-2.5%) 4.077s (-6.7% 🟢) 0.188s 30 1.00x
🐘 Postgres Next.js (Turbopack) 3.922s 4.182s 0.260s 29 1.01x
🐘 Postgres Nitro 4.043s (-1.5%) 4.703s (+2.1%) 0.660s 26 1.04x
💻 Local Express 7.243s (-21.4% 🟢) 7.952s (-20.6% 🟢) 0.709s 16 1.86x
💻 Local Next.js (Turbopack) 8.685s 9.017s 0.333s 14 2.23x
💻 Local Nitro 9.318s (~) 9.942s (-0.8%) 0.624s 13 2.40x
workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.252s 1.007s 0.755s 60 1.00x
🐘 Postgres Express 0.279s (-1.4%) 1.007s (~) 0.728s 60 1.11x
🐘 Postgres Nitro 0.294s (+3.7%) 1.008s (~) 0.714s 60 1.17x
💻 Local Express 0.546s (-2.6%) 1.004s (~) 0.458s 60 2.17x
💻 Local Next.js (Turbopack) 0.594s 1.022s 0.427s 59 2.36x
💻 Local Nitro 0.634s (+4.8%) 1.039s (+1.7%) 0.405s 58 2.52x
workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.489s 1.007s 0.517s 90 1.00x
🐘 Postgres Express 0.495s (-2.8%) 1.007s (~) 0.511s 90 1.01x
🐘 Postgres Nitro 0.508s (+2.4%) 1.007s (~) 0.499s 90 1.04x
💻 Local Express 2.343s (-6.8% 🟢) 3.008s (~) 0.665s 30 4.79x
💻 Local Nitro 2.599s (+2.4%) 3.010s (~) 0.411s 30 5.31x
💻 Local Next.js (Turbopack) 2.605s 3.009s 0.404s 30 5.32x
workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.775s 1.007s 0.232s 120 1.00x
🐘 Postgres Express 0.787s (-3.9%) 1.008s (-1.0%) 0.220s 120 1.02x
🐘 Postgres Nitro 0.809s (+2.4%) 1.009s (~) 0.199s 119 1.04x
💻 Local Express 10.024s (-10.4% 🟢) 10.775s (-9.8% 🟢) 0.750s 12 12.94x
💻 Local Next.js (Turbopack) 10.620s 11.299s 0.679s 11 13.71x
💻 Local Nitro 11.644s (+4.1%) 12.026s (+3.1%) 0.382s 10 15.03x
Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.136s (-31.5% 🟢) 1.004s (~) 0.010s (-19.8% 🟢) 1.016s (~) 0.879s 10 1.00x
💻 Local Next.js (Turbopack) 0.179s 1.002s 0.012s 1.018s 0.839s 10 1.31x
🐘 Postgres Next.js (Turbopack) 0.191s 1.001s 0.002s 1.011s 0.820s 10 1.40x
💻 Local Nitro 0.207s (-2.9%) 1.004s (~) 0.013s (+0.8%) 1.019s (~) 0.812s 10 1.52x
🐘 Postgres Express 0.211s (+3.1%) 0.997s (~) 0.001s (-12.5% 🟢) 1.009s (~) 0.798s 10 1.55x
🐘 Postgres Nitro 0.215s (+5.0%) 0.998s (~) 0.001s (-6.7% 🟢) 1.011s (~) 0.796s 10 1.58x
stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.579s (-23.6% 🟢) 1.011s (-1.7%) 0.009s (-2.4%) 1.022s (-1.7%) 0.443s 59 1.00x
🐘 Postgres Next.js (Turbopack) 0.624s 1.009s 0.006s 1.024s 0.400s 59 1.08x
🐘 Postgres Express 0.627s (~) 1.022s (+1.6%) 0.005s (+22.9% 🔺) 1.039s (+1.6%) 0.412s 58 1.08x
🐘 Postgres Nitro 0.633s (+1.4%) 1.024s (+1.7%) 0.004s (-4.5%) 1.039s (+1.6%) 0.406s 58 1.09x
💻 Local Next.js (Turbopack) 0.669s 1.010s 0.010s 1.023s 0.354s 59 1.16x
💻 Local Nitro 0.857s (+2.2%) 1.013s (~) 0.010s (+4.2%) 1.117s (~) 0.260s 54 1.48x
10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.943s 1.230s 0.000s 1.250s 0.308s 48 1.00x
🐘 Postgres Express 0.965s (~) 1.194s (-6.6% 🟢) 0.000s (-100.0% 🟢) 1.208s (-7.5% 🟢) 0.243s 50 1.02x
🐘 Postgres Nitro 0.974s (~) 1.245s (~) 0.000s (+100.0% 🔺) 1.258s (~) 0.285s 48 1.03x
💻 Local Express 1.141s (-6.9% 🟢) 2.018s (~) 0.000s (-20.0% 🟢) 2.020s (~) 0.879s 30 1.21x
💻 Local Nitro 1.276s (+4.4%) 2.023s (~) 0.000s (+300.0% 🔺) 2.025s (~) 0.748s 30 1.35x
💻 Local Next.js (Turbopack) 1.469s 2.020s 0.000s 2.202s 0.733s 28 1.56x
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.769s (~) 2.142s (-1.6%) 0.000s (+Infinity% 🔺) 2.156s (-2.0%) 0.387s 28 1.00x
🐘 Postgres Nitro 1.785s (~) 2.175s (+1.6%) 0.000s (~) 2.189s (+0.7%) 0.404s 28 1.01x
🐘 Postgres Next.js (Turbopack) 1.884s 2.181s 0.000s 2.188s 0.304s 28 1.06x
💻 Local Express 3.347s (-3.5%) 3.907s (-3.1%) 0.001s (+17.2% 🔺) 3.910s (-3.1%) 0.563s 16 1.89x
💻 Local Next.js (Turbopack) 3.627s 4.097s 0.000s 4.103s 0.476s 15 2.05x
💻 Local Nitro 3.712s (+9.6% 🔺) 4.233s (+5.0%) 0.000s (-75.0% 🟢) 4.236s (+4.9%) 0.524s 15 2.10x

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Express 21/21
🐘 Postgres Next.js (Turbopack) 12/21
Fastest World by Framework

Winner determined by most benchmark wins

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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Makes deferred workflow discovery (“lazyDiscovery”) the default behavior for withWorkflow on the next branch, updates examples/docs accordingly, and adjusts workbench/e2e expectations to match the new default and warning text.

Changes:

  • Flip withWorkflow’s default workflows.lazyDiscovery behavior to enabled unless explicitly set to false.
  • Remove redundant lazyDiscovery: true overrides from Next.js workbench apps and update tests to validate the new default.
  • Reword the Next.js version fallback warning and update docs and e2e assertions to match.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
workbench/nextjs-webpack/next.config.ts Removes explicit lazyDiscovery: true now that it’s the default.
workbench/nextjs-turbopack/next.config.ts Removes explicit lazyDiscovery: true and keeps config minimal.
packages/next/src/index.ts Implements default-on lazyDiscovery behavior (opt-out with false).
packages/next/src/index.test.ts Adds unit tests asserting default/explicit true/explicit false env-var behavior.
packages/next/src/builder.ts Updates the fallback warning message when Next.js is too old for deferred mode.
packages/core/e2e/local-build.test.ts Updates e2e warning assertion to match the new warning text.
docs/content/docs/api-reference/workflow-next/with-workflow.mdx Updates docs to reflect default true and how to force eager discovery.
.changeset/lazy-discovery-default.md Adds changeset documenting the default change and opt-out.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

expect(process.env.WORKFLOW_NEXT_LAZY_DISCOVERY).toBe('1');
});

it('disables lazyDiscovery when explicitly set to false', async () => {
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

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

These it(...) blocks are marked async but don't await anything. Consider removing async (or adding awaited behavior if intended) to avoid misleading tests / potential lints about unused promises.

Suggested change
it('disables lazyDiscovery when explicitly set to false', async () => {
it('disables lazyDiscovery when explicitly set to false', () => {

Copilot uses AI. Check for mistakes.
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