Skip to content

Add loading skeleton to the new trace viewer#2164

Open
mitul-s wants to merge 7 commits into
mainfrom
ms/add-loading-state
Open

Add loading skeleton to the new trace viewer#2164
mitul-s wants to merge 7 commits into
mainfrom
ms/add-loading-state

Conversation

@mitul-s
Copy link
Copy Markdown
Contributor

@mitul-s mitul-s commented May 29, 2026

What

Adds a loading skeleton for the new trace viewer and a couple of related polish items.

  • Loading skeleton (trace-viewer-skeleton.tsx) — mirrors the real viewer's geometry (340px sidebar column, 1px gutter, h-10 rows, h-6 bars, 16px timeline inset, matching paddings/gaps) so there's no layout shift when real data arrives. Wired in via a new loading prop on NewTraceViewer, guarded by events.length === 0 so it doesn't flash over live content during revalidation.
  • Detail panel closed by defaultActiveSpanProvider no longer pre-selects the first span; the panel now opens only on user interaction.
  • Skeleton polish — no pulse animation, and dimensions tuned to be 1:1 with the real header/rows/bars.

Notes

@workflow/web only changes to pass the loading prop through from run-detail-view.tsx.

🤖 Generated with Claude Code

mitul-s and others added 3 commits May 29, 2026 14:48
@mitul-s mitul-s requested a review from a team as a code owner May 29, 2026 18:50
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 29, 2026

🦋 Changeset detected

Latest commit: 977d1ac

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

This PR includes changesets to release 16 packages
Name Type
@workflow/web-shared Patch
@workflow/web Patch
@workflow/cli Patch
workflow Patch
@workflow/world-testing Patch
@workflow/core Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/vitest 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
Copy link
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 29, 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.040s (-8.4% 🟢) 1.006s (~) 0.966s 10 1.00x
💻 Local Express 0.040s (-9.0% 🟢) 1.007s (~) 0.967s 10 1.02x
💻 Local Next.js (Turbopack) 0.064s 1.005s 0.941s 10 1.62x
🐘 Postgres Next.js (Turbopack) 0.068s 1.012s 0.944s 10 1.72x
🐘 Postgres Nitro 0.069s (-27.1% 🟢) 1.013s (-2.9%) 0.943s 10 1.76x
🐘 Postgres Express 0.082s (+40.9% 🔺) 1.027s (+1.6%) 0.945s 10 2.07x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 0.315s (-23.2% 🟢) 2.351s (-6.3% 🟢) 2.036s 10 1.00x
▲ Vercel Next.js (Turbopack) 0.365s (+45.0% 🔺) 2.578s (+10.5% 🔺) 2.213s 10 1.16x
▲ Vercel Express 0.377s (+60.2% 🔺) 2.471s (+15.7% 🔺) 2.094s 10 1.20x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.088s (-3.8%) 2.006s (~) 0.918s 10 1.00x
🐘 Postgres Express 1.091s (-4.9%) 2.008s (~) 0.917s 10 1.00x
💻 Local Express 1.093s (-2.9%) 2.006s (~) 0.912s 10 1.00x
🐘 Postgres Nitro 1.102s (-3.3%) 2.009s (~) 0.907s 10 1.01x
💻 Local Next.js (Turbopack) 1.132s 2.006s 0.874s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.135s 2.009s 0.874s 10 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.755s (-54.9% 🟢) 3.461s (-41.4% 🟢) 1.706s 10 1.00x
▲ Vercel Express 1.814s (-3.2%) 3.380s (-11.2% 🟢) 1.566s 10 1.03x
▲ Vercel Next.js (Turbopack) 1.815s (-10.8% 🟢) 4.023s (+5.0% 🔺) 2.208s 10 1.03x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.486s (-4.2%) 11.021s (~) 0.535s 3 1.00x
💻 Local Express 10.498s (-3.9%) 11.023s (~) 0.525s 3 1.00x
🐘 Postgres Nitro 10.561s (-2.9%) 11.020s (~) 0.459s 3 1.01x
🐘 Postgres Express 10.570s (-3.6%) 11.030s (~) 0.460s 3 1.01x
💻 Local Next.js (Turbopack) 10.786s 11.023s 0.237s 3 1.03x
🐘 Postgres Next.js (Turbopack) 10.842s 11.024s 0.182s 3 1.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 14.205s (-40.1% 🟢) 15.938s (-36.5% 🟢) 1.733s 2 1.00x
▲ Vercel Express 14.213s (-16.3% 🟢) 15.680s (-21.7% 🟢) 1.467s 2 1.00x
▲ Vercel Next.js (Turbopack) 14.265s (-17.6% 🟢) 16.534s (-14.8% 🟢) 2.268s 2 1.00x

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

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.661s (-9.3% 🟢) 14.028s (-12.5% 🟢) 0.367s 5 1.00x
💻 Local Express 13.670s (-8.7% 🟢) 14.027s (-6.7% 🟢) 0.357s 5 1.00x
🐘 Postgres Nitro 13.796s (-5.5% 🟢) 14.019s (-6.7% 🟢) 0.223s 5 1.01x
🐘 Postgres Express 14.175s (-2.8%) 14.420s (-4.0%) 0.245s 5 1.04x
💻 Local Next.js (Turbopack) 14.315s 15.031s 0.716s 4 1.05x
🐘 Postgres Next.js (Turbopack) 14.524s 15.023s 0.499s 4 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 22.205s (-57.8% 🟢) 24.548s (-55.0% 🟢) 2.343s 3 1.00x
▲ Vercel Express 22.657s (-55.0% 🟢) 24.316s (-53.7% 🟢) 1.659s 3 1.02x
▲ Vercel Nitro 22.760s (-64.7% 🟢) 24.617s (-63.1% 🟢) 1.857s 3 1.02x

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

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 12.347s (-25.6% 🟢) 13.025s (-23.5% 🟢) 0.679s 7 1.00x
💻 Local Nitro 12.415s (-26.0% 🟢) 13.024s (-23.5% 🟢) 0.609s 7 1.01x
🐘 Postgres Nitro 12.598s (-9.8% 🟢) 13.019s (-9.0% 🟢) 0.421s 7 1.02x
🐘 Postgres Express 12.643s (-9.7% 🟢) 13.184s (-9.7% 🟢) 0.541s 7 1.02x
💻 Local Next.js (Turbopack) 13.727s 14.028s 0.301s 7 1.11x
🐘 Postgres Next.js (Turbopack) 14.005s 14.448s 0.444s 7 1.13x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 31.287s (-92.1% 🟢) 33.872s (-91.4% 🟢) 2.584s 3 1.00x
▲ Vercel Nitro 31.318s (-92.6% 🟢) 33.552s (-92.1% 🟢) 2.234s 3 1.00x
▲ Vercel Express 32.895s (-72.9% 🟢) 35.085s (-71.6% 🟢) 2.190s 3 1.05x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.181s (-7.3% 🟢) 2.007s (~) 0.826s 15 1.00x
💻 Local Nitro 1.186s (-27.3% 🟢) 2.006s (-3.3%) 0.820s 15 1.00x
💻 Local Express 1.223s (-17.9% 🟢) 2.005s (~) 0.783s 15 1.04x
🐘 Postgres Express 1.224s (-2.9%) 2.009s (~) 0.786s 15 1.04x
🐘 Postgres Next.js (Turbopack) 1.247s 2.008s 0.762s 15 1.06x
💻 Local Next.js (Turbopack) 1.387s 2.006s 0.619s 15 1.17x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.687s (-6.1% 🟢) 4.244s (-8.2% 🟢) 1.558s 8 1.00x
▲ Vercel Nitro 3.545s (+25.8% 🔺) 5.078s (+17.5% 🔺) 1.533s 6 1.32x
▲ Vercel Next.js (Turbopack) 3.901s (+14.8% 🔺) 6.179s (+25.3% 🔺) 2.277s 5 1.45x

🔍 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.254s (-46.7% 🟢) 2.007s (-33.3% 🟢) 0.752s 15 1.00x
🐘 Postgres Express 1.283s (-45.6% 🟢) 2.078s (-30.9% 🟢) 0.794s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.458s 2.074s 0.616s 15 1.16x
💻 Local Nitro 1.706s (-45.7% 🟢) 2.006s (-48.4% 🟢) 0.300s 15 1.36x
💻 Local Express 1.707s (-42.2% 🟢) 2.006s (-41.9% 🟢) 0.299s 15 1.36x
💻 Local Next.js (Turbopack) 1.903s 2.315s 0.412s 13 1.52x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.668s (-9.5% 🟢) 5.326s (-10.0% 🟢) 1.658s 6 1.00x
▲ Vercel Express 4.693s (+29.7% 🔺) 6.129s (+19.9% 🔺) 1.436s 5 1.28x
▲ Vercel Next.js (Turbopack) 4.843s (-31.8% 🟢) 6.829s (-23.3% 🟢) 1.986s 5 1.32x

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

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.388s (-60.1% 🟢) 2.007s (-49.9% 🟢) 0.619s 15 1.00x
🐘 Postgres Express 1.417s (-59.4% 🟢) 2.007s (-49.9% 🟢) 0.591s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.821s 2.396s 0.575s 13 1.31x
💻 Local Express 4.465s (-46.4% 🟢) 5.011s (-44.5% 🟢) 0.546s 6 3.22x
💻 Local Nitro 4.574s (-45.2% 🟢) 5.179s (-42.6% 🟢) 0.605s 6 3.29x
💻 Local Next.js (Turbopack) 5.592s 6.215s 0.622s 5 4.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 6.330s (+79.6% 🔺) 7.723s (+39.6% 🔺) 1.393s 5 1.00x
▲ Vercel Express 6.456s (+52.3% 🔺) 8.594s (+40.3% 🔺) 2.137s 4 1.02x
▲ Vercel Next.js (Turbopack) 6.973s (-21.8% 🟢) 8.733s (-20.3% 🟢) 1.760s 4 1.10x

🔍 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.192s (-5.2% 🟢) 2.008s (~) 0.816s 15 1.00x
🐘 Postgres Express 1.242s (-1.2%) 2.022s (+0.7%) 0.779s 15 1.04x
🐘 Postgres Next.js (Turbopack) 1.258s 2.009s 0.751s 15 1.06x
💻 Local Next.js (Turbopack) 1.345s 2.006s 0.661s 15 1.13x
💻 Local Nitro 1.515s (-18.8% 🟢) 2.006s (-14.3% 🟢) 0.491s 15 1.27x
💻 Local Express 1.517s (-19.9% 🟢) 2.006s (-15.1% 🟢) 0.489s 15 1.27x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.891s (-1.4%) 5.063s (+9.1% 🔺) 2.172s 6 1.00x
▲ Vercel Express 2.943s (+14.0% 🔺) 4.704s (+8.1% 🔺) 1.761s 7 1.02x
▲ Vercel Nitro 3.039s (+23.6% 🔺) 5.014s (+20.3% 🔺) 1.975s 7 1.05x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.257s (-46.3% 🟢) 2.007s (-33.3% 🟢) 0.751s 15 1.00x
🐘 Postgres Express 1.288s (-45.0% 🟢) 2.079s (-30.9% 🟢) 0.791s 15 1.03x
🐘 Postgres Next.js (Turbopack) 1.430s 2.007s 0.578s 15 1.14x
💻 Local Express 1.872s (-40.2% 🟢) 2.316s (-38.4% 🟢) 0.444s 13 1.49x
💻 Local Next.js (Turbopack) 2.089s 2.734s 0.646s 11 1.66x
💻 Local Nitro 2.097s (-31.6% 🟢) 2.591s (-33.3% 🟢) 0.494s 12 1.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.735s (+17.0% 🔺) 5.961s (+24.4% 🔺) 2.225s 6 1.00x
▲ Vercel Nitro 3.983s (+23.2% 🔺) 5.570s (+9.7% 🔺) 1.587s 6 1.07x
▲ Vercel Next.js (Turbopack) 4.055s (+29.0% 🔺) 6.069s (+34.2% 🔺) 2.014s 5 1.09x

🔍 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.400s (-59.8% 🟢) 2.008s (-49.9% 🟢) 0.608s 15 1.00x
🐘 Postgres Express 1.569s (-55.2% 🟢) 2.310s (-42.4% 🟢) 0.741s 14 1.12x
🐘 Postgres Next.js (Turbopack) 1.757s 2.318s 0.561s 13 1.25x
💻 Local Express 4.817s (-45.3% 🟢) 5.345s (-42.4% 🟢) 0.528s 6 3.44x
💻 Local Nitro 4.922s (-46.2% 🟢) 5.347s (-46.7% 🟢) 0.425s 6 3.52x
💻 Local Next.js (Turbopack) 5.603s 6.216s 0.613s 5 4.00x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.353s (-16.6% 🟢) 7.232s (-11.6% 🟢) 1.879s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.521s (-18.3% 🟢) 7.785s (-8.9% 🟢) 2.264s 4 1.03x
▲ Vercel Nitro 5.774s (+13.4% 🔺) 7.843s (+15.0% 🔺) 2.069s 4 1.08x

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

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.525s (-37.5% 🟢) 1.025s (~) 0.500s 59 1.00x
🐘 Postgres Nitro 0.565s (-31.2% 🟢) 1.007s (~) 0.442s 60 1.08x
💻 Local Express 0.578s (-41.3% 🟢) 1.004s (-6.6% 🟢) 0.427s 60 1.10x
💻 Local Nitro 0.665s (-32.2% 🟢) 1.096s (~) 0.431s 55 1.27x
🐘 Postgres Next.js (Turbopack) 0.846s 1.024s 0.178s 59 1.61x
💻 Local Next.js (Turbopack) 0.872s 1.022s 0.150s 59 1.66x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.396s (-71.6% 🟢) 6.982s (-67.3% 🟢) 1.586s 9 1.00x
▲ Vercel Nitro 5.502s (-75.1% 🟢) 7.011s (-70.8% 🟢) 1.509s 9 1.02x
▲ Vercel Next.js (Turbopack) 5.574s (-61.6% 🟢) 7.267s (-54.8% 🟢) 1.693s 9 1.03x

🔍 Observability: Express | 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.266s (-35.9% 🟢) 2.032s (-10.0% 🟢) 0.766s 45 1.00x
🐘 Postgres Nitro 1.449s (-24.8% 🟢) 2.076s (-1.2%) 0.627s 44 1.14x
💻 Local Nitro 1.478s (-51.3% 🟢) 2.006s (-46.6% 🟢) 0.527s 45 1.17x
💻 Local Express 1.484s (-50.8% 🟢) 2.005s (-44.1% 🟢) 0.522s 45 1.17x
🐘 Postgres Next.js (Turbopack) 2.017s 2.342s 0.325s 39 1.59x
💻 Local Next.js (Turbopack) 2.051s 2.975s 0.925s 31 1.62x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 13.328s (-66.2% 🟢) 15.179s (-63.2% 🟢) 1.852s 6 1.00x
▲ Vercel Express 13.791s (-60.1% 🟢) 15.328s (-58.4% 🟢) 1.537s 6 1.03x
▲ Vercel Next.js (Turbopack) 14.726s (-70.4% 🟢) 16.872s (-67.4% 🟢) 2.146s 6 1.10x

🔍 Observability: Nitro | Express | 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 2.668s (-33.2% 🟢) 3.307s (-24.3% 🟢) 0.639s 37 1.00x
🐘 Postgres Nitro 2.710s (-34.0% 🟢) 3.059s (-33.6% 🟢) 0.349s 40 1.02x
💻 Local Nitro 3.188s (-65.7% 🟢) 3.912s (-61.0% 🟢) 0.724s 31 1.19x
💻 Local Express 3.369s (-63.4% 🟢) 4.042s (-59.6% 🟢) 0.673s 31 1.26x
🐘 Postgres Next.js (Turbopack) 3.861s 4.110s 0.250s 30 1.45x
💻 Local Next.js (Turbopack) 4.386s 5.011s 0.625s 24 1.64x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 26.628s (-72.5% 🟢) 28.978s (-70.6% 🟢) 2.350s 5 1.00x
▲ Vercel Express 28.622s (-78.0% 🟢) 31.114s (-76.5% 🟢) 2.491s 4 1.07x
▲ Vercel Next.js (Turbopack) 28.958s (-73.0% 🟢) 31.466s (-71.1% 🟢) 2.508s 4 1.09x

🔍 Observability: Nitro | Express | 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.213s (-24.4% 🟢) 1.010s (~) 0.797s 60 1.00x
🐘 Postgres Nitro 0.218s (-23.0% 🟢) 1.006s (~) 0.788s 60 1.02x
🐘 Postgres Next.js (Turbopack) 0.265s 1.006s 0.741s 60 1.24x
💻 Local Nitro 0.413s (-31.8% 🟢) 1.004s (-1.7%) 0.592s 60 1.93x
💻 Local Express 0.432s (-22.9% 🟢) 1.004s (~) 0.572s 60 2.02x
💻 Local Next.js (Turbopack) 0.542s 1.005s 0.462s 60 2.54x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.335s (+19.5% 🔺) 3.619s (~) 1.285s 17 1.00x
▲ Vercel Nitro 2.451s (+47.6% 🔺) 4.039s (+20.5% 🔺) 1.588s 15 1.05x
▲ Vercel Next.js (Turbopack) 2.503s (+23.8% 🔺) 4.190s (+10.4% 🔺) 1.686s 15 1.07x

🔍 Observability: Express | 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.296s (-42.0% 🟢) 1.005s (~) 0.710s 90 1.00x
🐘 Postgres Nitro 0.348s (-29.9% 🟢) 1.006s (~) 0.658s 90 1.18x
🐘 Postgres Next.js (Turbopack) 0.479s 1.006s 0.527s 90 1.62x
💻 Local Express 2.058s (-18.1% 🟢) 2.713s (-9.8% 🟢) 0.655s 34 6.96x
💻 Local Nitro 2.122s (-16.4% 🟢) 2.638s (-12.4% 🟢) 0.515s 35 7.18x
💻 Local Next.js (Turbopack) 2.214s 3.044s 0.830s 30 7.49x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.001s (+55.0% 🔺) 6.605s (+37.0% 🔺) 1.605s 14 1.00x
▲ Vercel Express 5.252s (+72.4% 🔺) 6.592s (+37.1% 🔺) 1.340s 14 1.05x
▲ Vercel Next.js (Turbopack) 5.865s (+65.9% 🔺) 7.472s (+43.9% 🔺) 1.607s 13 1.17x

🔍 Observability: Nitro | Express | 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.670s (-15.2% 🟢) 1.006s (~) 0.336s 120 1.00x
🐘 Postgres Express 0.709s (-13.4% 🟢) 1.166s (+14.6% 🔺) 0.457s 103 1.06x
🐘 Postgres Next.js (Turbopack) 0.958s 1.388s 0.429s 87 1.43x
💻 Local Nitro 9.413s (-15.9% 🟢) 10.027s (-14.0% 🟢) 0.614s 12 14.05x
💻 Local Express 9.414s (-15.9% 🟢) 10.030s (-16.0% 🟢) 0.616s 12 14.05x
💻 Local Next.js (Turbopack) 10.091s 11.028s 0.937s 11 15.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 12.528s (+68.8% 🔺) 14.429s (+56.1% 🔺) 1.902s 9 1.00x
▲ Vercel Nitro 14.683s (+90.1% 🔺) 16.713s (+77.8% 🔺) 2.030s 8 1.17x
▲ Vercel Next.js (Turbopack) 15.117s (+46.4% 🔺) 17.163s (+39.7% 🔺) 2.047s 8 1.21x

🔍 Observability: Express | 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
🐘 Postgres 🥇 Express 1.145s (+458.1% 🔺) 1.997s (+100.0% 🔺) 0.001s (-56.3% 🟢) 2.013s (+99.1% 🔺) 0.869s 10 1.00x
💻 Local Express 1.158s (+481.7% 🔺) 2.005s (+99.6% 🔺) 0.011s (-11.6% 🟢) 2.018s (+98.2% 🔺) 0.860s 10 1.01x
💻 Local Nitro 1.160s (+443.0% 🔺) 2.005s (+99.6% 🔺) 0.010s (-21.6% 🟢) 2.017s (+98.0% 🔺) 0.857s 10 1.01x
🐘 Postgres Nitro 1.166s (+468.9% 🔺) 1.996s (+99.7% 🔺) 0.001s (-6.7% 🟢) 2.010s (+98.8% 🔺) 0.844s 10 1.02x
💻 Local Next.js (Turbopack) 1.208s 2.004s 0.013s 2.020s 0.812s 10 1.06x
🐘 Postgres Next.js (Turbopack) 1.239s 2.002s 0.001s 2.011s 0.772s 10 1.08x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.306s (-8.0% 🟢) 3.126s (-23.6% 🟢) 2.907s (+202.6% 🔺) 6.393s (+14.4% 🔺) 4.087s 10 1.00x
▲ Vercel Next.js (Turbopack) 2.419s (-64.7% 🟢) 3.611s (-58.3% 🟢) 1.823s (+188.5% 🔺) 5.891s (-39.8% 🟢) 3.472s 10 1.05x
▲ Vercel Nitro 2.435s (-36.5% 🟢) 3.595s (-31.9% 🟢) 1.924s (+159.3% 🔺) 6.006s (-7.4% 🟢) 3.571s 10 1.06x

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

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.563s (+106.4% 🔺) 2.009s (+95.2% 🔺) 0.010s (+9.8% 🔺) 2.021s (+94.4% 🔺) 0.458s 30 1.00x
💻 Local Nitro 1.573s (+87.5% 🔺) 2.010s (+98.6% 🔺) 0.011s (+16.0% 🔺) 2.023s (+81.2% 🔺) 0.450s 30 1.01x
🐘 Postgres Nitro 1.584s (+153.7% 🔺) 2.005s (+99.2% 🔺) 0.004s (-4.9%) 2.024s (+98.0% 🔺) 0.441s 30 1.01x
🐘 Postgres Next.js (Turbopack) 1.724s 2.011s 0.004s 2.026s 0.301s 30 1.10x
💻 Local Next.js (Turbopack) 1.735s 2.009s 0.011s 2.023s 0.288s 30 1.11x
🐘 Postgres Express 2.165s (+243.6% 🔺) 2.606s (+158.9% 🔺) 0.004s (-5.8% 🟢) 2.631s (+157.1% 🔺) 0.466s 23 1.39x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.838s (-10.2% 🟢) 6.819s (-14.9% 🟢) 0.243s (-40.5% 🟢) 7.513s (-15.0% 🟢) 1.675s 8 1.00x
▲ Vercel Nitro 6.083s (-79.3% 🟢) 7.126s (-76.9% 🟢) 0.284s (+153.8% 🔺) 7.859s (-75.3% 🟢) 1.776s 8 1.04x
▲ Vercel Next.js (Turbopack) 6.120s (-63.8% 🟢) 7.435s (-59.2% 🟢) 0.306s (+44.8% 🔺) 8.247s (-56.4% 🟢) 2.126s 8 1.05x

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

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.713s (-26.4% 🟢) 1.030s (-17.5% 🟢) 0.000s (-17.2% 🟢) 1.045s (-16.9% 🟢) 0.332s 58 1.00x
🐘 Postgres Next.js (Turbopack) 0.847s 1.091s 0.000s 1.100s 0.253s 55 1.19x
🐘 Postgres Express 1.083s (+12.7% 🔺) 1.531s (+19.8% 🔺) 0.000s (-41.0% 🟢) 1.562s (+19.6% 🔺) 0.480s 39 1.52x
💻 Local Express 1.363s (+11.3% 🔺) 2.013s (~) 0.000s (-40.0% 🟢) 2.015s (~) 0.652s 30 1.91x
💻 Local Nitro 1.388s (+13.5% 🔺) 2.013s (~) 0.000s (+266.7% 🔺) 2.015s (~) 0.628s 30 1.95x
💻 Local Next.js (Turbopack) 1.690s 2.013s 0.000s 2.196s 0.505s 28 2.37x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.764s (+23.4% 🔺) 4.999s (+13.8% 🔺) 0.000s (+8.3% 🔺) 5.424s (+12.8% 🔺) 1.659s 12 1.00x
▲ Vercel Express 3.841s (+2.7%) 5.060s (-0.8%) 0.000s (-100.0% 🟢) 5.478s (-0.9%) 1.637s 11 1.02x
▲ Vercel Next.js (Turbopack) 4.211s (-58.6% 🟢) 5.676s (-50.7% 🟢) 0.000s (+Infinity% 🔺) 6.183s (-48.7% 🟢) 1.972s 10 1.12x

🔍 Observability: Nitro | Express | 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 🥇 Nitro 1.425s (-20.5% 🟢) 2.028s (-5.3% 🟢) 0.000s (+86.7% 🔺) 2.060s (-5.3% 🟢) 0.635s 30 1.00x
🐘 Postgres Express 1.645s (-7.2% 🟢) 2.267s (+4.1%) 0.000s (NaN%) 2.314s (+5.3% 🔺) 0.669s 26 1.15x
🐘 Postgres Next.js (Turbopack) 1.722s 2.225s 0.000s 2.239s 0.517s 27 1.21x
💻 Local Next.js (Turbopack) 2.943s 3.466s 0.001s 3.473s 0.530s 18 2.07x
💻 Local Nitro 3.142s (-7.3% 🟢) 3.901s (-3.2%) 0.001s (+52.3% 🔺) 3.905s (-3.3%) 0.763s 16 2.21x
💻 Local Express 3.327s (-4.0%) 3.650s (-9.5% 🟢) 0.001s (-21.9% 🟢) 3.968s (-1.7%) 0.640s 16 2.34x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.612s (~) 7.262s (+4.0%) 0.000s (-100.0% 🟢) 7.717s (+2.3%) 2.104s 8 1.00x
▲ Vercel Express 6.323s (+37.8% 🔺) 7.592s (+26.1% 🔺) 0.000s (NaN%) 8.017s (+24.2% 🔺) 1.694s 8 1.13x
▲ Vercel Nitro 6.498s (+58.7% 🔺) 7.773s (+44.6% 🔺) 0.000s (+37.5% 🔺) 8.219s (+41.9% 🔺) 1.720s 8 1.16x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 10/21
🐘 Postgres Nitro 13/21
▲ Vercel Nitro 9/21
Fastest World by Framework

Winner determined by most benchmark wins

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 29, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1266 0 219 1485
✅ 💻 Local Development 1671 0 219 1890
✅ 📦 Local Production 1671 0 219 1890
✅ 🐘 Local Postgres 1671 0 219 1890
✅ 📋 Other 769 0 176 945
Total 7048 0 1052 8100

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 109 0 26
✅ example 109 0 26
✅ express 109 0 26
✅ fastify 109 0 26
✅ hono 109 0 26
✅ nextjs-turbopack 133 0 2
✅ nextjs-webpack 133 0 2
✅ nitro 109 0 26
✅ nuxt 109 0 26
✅ sveltekit 128 0 7
✅ vite 109 0 26
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 110 0 25
✅ express-stable 110 0 25
✅ fastify-stable 110 0 25
✅ hono-stable 110 0 25
✅ nextjs-turbopack-canary 116 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 135 0 0
✅ nextjs-webpack-canary 116 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 135 0 0
✅ nitro-stable 110 0 25
✅ nuxt-stable 110 0 25
✅ sveltekit-stable 129 0 6
✅ vite-stable 110 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 110 0 25
✅ express-stable 110 0 25
✅ fastify-stable 110 0 25
✅ hono-stable 110 0 25
✅ nextjs-turbopack-canary 116 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 135 0 0
✅ nextjs-webpack-canary 116 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 135 0 0
✅ nitro-stable 110 0 25
✅ nuxt-stable 110 0 25
✅ sveltekit-stable 129 0 6
✅ vite-stable 110 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 110 0 25
✅ express-stable 110 0 25
✅ fastify-stable 110 0 25
✅ hono-stable 110 0 25
✅ nextjs-turbopack-canary 116 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 135 0 0
✅ nextjs-webpack-canary 116 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 135 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 135 0 0
✅ nitro-stable 110 0 25
✅ nuxt-stable 110 0 25
✅ sveltekit-stable 129 0 6
✅ vite-stable 110 0 25
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 110 0 25
✅ e2e-local-dev-tanstack-start- 110 0 25
✅ e2e-local-postgres-nest-stable 110 0 25
✅ e2e-local-postgres-tanstack-start- 110 0 25
✅ e2e-local-prod-nest-stable 110 0 25
✅ e2e-local-prod-tanstack-start- 110 0 25
✅ e2e-vercel-prod-tanstack-start 109 0 26

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

Comment thread packages/web-shared/src/components/new-trace-viewer/context.tsx
Lets consumers render the trace viewer loading skeleton standalone
(e.g. front's run-detail page during the initial run fetch).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mitul-s mitul-s enabled auto-merge (squash) May 29, 2026 19:50
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