Skip to content

[core] Extend flow route duration to "max" and fail runs where replay takes too long#1567

Draft
VaguelySerious wants to merge 3 commits intomainfrom
peter/increase-flow-max
Draft

[core] Extend flow route duration to "max" and fail runs where replay takes too long#1567
VaguelySerious wants to merge 3 commits intomainfrom
peter/increase-flow-max

Conversation

@VaguelySerious
Copy link
Copy Markdown
Member

No description provided.

Signed-off-by: Peter Wielander <mittgfu@gmail.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 31, 2026

🦋 Changeset detected

Latest commit: daba9ae

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

This PR includes changesets to release 20 packages
Name Type
@workflow/sveltekit Patch
@workflow/builders Patch
@workflow/errors Patch
@workflow/core Patch
@workflow/next Patch
workflow Patch
@workflow/astro Patch
@workflow/cli Patch
@workflow/nest Patch
@workflow/nitro Patch
@workflow/rollup Patch
@workflow/vite Patch
@workflow/vitest Patch
@workflow/world-local Patch
@workflow/world-postgres Patch
@workflow/world-vercel Patch
@workflow/web-shared Patch
@workflow/world-testing Patch
@workflow/ai 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 Mar 31, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ 💻 Local Development 830 0 178 1008
✅ 📦 Local Production 830 0 178 1008
✅ 🐘 Local Postgres 830 0 178 1008
✅ 🪟 Windows 76 0 8 84
❌ 🌍 Community Worlds 132 60 24 216
✅ 📋 Other 210 0 42 252
Total 2908 60 608 3576

❌ Failed Tests

🌍 Community Worlds (60 failed)

mongodb (3 failed):

  • hookWorkflow is not resumable via public webhook endpoint
  • webhookWorkflow
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously

redis (2 failed):

  • hookWorkflow is not resumable via public webhook endpoint
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously

turso (55 failed):

  • addTenWorkflow
  • addTenWorkflow
  • wellKnownAgentWorkflow (.well-known/agent)
  • should work with react rendering in step
  • promiseAllWorkflow
  • promiseRaceWorkflow
  • promiseAnyWorkflow
  • importedStepOnlyWorkflow
  • hookWorkflow
  • hookWorkflow is not resumable via public webhook endpoint
  • webhookWorkflow
  • sleepingWorkflow
  • parallelSleepWorkflow
  • nullByteWorkflow
  • workflowAndStepMetadataWorkflow
  • fetchWorkflow
  • promiseRaceStressTestWorkflow
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument
  • closureVariableWorkflow - nested step functions with closure variables
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly
  • Calculator.calculate - static workflow method using static step methods from another class
  • AllInOneService.processNumber - static workflow method using sibling static step methods
  • ChainableService.processWithThis - static step methods using this to reference the class
  • thisSerializationWorkflow - step function invoked with .call() and .apply()
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE
  • instanceMethodStepWorkflow - instance methods with "use step" directive
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument
  • cancelRun - cancelling a running workflow
  • cancelRun via CLI - cancelling a running workflow
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control)
  • importMetaUrlWorkflow - import.meta.url is available in step bundles

Details by Category

✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 70 0 14
✅ express-stable 70 0 14
✅ fastify-stable 70 0 14
✅ hono-stable 70 0 14
✅ nextjs-turbopack-canary 59 0 25
✅ nextjs-turbopack-stable 76 0 8
✅ nextjs-webpack-canary 59 0 25
✅ nextjs-webpack-stable 76 0 8
✅ nitro-stable 70 0 14
✅ nuxt-stable 70 0 14
✅ sveltekit-stable 70 0 14
✅ vite-stable 70 0 14
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 70 0 14
✅ express-stable 70 0 14
✅ fastify-stable 70 0 14
✅ hono-stable 70 0 14
✅ nextjs-turbopack-canary 59 0 25
✅ nextjs-turbopack-stable 76 0 8
✅ nextjs-webpack-canary 59 0 25
✅ nextjs-webpack-stable 76 0 8
✅ nitro-stable 70 0 14
✅ nuxt-stable 70 0 14
✅ sveltekit-stable 70 0 14
✅ vite-stable 70 0 14
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 70 0 14
✅ express-stable 70 0 14
✅ fastify-stable 70 0 14
✅ hono-stable 70 0 14
✅ nextjs-turbopack-canary 59 0 25
✅ nextjs-turbopack-stable 76 0 8
✅ nextjs-webpack-canary 59 0 25
✅ nextjs-webpack-stable 76 0 8
✅ nitro-stable 70 0 14
✅ nuxt-stable 70 0 14
✅ sveltekit-stable 70 0 14
✅ vite-stable 70 0 14
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 76 0 8
❌ 🌍 Community Worlds
App Passed Failed Skipped
✅ mongodb-dev 5 0 0
❌ mongodb 56 3 8
✅ redis-dev 5 0 0
❌ redis 57 2 8
✅ turso-dev 5 0 0
❌ turso 4 55 8
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 70 0 14
✅ e2e-local-postgres-nest-stable 70 0 14
✅ e2e-local-prod-nest-stable 70 0 14

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: failure
  • Local Dev: success
  • Local Prod: success
  • Local Postgres: success
  • Windows: success

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 31, 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.042s (-6.3% 🟢) 1.005s (~) 0.963s 10 1.00x
💻 Local Express 0.045s (~) 1.005s (~) 0.961s 10 1.08x
💻 Local Next.js (Turbopack) 0.050s (-4.2%) 1.005s (~) 0.955s 10 1.20x
🌐 Redis Next.js (Turbopack) 0.050s (+13.8% 🔺) 1.005s (~) 0.955s 10 1.21x
🐘 Postgres Nitro 0.062s (-11.0% 🟢) 1.010s (~) 0.948s 10 1.49x
🐘 Postgres Express 0.063s (-9.1% 🟢) 1.012s (~) 0.949s 10 1.51x
🐘 Postgres Next.js (Turbopack) 0.065s (-2.5%) 1.011s (~) 0.946s 10 1.57x
workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 1.120s (~) 2.006s (~) 0.886s 10 1.00x
🌐 Redis Next.js (Turbopack) 1.123s (+0.9%) 2.007s (~) 0.884s 10 1.00x
💻 Local Nitro 1.129s (~) 2.005s (~) 0.876s 10 1.01x
💻 Local Express 1.133s (~) 2.007s (~) 0.874s 10 1.01x
🐘 Postgres Next.js (Turbopack) 1.142s (~) 2.013s (~) 0.871s 10 1.02x
🐘 Postgres Express 1.147s (~) 2.011s (~) 0.865s 10 1.02x
🐘 Postgres Nitro 1.147s (~) 2.011s (~) 0.864s 10 1.02x
workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 10.754s (+1.5%) 11.022s (~) 0.268s 3 1.00x
💻 Local Next.js (Turbopack) 10.844s (~) 11.024s (~) 0.180s 3 1.01x
🐘 Postgres Nitro 10.884s (~) 11.024s (~) 0.141s 3 1.01x
💻 Local Nitro 10.889s (~) 11.022s (~) 0.133s 3 1.01x
🐘 Postgres Express 10.895s (-0.5%) 11.024s (~) 0.129s 3 1.01x
🐘 Postgres Next.js (Turbopack) 10.900s (~) 11.021s (~) 0.121s 3 1.01x
💻 Local Express 10.951s (~) 11.024s (~) 0.073s 3 1.02x
workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 14.220s (+2.4%) 15.028s (+5.6% 🔺) 0.808s 4 1.00x
🐘 Postgres Next.js (Turbopack) 14.441s (~) 15.027s (~) 0.586s 4 1.02x
🐘 Postgres Express 14.501s (-0.7%) 15.022s (~) 0.521s 4 1.02x
💻 Local Next.js (Turbopack) 14.650s (~) 15.029s (~) 0.379s 4 1.03x
🐘 Postgres Nitro 14.656s (~) 15.032s (~) 0.375s 4 1.03x
💻 Local Nitro 14.938s (~) 15.028s (~) 0.090s 4 1.05x
💻 Local Express 14.984s (~) 15.030s (~) 0.046s 4 1.05x
workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 13.316s (+5.6% 🔺) 14.026s (+7.7% 🔺) 0.709s 7 1.00x
🐘 Postgres Next.js (Turbopack) 13.787s (-1.1%) 14.023s (-1.0%) 0.236s 7 1.04x
🐘 Postgres Express 13.999s (-2.8%) 14.309s (-4.8%) 0.310s 7 1.05x
🐘 Postgres Nitro 14.009s (-0.7%) 14.456s (-1.9%) 0.447s 7 1.05x
💻 Local Next.js (Turbopack) 16.139s (-0.8%) 16.696s (-2.0%) 0.558s 6 1.21x
💻 Local Express 16.412s (-1.3%) 17.032s (~) 0.620s 6 1.23x
💻 Local Nitro 16.545s (~) 17.030s (~) 0.485s 6 1.24x
Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.233s (~) 2.012s (~) 0.779s 15 1.00x
🐘 Postgres Express 1.269s (~) 2.011s (~) 0.742s 15 1.03x
🐘 Postgres Nitro 1.284s (+1.7%) 2.012s (~) 0.728s 15 1.04x
🌐 Redis Next.js (Turbopack) 1.285s (+5.0% 🔺) 2.007s (~) 0.722s 15 1.04x
💻 Local Nitro 1.500s (-2.2%) 2.005s (~) 0.505s 15 1.22x
💻 Local Express 1.510s (-1.9%) 2.006s (~) 0.496s 15 1.23x
💻 Local Next.js (Turbopack) 1.528s (-2.9%) 2.005s (~) 0.478s 15 1.24x
Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.351s (-0.6%) 3.011s (~) 0.660s 10 1.00x
🐘 Postgres Nitro 2.374s (+1.1%) 3.010s (~) 0.636s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.404s (-1.6%) 3.011s (~) 0.607s 10 1.02x
🌐 Redis Next.js (Turbopack) 2.559s (+6.3% 🔺) 3.008s (~) 0.449s 10 1.09x
💻 Local Express 2.850s (-2.6%) 3.208s (+6.6% 🔺) 0.358s 10 1.21x
💻 Local Nitro 2.880s (-2.8%) 3.108s (-10.0% 🟢) 0.228s 10 1.22x
💻 Local Next.js (Turbopack) 3.052s (+8.9% 🔺) 3.886s (+12.5% 🔺) 0.833s 8 1.30x
Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.461s (-0.8%) 4.012s (~) 0.551s 8 1.00x
🐘 Postgres Nitro 3.500s (+0.7%) 4.014s (~) 0.514s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.675s (+0.9%) 4.012s (~) 0.337s 8 1.06x
🌐 Redis Next.js (Turbopack) 4.174s (+6.8% 🔺) 5.011s (+21.2% 🔺) 0.837s 6 1.21x
💻 Local Express 7.580s (-7.1% 🟢) 8.272s (-8.3% 🟢) 0.692s 4 2.19x
💻 Local Next.js (Turbopack) 7.862s (+0.6%) 8.518s (~) 0.655s 4 2.27x
💻 Local Nitro 8.250s (+2.7%) 8.772s (+2.9%) 0.522s 4 2.38x
Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.222s (-1.0%) 2.009s (~) 0.787s 15 1.00x
🐘 Postgres Express 1.259s (~) 2.010s (~) 0.751s 15 1.03x
🐘 Postgres Nitro 1.261s (-0.6%) 2.010s (~) 0.749s 15 1.03x
🌐 Redis Next.js (Turbopack) 1.378s (+11.8% 🔺) 2.073s (+3.3%) 0.695s 15 1.13x
💻 Local Next.js (Turbopack) 1.523s (+1.1%) 2.006s (~) 0.483s 15 1.25x
💻 Local Nitro 1.526s (-3.2%) 2.005s (~) 0.480s 15 1.25x
💻 Local Express 1.583s (+1.7%) 2.006s (~) 0.423s 15 1.30x
Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.328s (~) 3.010s (~) 0.682s 10 1.00x
🐘 Postgres Nitro 2.353s (~) 3.011s (~) 0.658s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.385s (~) 3.012s (~) 0.626s 10 1.02x
🌐 Redis Next.js (Turbopack) 2.588s (+7.2% 🔺) 3.008s (~) 0.420s 10 1.11x
💻 Local Express 2.850s (-8.7% 🟢) 3.008s (-22.6% 🟢) 0.158s 10 1.22x
💻 Local Next.js (Turbopack) 2.912s (-4.0%) 3.564s (+3.2%) 0.653s 9 1.25x
💻 Local Nitro 2.956s (-3.0%) 3.676s (-5.4% 🟢) 0.720s 9 1.27x
Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.489s (~) 4.011s (~) 0.523s 8 1.00x
🐘 Postgres Express 3.494s (~) 4.011s (~) 0.517s 8 1.00x
🐘 Postgres Next.js (Turbopack) 3.636s (-1.4%) 4.013s (~) 0.377s 8 1.04x
🌐 Redis Next.js (Turbopack) 4.306s (+10.0% 🔺) 4.868s (+9.7% 🔺) 0.562s 7 1.23x
💻 Local Express 8.306s (-6.2% 🟢) 9.022s (-2.7%) 0.716s 4 2.38x
💻 Local Nitro 8.665s (+0.5%) 9.026s (~) 0.361s 4 2.48x
💻 Local Next.js (Turbopack) 9.130s (+10.6% 🔺) 9.519s (+11.8% 🔺) 0.388s 4 2.62x
workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 0.678s (+18.4% 🔺) 1.004s (-1.6%) 0.326s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.773s (-4.1%) 1.024s (+1.6%) 0.251s 59 1.14x
🐘 Postgres Express 0.819s (-2.6%) 1.007s (~) 0.188s 60 1.21x
💻 Local Next.js (Turbopack) 0.852s (~) 1.021s (~) 0.169s 59 1.26x
🐘 Postgres Nitro 0.866s (+2.5%) 1.024s (+1.7%) 0.158s 59 1.28x
💻 Local Nitro 0.968s (-2.0%) 1.076s (-8.9% 🟢) 0.107s 56 1.43x
💻 Local Express 1.033s (+5.2% 🔺) 1.854s (+57.0% 🔺) 0.821s 33 1.52x
workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 1.630s (+25.8% 🔺) 2.006s (~) 0.376s 45 1.00x
🐘 Postgres Next.js (Turbopack) 1.858s (-5.6% 🟢) 2.030s (-10.1% 🟢) 0.172s 45 1.14x
🐘 Postgres Express 1.981s (-2.0%) 2.284s (-13.4% 🟢) 0.303s 40 1.22x
🐘 Postgres Nitro 2.048s (+0.8%) 2.798s (+3.0%) 0.750s 33 1.26x
💻 Local Next.js (Turbopack) 2.706s (-0.7%) 3.008s (-1.1%) 0.302s 30 1.66x
💻 Local Nitro 3.000s (-0.6%) 3.416s (-5.3% 🟢) 0.415s 27 1.84x
💻 Local Express 3.036s (~) 3.689s (+2.9%) 0.653s 25 1.86x
workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 3.340s (+27.5% 🔺) 4.009s (+31.1% 🔺) 0.669s 30 1.00x
🐘 Postgres Next.js (Turbopack) 3.770s (-4.1%) 4.045s (-4.9%) 0.275s 30 1.13x
🐘 Postgres Express 3.958s (-4.0%) 4.296s (-11.5% 🟢) 0.338s 28 1.19x
🐘 Postgres Nitro 4.200s (+2.4%) 5.013s (+4.2%) 0.813s 24 1.26x
💻 Local Next.js (Turbopack) 8.747s (~) 9.018s (~) 0.271s 14 2.62x
💻 Local Express 8.940s (-2.8%) 9.248s (-7.7% 🟢) 0.308s 13 2.68x
💻 Local Nitro 9.224s (+0.7%) 9.864s (+0.8%) 0.639s 13 2.76x
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.262s (-0.6%) 1.008s (~) 0.746s 60 1.00x
🐘 Postgres Express 0.289s (-2.5%) 1.008s (~) 0.719s 60 1.10x
🐘 Postgres Nitro 0.293s (-0.8%) 1.008s (~) 0.715s 60 1.12x
🌐 Redis Next.js (Turbopack) 0.375s (+41.0% 🔺) 1.004s (~) 0.629s 60 1.43x
💻 Local Next.js (Turbopack) 0.556s (-4.4%) 1.005s (~) 0.448s 60 2.12x
💻 Local Express 0.556s (-8.8% 🟢) 1.005s (-1.7%) 0.448s 60 2.13x
💻 Local Nitro 0.600s (+3.5%) 1.004s (~) 0.405s 60 2.29x
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.488s (-2.4%) 1.008s (~) 0.520s 90 1.00x
🐘 Postgres Express 0.502s (-4.2%) 1.008s (~) 0.506s 90 1.03x
🐘 Postgres Nitro 0.506s (-1.9%) 1.007s (~) 0.501s 90 1.04x
🌐 Redis Next.js (Turbopack) 1.172s (+8.6% 🔺) 2.006s (+7.7% 🔺) 0.834s 45 2.40x
💻 Local Express 2.379s (-6.1% 🟢) 3.009s (~) 0.630s 30 4.88x
💻 Local Nitro 2.530s (-0.9%) 3.009s (~) 0.479s 30 5.19x
💻 Local Next.js (Turbopack) 2.626s (-0.7%) 3.009s (~) 0.383s 30 5.38x
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.779s (+1.7%) 1.008s (~) 0.229s 120 1.00x
🐘 Postgres Express 0.781s (-5.0% 🟢) 1.009s (~) 0.228s 119 1.00x
🐘 Postgres Nitro 0.793s (-1.2%) 1.017s (+0.7%) 0.224s 119 1.02x
🌐 Redis Next.js (Turbopack) 2.701s (+4.1%) 3.007s (~) 0.306s 40 3.47x
💻 Local Express 10.498s (-6.7% 🟢) 11.028s (-6.9% 🟢) 0.531s 11 13.48x
💻 Local Next.js (Turbopack) 10.756s (-1.4%) 11.300s (-1.6%) 0.544s 11 13.81x
💻 Local Nitro 11.156s (~) 11.844s (+0.8%) 0.688s 11 14.33x
Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.177s (+0.9%) 1.002s (~) 0.012s (+6.0% 🔺) 1.019s (~) 0.842s 10 1.00x
🌐 Redis Next.js (Turbopack) 0.177s (+25.9% 🔺) 1.001s (~) 0.001s (+7.7% 🔺) 1.008s (~) 0.831s 10 1.00x
🐘 Postgres Next.js (Turbopack) 0.191s (-3.9%) 1.000s (~) 0.001s (+8.3% 🔺) 1.011s (~) 0.819s 10 1.08x
🐘 Postgres Express 0.203s (-7.9% 🟢) 0.995s (~) 0.002s (+7.1% 🔺) 1.011s (~) 0.808s 10 1.15x
💻 Local Nitro 0.203s (~) 1.003s (~) 0.012s (+6.4% 🔺) 1.017s (~) 0.814s 10 1.15x
💻 Local Express 0.209s (+0.9%) 1.003s (~) 0.010s (-15.7% 🟢) 1.016s (~) 0.807s 10 1.18x
🐘 Postgres Nitro 0.212s (~) 0.993s (~) 0.002s (+33.3% 🔺) 1.013s (~) 0.801s 10 1.20x
stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 0.479s (+26.2% 🔺) 1.001s (~) 0.005s (+67.1% 🔺) 1.013s (~) 0.534s 60 1.00x
🐘 Postgres Nitro 0.599s (-4.0%) 1.001s (~) 0.004s (-2.9%) 1.023s (~) 0.424s 59 1.25x
🐘 Postgres Express 0.602s (-3.2%) 1.004s (~) 0.004s (-5.1% 🟢) 1.023s (~) 0.421s 59 1.26x
🐘 Postgres Next.js (Turbopack) 0.628s (+2.6%) 1.007s (~) 0.004s (+2.6%) 1.024s (~) 0.396s 59 1.31x
💻 Local Next.js (Turbopack) 0.674s (~) 1.008s (-1.7%) 0.009s (+2.0%) 1.023s (-1.6%) 0.349s 59 1.41x
💻 Local Nitro 0.713s (-2.0%) 1.009s (~) 0.009s (+6.8% 🔺) 1.022s (~) 0.309s 59 1.49x
💻 Local Express 0.754s (+3.6%) 1.010s (~) 0.009s (+2.4%) 1.022s (~) 0.268s 59 1.57x
10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 0.877s (+4.3%) 1.000s (~) 0.000s (+250.0% 🔺) 1.004s (~) 0.128s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.959s (-2.1%) 1.154s (-11.6% 🟢) 0.000s (-11.5% 🟢) 1.163s (-11.4% 🟢) 0.204s 52 1.09x
🐘 Postgres Nitro 0.961s (-4.0%) 1.191s (-12.1% 🟢) 0.000s (+10.0% 🔺) 1.209s (-12.4% 🟢) 0.248s 50 1.10x
🐘 Postgres Express 0.970s (~) 1.186s (-3.0%) 0.000s (+276.5% 🔺) 1.210s (-3.3%) 0.240s 51 1.11x
💻 Local Nitro 1.227s (-1.6%) 2.021s (~) 0.000s (-9.1% 🟢) 2.023s (~) 0.796s 30 1.40x
💻 Local Express 1.239s (~) 2.021s (~) 0.000s (+100.0% 🔺) 2.024s (~) 0.785s 30 1.41x
💻 Local Next.js (Turbopack) 1.314s (+1.6%) 2.020s (~) 0.000s (+25.0% 🔺) 2.024s (~) 0.710s 30 1.50x
fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 1.562s (+0.7%) 2.002s (-1.6%) 0.000s (-100.0% 🟢) 2.007s (-1.6%) 0.445s 30 1.00x
🐘 Postgres Nitro 1.749s (-2.5%) 2.098s (-2.0%) 0.000s (-100.0% 🟢) 2.113s (-1.9%) 0.364s 29 1.12x
🐘 Postgres Express 1.799s (+1.2%) 2.100s (-0.9%) 0.000s (+Infinity% 🔺) 2.115s (-2.4%) 0.316s 29 1.15x
🐘 Postgres Next.js (Turbopack) 1.870s (-2.4%) 2.181s (+1.7%) 0.000s (~) 2.189s (+1.6%) 0.319s 28 1.20x
💻 Local Nitro 3.511s (-2.8%) 4.098s (~) 0.001s (+44.4% 🔺) 4.102s (~) 0.590s 15 2.25x
💻 Local Express 3.517s (+1.5%) 4.031s (~) 0.001s (+40.0% 🔺) 4.037s (~) 0.520s 15 2.25x
💻 Local Next.js (Turbopack) 3.655s (-1.1%) 4.164s (~) 0.001s (+44.4% 🔺) 4.170s (~) 0.515s 15 2.34x

Summary

Fastest Framework by World

Winner determined by most benchmark wins

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

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 19/21
Next.js (Turbopack) 🌐 Redis 9/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


Some benchmark jobs failed:

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

Check the workflow run for details.

@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Mar 31, 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 Mar 31, 2026 8:03pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Mar 31, 2026 8:03pm
example-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-astro-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-express-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-fastify-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-hono-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-nitro-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-nuxt-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workbench-vite-workflow Ready Ready Preview, Comment Mar 31, 2026 8:03pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Mar 31, 2026 8:03pm
workflow-swc-playground Ready Ready Preview, Comment Mar 31, 2026 8:03pm

Signed-off-by: Peter Wielander <mittgfu@gmail.com>
Signed-off-by: Peter Wielander <mittgfu@gmail.com>
@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Mar 31, 2026

Deployment failed with the following error:

Invalid request: `attribution.gitUser` should NOT have additional property `isBot`.

@VaguelySerious VaguelySerious changed the title [core] Fail runs when replays take longer than 300s [core] Extend flow route duration to "max" and fail runs where replay takes too long Mar 31, 2026
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.

1 participant