Skip to content

Add workflow analytics world APIs#2234

Draft
karthikscale3 wants to merge 1 commit into
mainfrom
codex/workflow-analytics-apis
Draft

Add workflow analytics world APIs#2234
karthikscale3 wants to merge 1 commit into
mainfrom
codex/workflow-analytics-apis

Conversation

@karthikscale3

@karthikscale3 karthikscale3 commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

What changed

Adds a new metadata-only world.analytics.* namespace for workflow observability reads.

  • Adds analytics schemas and types in @workflow/world
  • Adds optional analytics?: Analytics to the World interface
  • Adds createAnalytics() in @workflow/world-vercel
  • Wires createVercelWorld() to expose world.analytics
  • Adds a changeset for @workflow/world and @workflow/world-vercel

Why

This gives observability surfaces an explicit ClickHouse-backed read surface without changing the existing runtime storage APIs. Payloads, RemoteRef resolution, inputs, outputs, and error hydration remain on the canonical DynamoDB-backed APIs.

Validation

  • pnpm --filter @workflow/world exec tsc --noEmit --pretty false
  • pnpm --filter @workflow/world-vercel exec tsc --noEmit --pretty false
  • pnpm exec biome check packages/world/src/analytics.ts packages/world/src/interfaces.ts packages/world/src/index.ts packages/world-vercel/src/analytics.ts packages/world-vercel/src/index.ts

Companion PRs

@changeset-bot

changeset-bot Bot commented Jun 3, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 066d69c

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

This PR includes changesets to release 20 packages
Name Type
@workflow/world Minor
@workflow/world-vercel Minor
@workflow/cli Patch
@workflow/core Patch
@workflow/vitest Patch
@workflow/web-shared Patch
@workflow/web Patch
@workflow/world-local Patch
@workflow/world-postgres Patch
@workflow/world-testing Patch
workflow Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/nitro 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 3, 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 3, 2026 5:45pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jun 3, 2026 5:45pm
example-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-astro-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-express-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-fastify-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-hono-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-nitro-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-nuxt-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workbench-vite-workflow Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Jun 3, 2026 5:45pm
workflow-swc-playground Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workflow-tarballs Ready Ready Preview, Comment Jun 3, 2026 5:45pm
workflow-web Ready Ready Preview, Comment Jun 3, 2026 5:45pm

@github-actions

github-actions Bot commented Jun 3, 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 🥇 Nitro 0.040s (-8.1% 🟢) 1.006s (~) 0.966s 10 1.00x
💻 Local Express 0.042s (+1.7%) 1.005s (~) 0.964s 10 1.04x
🐘 Postgres Nitro 0.061s (-32.0% 🟢) 1.013s (-1.7%) 0.952s 10 1.53x
💻 Local Next.js (Turbopack) 0.062s (-2.0%) 1.005s (~) 0.943s 10 1.56x
🐘 Postgres Next.js (Turbopack) 0.070s (~) 1.013s (~) 0.943s 10 1.74x
🐘 Postgres Express 0.071s (+8.0% 🔺) 1.017s (+0.5%) 0.946s 10 1.77x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.375s (+18.4% 🔺) 2.584s (+7.9% 🔺) 2.209s 10 1.00x
▲ Vercel Next.js (Turbopack) 0.390s (-16.5% 🟢) 2.294s (+7.2% 🔺) 1.904s 10 1.04x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.091s (~) 2.006s (~) 0.915s 10 1.00x
💻 Local Express 1.096s (+0.7%) 2.006s (~) 0.910s 10 1.00x
🐘 Postgres Express 1.102s (-0.5%) 2.008s (~) 0.906s 10 1.01x
🐘 Postgres Nitro 1.107s (-3.1%) 2.009s (-1.2%) 0.902s 10 1.01x
💻 Local Next.js (Turbopack) 1.135s (~) 2.005s (~) 0.870s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.139s (~) 2.009s (~) 0.870s 10 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.748s (+9.7% 🔺) 3.841s (+3.8%) 2.093s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.812s (+3.4%) 3.994s (+22.7% 🔺) 2.183s 10 1.04x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.521s (~) 11.021s (~) 0.500s 3 1.00x
💻 Local Express 10.527s (~) 11.023s (~) 0.497s 3 1.00x
🐘 Postgres Nitro 10.533s (-1.5%) 11.025s (~) 0.492s 3 1.00x
🐘 Postgres Express 10.581s (~) 11.018s (~) 0.437s 3 1.01x
🐘 Postgres Next.js (Turbopack) 10.825s (~) 11.017s (~) 0.192s 3 1.03x
💻 Local Next.js (Turbopack) 10.864s (+0.8%) 11.019s (~) 0.155s 3 1.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 13.949s (+2.5%) 15.930s (+5.1% 🔺) 1.981s 2 1.00x
▲ Vercel Next.js (Turbopack) 14.275s (+3.5%) 16.726s (+10.0% 🔺) 2.451s 2 1.02x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.701s (~) 14.026s (~) 0.326s 5 1.00x
💻 Local Express 13.722s (~) 14.028s (~) 0.306s 5 1.00x
🐘 Postgres Express 13.772s (-1.1%) 14.017s (~) 0.245s 5 1.01x
🐘 Postgres Nitro 13.774s (-6.0% 🟢) 14.021s (-6.7% 🟢) 0.247s 5 1.01x
💻 Local Next.js (Turbopack) 14.296s (~) 15.030s (~) 0.734s 4 1.04x
🐘 Postgres Next.js (Turbopack) 14.376s (~) 15.016s (~) 0.640s 4 1.05x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 21.928s (-1.2%) 24.021s (~) 2.092s 3 1.00x
▲ Vercel Next.js (Turbopack) 22.823s (+4.9%) 25.257s (+6.9% 🔺) 2.434s 3 1.04x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 12.433s (~) 13.024s (~) 0.591s 7 1.00x
🐘 Postgres Express 12.480s (-0.6%) 13.018s (~) 0.538s 7 1.00x
💻 Local Express 12.487s (+1.2%) 13.025s (~) 0.538s 7 1.00x
🐘 Postgres Nitro 12.652s (~) 13.018s (-2.1%) 0.366s 7 1.02x
💻 Local Next.js (Turbopack) 13.661s (~) 14.026s (~) 0.365s 7 1.10x
🐘 Postgres Next.js (Turbopack) 13.699s (~) 14.017s (~) 0.318s 7 1.10x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 31.052s (+5.3% 🔺) 33.403s (+5.1% 🔺) 2.351s 3 1.00x
▲ Vercel Next.js (Turbopack) 35.077s (+19.3% 🔺) 37.987s (+23.1% 🔺) 2.910s 3 1.13x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.185s (-5.9% 🟢) 2.008s (~) 0.823s 15 1.00x
💻 Local Express 1.191s (-3.7%) 2.006s (~) 0.815s 15 1.01x
🐘 Postgres Express 1.201s (+0.6%) 2.007s (~) 0.806s 15 1.01x
💻 Local Nitro 1.205s (-0.9%) 2.006s (~) 0.801s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.240s (+0.6%) 2.007s (~) 0.767s 15 1.05x
💻 Local Next.js (Turbopack) 1.290s (-2.5%) 2.005s (~) 0.715s 15 1.09x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.672s (-15.8% 🟢) 4.512s (-8.9% 🟢) 1.840s 7 1.00x
▲ Vercel Next.js (Turbopack) 2.773s (+7.3% 🔺) 4.297s (+5.0% 🔺) 1.524s 8 1.04x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.250s (-8.0% 🟢) 2.007s (~) 0.757s 15 1.00x
🐘 Postgres Express 1.256s (~) 2.007s (~) 0.751s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.361s (-1.7%) 2.008s (~) 0.647s 15 1.09x
💻 Local Express 1.693s (-0.8%) 2.006s (~) 0.313s 15 1.35x
💻 Local Nitro 1.695s (-3.5%) 2.005s (~) 0.311s 15 1.36x
💻 Local Next.js (Turbopack) 1.902s (~) 2.315s (~) 0.413s 13 1.52x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.715s (+0.7%) 5.472s (+6.2% 🔺) 1.757s 6 1.00x
▲ Vercel Next.js (Turbopack) 4.300s (-2.0%) 6.138s (+8.1% 🔺) 1.838s 5 1.16x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.380s (-6.2% 🟢) 2.008s (-13.4% 🟢) 0.628s 15 1.00x
🐘 Postgres Express 1.416s (+1.1%) 2.008s (~) 0.592s 15 1.03x
🐘 Postgres Next.js (Turbopack) 1.746s (+2.9%) 2.151s (~) 0.406s 14 1.27x
💻 Local Nitro 4.316s (-9.1% 🟢) 5.012s (-3.3%) 0.696s 6 3.13x
💻 Local Express 4.492s (-6.8% 🟢) 5.012s (-6.2% 🟢) 0.519s 7 3.26x
💻 Local Next.js (Turbopack) 5.034s (-8.5% 🟢) 5.512s (-11.3% 🟢) 0.478s 6 3.65x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.074s (-43.0% 🟢) 7.042s (-34.7% 🟢) 1.968s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.732s (-17.4% 🟢) 7.854s (-9.7% 🟢) 2.122s 4 1.13x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.183s (~) 2.009s (~) 0.826s 15 1.00x
🐘 Postgres Nitro 1.195s (-9.0% 🟢) 2.008s (-3.3%) 0.813s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.238s (-1.3%) 2.008s (~) 0.771s 15 1.05x
💻 Local Next.js (Turbopack) 1.317s (-4.6%) 2.006s (~) 0.689s 15 1.11x
💻 Local Nitro 1.531s (-7.3% 🟢) 2.006s (-3.2%) 0.475s 15 1.29x
💻 Local Express 1.580s (+4.0%) 2.006s (~) 0.427s 15 1.34x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.766s (-30.6% 🟢) 4.566s (-17.2% 🟢) 1.800s 7 1.00x
▲ Vercel Express 2.952s (-4.3%) 4.656s (-1.3%) 1.705s 7 1.07x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Express

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.244s (-0.9%) 2.009s (~) 0.765s 15 1.00x
🐘 Postgres Nitro 1.262s (+1.0%) 2.010s (~) 0.747s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.383s (-4.6%) 2.008s (-3.2%) 0.624s 15 1.11x
💻 Local Nitro 1.967s (-6.9% 🟢) 2.469s (-9.7% 🟢) 0.502s 13 1.58x
💻 Local Express 2.015s (+6.2% 🔺) 2.507s (+8.2% 🔺) 0.492s 12 1.62x
💻 Local Next.js (Turbopack) 2.061s (-1.2%) 2.916s (+3.2%) 0.856s 11 1.66x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.285s (-11.8% 🟢) 5.069s (~) 1.784s 6 1.00x
▲ Vercel Next.js (Turbopack) 4.694s (+1.2%) 6.669s (+3.7%) 1.975s 5 1.43x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.390s (~) 2.008s (~) 0.617s 15 1.00x
🐘 Postgres Nitro 1.397s (-4.0%) 2.009s (-3.3%) 0.612s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.674s (-2.8%) 2.142s (-3.6%) 0.468s 15 1.20x
💻 Local Express 4.918s (-7.1% 🟢) 5.349s (-8.5% 🟢) 0.431s 6 3.54x
💻 Local Nitro 5.297s (-10.4% 🟢) 6.183s (-3.6%) 0.886s 6 3.81x
💻 Local Next.js (Turbopack) 5.816s (~) 6.416s (+3.3%) 0.599s 5 4.18x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.147s (-27.6% 🟢) 7.251s (-19.2% 🟢) 2.103s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.728s (-21.7% 🟢) 8.143s (-17.2% 🟢) 2.415s 4 1.11x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | 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.580s (+16.0% 🔺) 1.007s (-0.5%) 0.426s 60 1.00x
💻 Local Nitro 0.583s (-1.4%) 1.004s (~) 0.421s 60 1.00x
🐘 Postgres Express 0.588s (+3.1%) 1.024s (+1.7%) 0.436s 59 1.01x
💻 Local Express 0.617s (+2.8%) 1.021s (+1.7%) 0.405s 59 1.06x
🐘 Postgres Next.js (Turbopack) 0.823s (-1.9%) 1.007s (-5.0%) 0.183s 60 1.42x
💻 Local Next.js (Turbopack) 0.856s (-1.9%) 1.004s (-3.4%) 0.148s 60 1.48x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.417s (-7.1% 🟢) 7.285s (~) 1.868s 9 1.00x
▲ Vercel Next.js (Turbopack) 6.123s (+7.8% 🔺) 7.845s (+6.7% 🔺) 1.721s 8 1.13x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | 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.422s (+4.8%) 2.029s (+1.1%) 0.608s 45 1.00x
🐘 Postgres Nitro 1.431s (-0.7%) 2.030s (+0.6%) 0.599s 45 1.01x
💻 Local Nitro 1.480s (-1.3%) 2.006s (-1.1%) 0.525s 45 1.04x
💻 Local Express 1.505s (-1.5%) 2.006s (-1.1%) 0.501s 45 1.06x
🐘 Postgres Next.js (Turbopack) 1.985s (+3.8%) 2.228s (+6.1% 🔺) 0.243s 41 1.40x
💻 Local Next.js (Turbopack) 2.195s (+4.4%) 3.008s (~) 0.813s 30 1.54x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 14.979s (-12.0% 🟢) 17.356s (-5.7% 🟢) 2.378s 6 1.00x
▲ Vercel Express 15.581s (+9.8% 🔺) 17.717s (+11.0% 🔺) 2.136s 6 1.04x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.764s (+4.8%) 3.111s (-6.3% 🟢) 0.348s 39 1.00x
🐘 Postgres Express 2.785s (+0.7%) 3.137s (~) 0.351s 39 1.01x
💻 Local Nitro 3.232s (+2.5%) 4.009s (+1.6%) 0.777s 30 1.17x
💻 Local Express 3.398s (+5.2% 🔺) 4.009s (+0.8%) 0.611s 30 1.23x
🐘 Postgres Next.js (Turbopack) 3.933s (+2.8%) 4.217s (+2.6%) 0.284s 29 1.42x
💻 Local Next.js (Turbopack) 4.433s (~) 5.010s (~) 0.577s 24 1.60x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 28.277s (-7.4% 🟢) 30.415s (-6.7% 🟢) 2.137s 4 1.00x
▲ Vercel Next.js (Turbopack) 112.546s (+278.7% 🔺) 114.962s (+264.0% 🔺) 2.415s 4 3.98x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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 🥇 Nitro 0.220s (-0.9%) 1.006s (~) 0.786s 60 1.00x
🐘 Postgres Express 0.230s (+0.9%) 1.006s (~) 0.776s 60 1.05x
🐘 Postgres Next.js (Turbopack) 0.261s (-1.0%) 1.006s (~) 0.745s 60 1.19x
💻 Local Nitro 0.396s (-12.2% 🟢) 1.004s (~) 0.608s 60 1.80x
💻 Local Express 0.418s (-0.5%) 1.004s (~) 0.586s 60 1.90x
💻 Local Next.js (Turbopack) 0.627s (-2.3%) 1.022s (-3.5%) 0.395s 59 2.85x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.266s (-10.2% 🟢) 3.806s (-8.5% 🟢) 1.540s 16 1.00x
▲ Vercel Next.js (Turbopack) 2.422s (-25.3% 🟢) 4.157s (-11.4% 🟢) 1.735s 15 1.07x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Express | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.356s (-9.5% 🟢) 1.006s (-1.4%) 0.650s 90 1.00x
🐘 Postgres Express 0.364s (+0.9%) 1.007s (~) 0.643s 90 1.02x
🐘 Postgres Next.js (Turbopack) 0.476s (~) 1.006s (~) 0.530s 90 1.34x
💻 Local Express 2.036s (-3.4%) 2.637s (-0.7%) 0.601s 35 5.71x
💻 Local Nitro 2.100s (+1.6%) 2.609s (-1.1%) 0.510s 35 5.89x
💻 Local Next.js (Turbopack) 2.558s (~) 3.184s (-3.4%) 0.626s 29 7.18x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.329s (-8.8% 🟢) 6.945s (-7.7% 🟢) 1.616s 13 1.00x
▲ Vercel Next.js (Turbopack) 5.662s (-17.4% 🟢) 7.478s (-11.4% 🟢) 1.816s 13 1.06x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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 🥇 Express 0.661s (-4.2%) 1.006s (~) 0.345s 120 1.00x
🐘 Postgres Nitro 0.704s (+13.1% 🔺) 1.006s (-6.2% 🟢) 0.303s 120 1.06x
🐘 Postgres Next.js (Turbopack) 0.942s (-2.8%) 1.326s (-15.4% 🟢) 0.384s 91 1.42x
💻 Local Nitro 9.317s (-1.3%) 9.798s (-2.3%) 0.481s 13 14.09x
💻 Local Express 9.483s (~) 9.951s (-0.7%) 0.468s 13 14.34x
💻 Local Next.js (Turbopack) 10.424s (-4.7%) 10.944s (-6.9% 🟢) 0.521s 12 15.77x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 14.672s (-8.9% 🟢) 16.393s (-9.3% 🟢) 1.721s 8 1.00x
▲ Vercel Next.js (Turbopack) 15.604s (-9.4% 🟢) 17.561s (-5.7% 🟢) 1.956s 7 1.06x
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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 🥇 Nitro 1.159s (~) 2.005s (~) 0.011s (-8.6% 🟢) 2.018s (~) 0.859s 10 1.00x
💻 Local Express 1.165s (~) 2.004s (~) 0.011s (+1.9%) 2.017s (~) 0.852s 10 1.00x
🐘 Postgres Express 1.174s (~) 1.997s (~) 0.001s (-38.9% 🟢) 2.009s (~) 0.834s 10 1.01x
🐘 Postgres Nitro 1.180s (+1.8%) 2.000s (~) 0.001s (+83.3% 🔺) 2.010s (~) 0.830s 10 1.02x
💻 Local Next.js (Turbopack) 1.221s (+1.0%) 2.003s (~) 0.012s (-2.5%) 2.018s (~) 0.797s 10 1.05x
🐘 Postgres Next.js (Turbopack) 1.227s (~) 2.002s (~) 0.001s (-23.1% 🟢) 2.010s (~) 0.783s 10 1.06x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.294s (+6.2% 🔺) 3.260s (+9.1% 🔺) 1.897s (+58.4% 🔺) 5.649s (+21.9% 🔺) 3.355s 10 1.00x
▲ Vercel Express 2.466s (+3.3%) 3.474s (+3.4%) 13.368s (+1290.5% 🔺) 17.457s (+261.3% 🔺) 14.991s 10 1.08x
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.578s (~) 2.010s (~) 0.010s (~) 2.022s (~) 0.444s 30 1.00x
💻 Local Express 1.580s (+1.0%) 2.010s (~) 0.011s (+2.6%) 2.022s (~) 0.443s 30 1.00x
🐘 Postgres Express 1.595s (~) 2.004s (~) 0.004s (+0.9%) 2.025s (~) 0.431s 30 1.01x
🐘 Postgres Nitro 1.629s (-1.4%) 2.002s (-3.3%) 0.004s (+19.4% 🔺) 2.027s (-2.9%) 0.397s 30 1.03x
🐘 Postgres Next.js (Turbopack) 1.752s (+2.2%) 2.011s (~) 0.004s (-4.3%) 2.026s (~) 0.273s 30 1.11x
💻 Local Next.js (Turbopack) 1.758s (-1.9%) 2.008s (~) 0.011s (-8.3% 🟢) 2.023s (~) 0.265s 30 1.11x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 6.130s (~) 7.270s (-2.2%) 0.308s (+52.0% 🔺) 8.077s (~) 1.947s 8 1.00x
▲ Vercel Express 6.468s (+9.2% 🔺) 7.971s (+10.1% 🔺) 0.326s (+55.0% 🔺) 8.792s (+10.6% 🔺) 2.323s 7 1.06x
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Express

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.710s (-25.7% 🟢) 1.051s (-17.3% 🟢) 0.000s (+26.3% 🔺) 1.063s (-18.8% 🟢) 0.352s 57 1.00x
🐘 Postgres Express 0.715s (~) 1.014s (-1.7%) 0.000s (-1.7%) 1.030s (-1.2%) 0.314s 59 1.01x
🐘 Postgres Next.js (Turbopack) 0.805s (+4.4%) 1.053s (+1.7%) 0.000s (-49.1% 🟢) 1.060s (+0.9%) 0.255s 57 1.13x
💻 Local Nitro 1.396s (+0.8%) 2.013s (~) 0.000s (-57.9% 🟢) 2.015s (~) 0.619s 30 1.97x
💻 Local Express 1.404s (+0.8%) 2.013s (~) 0.000s (-46.2% 🟢) 2.015s (~) 0.611s 30 1.98x
💻 Local Next.js (Turbopack) 1.706s (+14.7% 🔺) 2.013s (~) 0.001s (+200.0% 🔺) 2.196s (+8.9% 🔺) 0.490s 28 2.40x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.762s (-10.6% 🟢) 5.200s (+3.2%) 0.000s (NaN%) 5.685s (+4.0%) 1.923s 11 1.00x
▲ Vercel Express 3.862s (+3.6%) 5.356s (+9.7% 🔺) 0.000s (-100.0% 🟢) 5.812s (+8.1% 🔺) 1.950s 11 1.03x
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Express

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.440s (+0.6%) 2.104s (-1.4%) 0.000s (~) 2.115s (-2.1%) 0.676s 29 1.00x
🐘 Postgres Nitro 1.605s (-16.7% 🟢) 2.219s (-5.2% 🟢) 0.000s (-3.7%) 2.233s (-5.7% 🟢) 0.627s 27 1.11x
🐘 Postgres Next.js (Turbopack) 1.689s (-0.5%) 2.225s (~) 0.000s (-100.0% 🟢) 2.233s (~) 0.544s 27 1.17x
💻 Local Nitro 2.918s (-1.7%) 3.673s (+1.7%) 0.001s (+50.0% 🔺) 3.676s (+1.6%) 0.758s 17 2.03x
💻 Local Next.js (Turbopack) 3.101s (+4.6%) 3.616s (~) 0.001s (+118.2% 🔺) 3.622s (~) 0.521s 17 2.15x
💻 Local Express 3.482s (+13.4% 🔺) 3.903s (+1.7%) 0.000s (-41.7% 🟢) 4.219s (+9.8% 🔺) 0.736s 16 2.42x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.972s (-9.7% 🟢) 7.605s (-2.3%) 0.001s (+900.0% 🔺) 8.059s (-1.8%) 2.087s 8 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

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

Winner determined by most benchmark wins

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


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
❌ ▲ Vercel Production 1265 1 219 1485
✅ 💻 Local Development 1671 0 219 1890
❌ 📦 Local Production 1670 1 219 1890
✅ 🐘 Local Postgres 1671 0 219 1890
✅ 🪟 Windows 135 0 0 135
✅ 📋 Other 769 0 176 945
Total 7181 2 1052 8235

❌ Failed Tests

▲ Vercel Production (1 failed)

sveltekit (1 failed):

  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KT79R4T2A61TR44S1P6PPKJM | 🔍 observability
📦 Local Production (1 failed)

fastify-stable (1 failed):

  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries

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 127 1 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 109 1 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
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 135 0 0
✅ 📋 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: failure
  • Local Dev: success
  • Local Prod: failure
  • Local Postgres: success
  • Windows: success

Check the workflow run for details.

@karthikscale3 karthikscale3 changed the title [codex] Add workflow analytics world APIs Add workflow analytics world APIs Jun 3, 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