Skip to content

Conversation

@VaguelySerious
Copy link
Member

No description provided.

Signed-off-by: Peter Wielander <[email protected]>
Signed-off-by: Peter Wielander <[email protected]>
Signed-off-by: Peter Wielander <[email protected]>
@changeset-bot
Copy link

changeset-bot bot commented Jan 13, 2026

🦋 Changeset detected

Latest commit: bff12eb

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

This PR includes changesets to release 7 packages
Name Type
@workflow/web-shared Patch
@workflow/web Patch
@workflow/cli Patch
workflow Patch
@workflow/world-testing Patch
@workflow/ai Patch
@workflow/docs-typecheck 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
Contributor

vercel bot commented Jan 13, 2026

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

Project Deployment Review Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Jan 13, 2026 9:55am
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jan 13, 2026 9:55am
example-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-astro-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-express-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-fastify-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-hono-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-nitro-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-nuxt-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-sveltekit-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workbench-vite-workflow Ready Ready Preview, Comment Jan 13, 2026 9:55am
workflow-docs Ready Ready Preview, Comment Jan 13, 2026 9:55am

@github-actions
Copy link
Contributor

github-actions bot commented Jan 13, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 374 0 11 385
✅ 💻 Local Development 342 0 8 350
✅ 📦 Local Production 342 0 8 350
✅ 🐘 Local Postgres 342 0 8 350
✅ 🪟 Windows 35 0 0 35
❌ 🌍 Community Worlds 135 17 0 152
Total 1570 17 35 1622

❌ Failed Tests

🌍 Community Worlds (17 failed)

mongodb (1 failed):

  • webhookWorkflow

redis (1 failed):

  • webhookWorkflow

starter (14 failed):

  • addTenWorkflow
  • addTenWorkflow
  • 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 catchability FatalError can be caught and detected with FatalError.is()
  • hookCleanupTestWorkflow - hook token reuse after workflow completion
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly

turso (1 failed):

  • webhookWorkflow

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 34 0 1
✅ example 34 0 1
✅ express 34 0 1
✅ fastify 34 0 1
✅ hono 34 0 1
✅ nextjs-turbopack 34 0 1
✅ nextjs-webpack 34 0 1
✅ nitro 34 0 1
✅ nuxt 34 0 1
✅ sveltekit 34 0 1
✅ vite 34 0 1
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 34 0 1
✅ express-stable 34 0 1
✅ fastify-stable 34 0 1
✅ hono-stable 34 0 1
✅ nextjs-turbopack-stable 35 0 0
✅ nextjs-webpack-stable 35 0 0
✅ nitro-stable 34 0 1
✅ nuxt-stable 34 0 1
✅ sveltekit-stable 34 0 1
✅ vite-stable 34 0 1
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 34 0 1
✅ express-stable 34 0 1
✅ fastify-stable 34 0 1
✅ hono-stable 34 0 1
✅ nextjs-turbopack-stable 35 0 0
✅ nextjs-webpack-stable 35 0 0
✅ nitro-stable 34 0 1
✅ nuxt-stable 34 0 1
✅ sveltekit-stable 34 0 1
✅ vite-stable 34 0 1
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 34 0 1
✅ express-stable 34 0 1
✅ fastify-stable 34 0 1
✅ hono-stable 34 0 1
✅ nextjs-turbopack-stable 35 0 0
✅ nextjs-webpack-stable 35 0 0
✅ nitro-stable 34 0 1
✅ nuxt-stable 34 0 1
✅ sveltekit-stable 34 0 1
✅ vite-stable 34 0 1
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 35 0 0
❌ 🌍 Community Worlds
App Passed Failed Skipped
✅ mongodb-dev 3 0 0
❌ mongodb 34 1 0
✅ redis-dev 3 0 0
❌ redis 34 1 0
✅ starter-dev 3 0 0
❌ starter 21 14 0
✅ turso-dev 3 0 0
❌ turso 34 1 0

📋 View full workflow run

@github-actions
Copy link
Contributor

github-actions bot commented Jan 13, 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 🥇 Next.js (Turbopack) 0.034s (-12.7% 🟢) 1.015s (~) 0.981s 10 1.00x
🌐 Starter Next.js (Turbopack) 0.039s (-4.0%) 1.015s (~) 0.976s 10 1.14x
🌐 Redis Next.js (Turbopack) 0.042s (+17.9% 🔺) 1.017s (~) 0.976s 10 1.23x
💻 Local Nitro 0.043s (+36.5% 🔺) 1.006s (~) 0.962s 10 1.28x
💻 Local Express 0.045s (+5.6% 🔺) 1.008s (~) 0.962s 10 1.34x
🌐 MongoDB Next.js (Turbopack) 0.097s (+112.0% 🔺) 1.015s (~) 0.918s 10 2.87x
🌐 Turso Next.js (Turbopack) 0.108s (+2.8%) 1.013s (~) 0.905s 10 3.19x
🐘 Postgres Express 0.226s (-22.5% 🟢) 1.013s (-0.7%) 0.787s 10 6.67x
🐘 Postgres Nitro 0.298s (+26.9% 🔺) 1.012s (-1.4%) 0.713s 10 8.83x
🐘 Postgres Next.js (Turbopack) 0.416s (+58.4% 🔺) 1.019s (~) 0.603s 10 12.30x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 0.550s (-11.5% 🟢) 1.515s (+6.1% 🔺) 0.965s 10 1.00x
▲ Vercel Express 0.565s (-2.7%) 1.486s (+0.7%) 0.921s 10 1.03x
▲ Vercel Next.js (Turbopack) 0.774s (-2.2%) 1.631s (-3.8%) 0.857s 10 1.41x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 1.084s (-1.4%) 2.011s (~) 0.927s 10 1.00x
🌐 Starter Next.js (Turbopack) 1.085s (~) 2.012s (~) 0.926s 10 1.00x
🌐 Redis Next.js (Turbopack) 1.100s (+2.1%) 2.012s (~) 0.912s 10 1.01x
💻 Local Nitro 1.113s (+3.1%) 2.005s (~) 0.892s 10 1.03x
💻 Local Express 1.114s (~) 2.006s (~) 0.892s 10 1.03x
🌐 Turso Next.js (Turbopack) 1.302s (~) 2.012s (~) 0.709s 10 1.20x
🌐 MongoDB Next.js (Turbopack) 1.311s (+1.1%) 2.014s (~) 0.703s 10 1.21x
🐘 Postgres Next.js (Turbopack) 1.773s (-5.3% 🟢) 2.017s (~) 0.243s 10 1.64x
🐘 Postgres Nitro 2.164s (-10.4% 🟢) 3.014s (~) 0.850s 10 2.00x
🐘 Postgres Express 2.179s (+2.6%) 3.013s (~) 0.833s 10 2.01x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.649s (-7.8% 🟢) 3.555s (-6.3% 🟢) 0.907s 10 1.00x
▲ Vercel Nitro 2.699s (+1.2%) 3.698s (~) 1.000s 10 1.02x
▲ Vercel Next.js (Turbopack) 2.748s (-1.8%) 3.588s (-3.9%) 0.840s 10 1.04x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 10.540s (-1.0%) 11.020s (~) 0.480s 5 1.00x
🌐 Starter Next.js (Turbopack) 10.600s (~) 11.011s (~) 0.411s 5 1.01x
🌐 Redis Next.js (Turbopack) 10.668s (+1.0%) 11.017s (~) 0.349s 5 1.01x
💻 Local Nitro 10.795s (+2.4%) 11.008s (~) 0.213s 5 1.02x
💻 Local Express 10.800s (~) 11.015s (~) 0.215s 5 1.02x
🌐 Turso Next.js (Turbopack) 12.169s (-0.5%) 13.024s (~) 0.855s 5 1.15x
🌐 MongoDB Next.js (Turbopack) 12.278s (+2.9%) 13.029s (+8.3% 🔺) 0.751s 5 1.16x
🐘 Postgres Next.js (Turbopack) 15.094s (+1.4%) 15.841s (+1.3%) 0.747s 5 1.43x
🐘 Postgres Nitro 18.390s (-9.7% 🟢) 18.634s (-11.4% 🟢) 0.244s 5 1.74x
🐘 Postgres Express 20.353s (-0.7%) 20.826s (-1.0%) 0.473s 5 1.93x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 22.101s (-3.6%) 22.637s (-4.4%) 0.536s 5 1.00x
▲ Vercel Nitro 22.746s (-1.1%) 23.660s (~) 0.914s 5 1.03x
▲ Vercel Next.js (Turbopack) 23.449s (+4.9%) 24.277s (+5.3% 🔺) 0.829s 5 1.06x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 1.348s (+1.8%) 2.011s (~) 0.663s 15 1.00x
💻 Local Next.js (Turbopack) 1.355s (-2.2%) 2.013s (~) 0.658s 15 1.01x
🌐 Starter Next.js (Turbopack) 1.362s (~) 2.008s (~) 0.646s 15 1.01x
💻 Local Nitro 1.416s (+4.6%) 2.005s (~) 0.589s 15 1.05x
💻 Local Express 1.427s (+1.7%) 2.007s (~) 0.580s 15 1.06x
🐘 Postgres Next.js (Turbopack) 1.633s (-5.2% 🟢) 2.015s (~) 0.382s 15 1.21x
🐘 Postgres Nitro 1.995s (-24.2% 🟢) 2.395s (-20.6% 🟢) 0.400s 13 1.48x
🌐 MongoDB Next.js (Turbopack) 2.148s (+0.9%) 3.016s (~) 0.869s 10 1.59x
🌐 Turso Next.js (Turbopack) 2.211s (~) 3.012s (~) 0.801s 10 1.64x
🐘 Postgres Express 2.362s (-2.8%) 3.011s (~) 0.649s 10 1.75x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.819s (-15.5% 🟢) 3.685s (-8.1% 🟢) 0.866s 9 1.00x
▲ Vercel Next.js (Turbopack) 2.833s (-2.4%) 3.604s (-3.0%) 0.771s 9 1.00x
▲ Vercel Express 2.997s (+7.9% 🔺) 3.746s (~) 0.749s 9 1.06x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 2.054s (-2.8%) 2.726s (-9.6% 🟢) 0.672s 12 1.00x
💻 Local Nitro 2.223s (+11.1% 🔺) 3.171s (+32.0% 🔺) 0.948s 10 1.08x
💻 Local Express 2.267s (+2.3%) 3.213s (+2.0%) 0.946s 10 1.10x
🌐 Starter Next.js (Turbopack) 2.469s (~) 3.009s (~) 0.539s 10 1.20x
🌐 Redis Next.js (Turbopack) 2.488s (+5.1% 🔺) 3.011s (~) 0.523s 10 1.21x
🐘 Postgres Next.js (Turbopack) 2.707s (+10.0% 🔺) 3.030s (~) 0.323s 10 1.32x
🐘 Postgres Nitro 2.721s (-7.6% 🟢) 3.012s (-3.3%) 0.291s 10 1.32x
🐘 Postgres Express 2.951s (-3.0%) 3.462s (-3.1%) 0.511s 9 1.44x
🌐 Turso Next.js (Turbopack) 4.695s (-1.1%) 5.182s (~) 0.487s 6 2.29x
🌐 MongoDB Next.js (Turbopack) 4.697s (~) 5.180s (~) 0.483s 6 2.29x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.238s (-19.3% 🟢) 3.752s (-18.5% 🟢) 0.514s 8 1.00x
▲ Vercel Express 3.341s (+1.4%) 3.754s (-3.1%) 0.413s 8 1.03x
▲ Vercel Nitro 3.366s (+3.5%) 4.071s (+13.6% 🔺) 0.705s 8 1.04x

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

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Starter 🥇 Next.js (Turbopack) 1.369s (-1.3%) 2.008s (~) 0.639s 15 1.00x
🌐 Redis Next.js (Turbopack) 1.376s (+2.6%) 2.010s (~) 0.634s 15 1.01x
💻 Local Next.js (Turbopack) 1.393s (~) 2.014s (~) 0.621s 15 1.02x
💻 Local Nitro 1.416s (+6.4% 🔺) 2.005s (~) 0.589s 15 1.03x
💻 Local Express 1.444s (+1.7%) 2.006s (~) 0.562s 15 1.06x
🐘 Postgres Next.js (Turbopack) 1.578s (-5.1% 🟢) 2.015s (~) 0.436s 15 1.15x
🐘 Postgres Nitro 1.771s (+3.9%) 2.010s (~) 0.238s 15 1.29x
🐘 Postgres Express 1.902s (-8.7% 🟢) 2.015s (-16.1% 🟢) 0.113s 15 1.39x
🌐 MongoDB Next.js (Turbopack) 2.145s (+1.4%) 3.012s (~) 0.868s 10 1.57x
🌐 Turso Next.js (Turbopack) 2.226s (-0.6%) 3.012s (~) 0.786s 10 1.63x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.738s (-6.9% 🟢) 3.595s (-4.2%) 0.857s 9 1.00x
▲ Vercel Express 2.806s (-0.7%) 3.754s (+0.6%) 0.949s 9 1.02x
▲ Vercel Nitro 2.823s (-1.7%) 3.674s (+2.3%) 0.851s 9 1.03x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 2.124s (-2.0%) 3.014s (-2.1%) 0.890s 10 1.00x
💻 Local Express 2.235s (-2.7%) 3.212s (-1.0%) 0.977s 10 1.05x
💻 Local Nitro 2.256s (+8.0% 🔺) 3.187s (+15.9% 🔺) 0.930s 10 1.06x
🐘 Postgres Express 2.406s (-16.8% 🟢) 3.011s (-3.3%) 0.605s 10 1.13x
🌐 Starter Next.js (Turbopack) 2.482s (~) 3.010s (~) 0.528s 10 1.17x
🌐 Redis Next.js (Turbopack) 2.486s (+5.0% 🔺) 3.012s (~) 0.526s 10 1.17x
🐘 Postgres Next.js (Turbopack) 2.570s (+4.6%) 3.029s (~) 0.459s 10 1.21x
🐘 Postgres Nitro 2.816s (+5.0%) 3.014s (~) 0.198s 10 1.33x
🌐 Turso Next.js (Turbopack) 4.622s (-3.9%) 5.180s (~) 0.559s 6 2.18x
🌐 MongoDB Next.js (Turbopack) 4.747s (+0.7%) 5.180s (~) 0.433s 6 2.23x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.062s (-5.6% 🟢) 3.723s (-2.3%) 0.660s 9 1.00x
▲ Vercel Next.js (Turbopack) 3.200s (-4.2%) 3.660s (-9.0% 🟢) 0.460s 9 1.04x
▲ Vercel Express 3.477s (+7.6% 🔺) 4.072s (+8.5% 🔺) 0.595s 8 1.14x

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

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.106s (-23.2% 🟢) 1.003s (~) 0.017s (+5.5% 🔺) 1.029s (~) 0.923s 10 1.00x
🌐 Starter Next.js (Turbopack) 0.129s (-1.0%) 1.006s (~) 0.000s (+Infinity% 🔺) 1.013s (~) 0.884s 10 1.22x
🌐 Redis Next.js (Turbopack) 0.150s (+31.4% 🔺) 1.004s (~) 0.000s (NaN%) 1.013s (~) 0.863s 10 1.41x
💻 Local Nitro 0.178s (+45.5% 🔺) 0.992s (-0.6%) 0.015s (-6.3% 🟢) 1.020s (~) 0.843s 10 1.67x
💻 Local Express 0.183s (+4.7%) 0.992s (~) 0.017s (+15.9% 🔺) 1.023s (~) 0.841s 10 1.72x
🌐 MongoDB Next.js (Turbopack) 0.480s (-2.7%) 0.971s (+2.1%) 0.000s (~) 1.014s (~) 0.533s 10 4.53x
🌐 Turso Next.js (Turbopack) 0.522s (+2.4%) 0.927s (-2.8%) 0.000s (-100.0% 🟢) 1.012s (~) 0.490s 10 4.92x
🐘 Postgres Express 1.294s (-44.4% 🟢) 1.747s (-35.6% 🟢) 0.000s (NaN%) 2.013s (-33.2% 🟢) 0.719s 10 12.19x
🐘 Postgres Nitro 1.323s (-36.7% 🟢) 1.711s (-39.0% 🟢) 0.000s (~) 2.011s (-31.0% 🟢) 0.689s 10 12.47x
🐘 Postgres Next.js (Turbopack) 1.345s (+5.4% 🔺) 1.702s (+9.9% 🔺) 0.000s (-100.0% 🟢) 2.021s (+11.0% 🔺) 0.676s 10 12.68x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 10.417s (+250.5% 🔺) 8.650s (+161.3% 🔺) 0.322s (-36.1% 🟢) 11.450s (+166.5% 🔺) 1.033s 10 1.00x
▲ Vercel Nitro 10.863s (+267.2% 🔺) 9.098s (+191.2% 🔺) 0.658s (-2.3%) 12.225s (+188.1% 🔺) 1.362s 10 1.04x
▲ Vercel Express 11.499s (+296.1% 🔺) 10.433s (+227.5% 🔺) 0.330s (-33.7% 🟢) 12.774s (+208.1% 🔺) 1.275s 10 1.10x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 8/8
🐘 Postgres Next.js (Turbopack) 5/8
▲ Vercel Nitro 3/8
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 💻 Local 8/8
Next.js (Turbopack) 💻 Local 6/8
Nitro 💻 Local 8/8
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
  • 🌐 Starter: Community world (local development)
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


// Track when we've completed the initial load
useEffect(() => {
if (!loading && !hasLoadedOnce) {
Copy link
Contributor

@vercel vercel bot Jan 13, 2026

Choose a reason for hiding this comment

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

On refresh, runs-table shows "No workflow runs found" instead of loading skeleton, causing flicker from data to empty message

Fix on Vercel

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.

2 participants