Skip to content

fix(web-shared): make encrypted-data blur backwards compatible with Tailwind v3#2108

Merged
mitul-s merged 2 commits into
mainfrom
c+ms/blur-style-prop-1dc2
May 26, 2026
Merged

fix(web-shared): make encrypted-data blur backwards compatible with Tailwind v3#2108
mitul-s merged 2 commits into
mainfrom
c+ms/blur-style-prop-1dc2

Conversation

@mitul-s
Copy link
Copy Markdown
Contributor

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

Description

The encrypted-data preview on the run detail panel (EncryptedDataBlock in packages/web-shared/src/components/sidebar/copyable-data-block.tsx) was using the blur-xs utility class. That utility only exists in Tailwind v4 — consumers of @workflow/web-shared who are still on Tailwind v3 see no blur at all on the placeholder, defeating the visual treatment of the encrypted state.

This swaps blur-xs for the arbitrary-value utility blur-[4px] (4px matches v4's blur-xs). Arbitrary values have been supported in Tailwind since v3.0's JIT engine, so the class compiles to filter: blur(4px) on both v3 and v4.

How did you test your changes?

Visual inspection of the decrypt card on the run detail panel — the [encrypted] placeholder still renders blurred and the Decrypt button overlay is unchanged. No JS/CSS behavior change for v4 consumers.

PR Checklist - Required to merge

  • 📦 pnpm changeset was run to create a changelog for this PR
  • 🔒 DCO sign-off passes (run git commit --signoff on your commits)
  • 📝 Ping @vercel/workflow in a comment once the PR is ready, and the above checklist is complete

Slack Thread

Open in Web Open in Cursor 

Co-authored-by: Mitul Shah <mitulxshah@gmail.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 25, 2026

🦋 Changeset detected

Latest commit: 950cf21

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 25, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1222 0 219 1441
✅ 💻 Local Development 1615 0 219 1834
✅ 📦 Local Production 1615 0 219 1834
✅ 🐘 Local Postgres 1615 0 219 1834
✅ 🪟 Windows 131 0 0 131
✅ 📋 Other 741 0 176 917
Total 6939 0 1052 7991

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 105 0 26
✅ example 105 0 26
✅ express 105 0 26
✅ fastify 105 0 26
✅ hono 105 0 26
✅ nextjs-turbopack 129 0 2
✅ nextjs-webpack 129 0 2
✅ nitro 105 0 26
✅ nuxt 105 0 26
✅ sveltekit 124 0 7
✅ vite 105 0 26
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 106 0 25
✅ express-stable 106 0 25
✅ fastify-stable 106 0 25
✅ hono-stable 106 0 25
✅ nextjs-turbopack-canary 112 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 131 0 0
✅ nextjs-webpack-canary 112 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 131 0 0
✅ nitro-stable 106 0 25
✅ nuxt-stable 106 0 25
✅ sveltekit-stable 125 0 6
✅ vite-stable 106 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 106 0 25
✅ express-stable 106 0 25
✅ fastify-stable 106 0 25
✅ hono-stable 106 0 25
✅ nextjs-turbopack-canary 112 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 131 0 0
✅ nextjs-webpack-canary 112 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 131 0 0
✅ nitro-stable 106 0 25
✅ nuxt-stable 106 0 25
✅ sveltekit-stable 125 0 6
✅ vite-stable 106 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 106 0 25
✅ express-stable 106 0 25
✅ fastify-stable 106 0 25
✅ hono-stable 106 0 25
✅ nextjs-turbopack-canary 112 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 131 0 0
✅ nextjs-webpack-canary 112 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 131 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 131 0 0
✅ nitro-stable 106 0 25
✅ nuxt-stable 106 0 25
✅ sveltekit-stable 125 0 6
✅ vite-stable 106 0 25
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 131 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 106 0 25
✅ e2e-local-dev-tanstack-start- 106 0 25
✅ e2e-local-postgres-nest-stable 106 0 25
✅ e2e-local-postgres-tanstack-start- 106 0 25
✅ e2e-local-prod-nest-stable 106 0 25
✅ e2e-local-prod-tanstack-start- 106 0 25
✅ e2e-vercel-prod-tanstack-start 105 0 26

📋 View full workflow run

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 25, 2026

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.030s (-32.1% 🟢) 1.005s (~) 0.975s 10 1.00x
💻 Local Nitro 0.030s (-29.9% 🟢) 1.005s (~) 0.975s 10 1.00x
🐘 Postgres Express 0.046s (-20.2% 🟢) 1.011s (~) 0.965s 10 1.54x
💻 Local Next.js (Turbopack) 0.050s 1.005s 0.956s 10 1.65x
🐘 Postgres Nitro 0.051s (-47.0% 🟢) 1.013s (-2.9%) 0.962s 10 1.68x
🐘 Postgres Next.js (Turbopack) 0.059s 1.011s 0.952s 10 1.96x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.260s (+10.5% 🔺) 2.189s (+2.5%) 1.929s 10 1.00x
▲ Vercel Nitro 0.270s (-34.1% 🟢) 2.182s (-13.0% 🟢) 1.912s 10 1.04x
▲ Vercel Next.js (Turbopack) 0.340s (+35.1% 🔺) 2.573s (+10.3% 🔺) 2.233s 10 1.31x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.073s (-5.2% 🟢) 2.005s (~) 0.933s 10 1.00x
💻 Local Express 1.074s (-4.5%) 2.006s (~) 0.932s 10 1.00x
🐘 Postgres Express 1.080s (-5.8% 🟢) 2.009s (~) 0.928s 10 1.01x
🐘 Postgres Nitro 1.087s (-4.6%) 2.009s (~) 0.922s 10 1.01x
💻 Local Next.js (Turbopack) 1.113s 2.006s 0.893s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.118s 2.010s 0.892s 10 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.575s (-16.0% 🟢) 3.311s (-13.0% 🟢) 1.736s 10 1.00x
▲ Vercel Nitro 1.604s (-58.8% 🟢) 3.182s (-46.2% 🟢) 1.578s 10 1.02x
▲ Vercel Next.js (Turbopack) 1.615s (-20.6% 🟢) 3.667s (-4.3%) 2.052s 10 1.03x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.401s (-5.0%) 11.021s (~) 0.619s 3 1.00x
🐘 Postgres Express 10.403s (-5.1% 🟢) 11.015s (~) 0.612s 3 1.00x
🐘 Postgres Nitro 10.422s (-4.1%) 11.020s (~) 0.598s 3 1.00x
💻 Local Express 10.427s (-4.5%) 11.022s (~) 0.596s 3 1.00x
💻 Local Next.js (Turbopack) 10.680s 11.023s 0.344s 3 1.03x
🐘 Postgres Next.js (Turbopack) 10.742s 11.018s 0.276s 3 1.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 13.366s (-43.7% 🟢) 14.672s (-41.6% 🟢) 1.306s 3 1.00x
▲ Vercel Express 13.834s (-18.5% 🟢) 15.463s (-22.8% 🟢) 1.629s 2 1.03x
▲ Vercel Next.js (Turbopack) 14.111s (-18.5% 🟢) 15.857s (-18.3% 🟢) 1.746s 2 1.06x

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

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 13.448s (-7.8% 🟢) 14.015s (-6.7% 🟢) 0.567s 5 1.00x
💻 Local Nitro 13.474s (-10.5% 🟢) 14.025s (-12.5% 🟢) 0.551s 5 1.00x
🐘 Postgres Nitro 13.486s (-7.6% 🟢) 14.016s (-6.7% 🟢) 0.530s 5 1.00x
💻 Local Express 13.489s (-9.9% 🟢) 14.027s (-6.7% 🟢) 0.538s 5 1.00x
💻 Local Next.js (Turbopack) 14.066s 15.029s 0.963s 4 1.05x
🐘 Postgres Next.js (Turbopack) 14.108s 15.017s 0.909s 4 1.05x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 20.520s (-68.2% 🟢) 22.271s (-66.6% 🟢) 1.751s 3 1.00x
▲ Vercel Next.js (Turbopack) 22.404s (-57.4% 🟢) 24.565s (-55.0% 🟢) 2.162s 3 1.09x
▲ Vercel Express 23.476s (-53.3% 🟢) 24.915s (-52.6% 🟢) 1.439s 3 1.14x

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

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 11.830s (-15.5% 🟢) 12.017s (-17.6% 🟢) 0.187s 8 1.00x
💻 Local Nitro 11.857s (-29.4% 🟢) 12.021s (-29.4% 🟢) 0.164s 8 1.00x
🐘 Postgres Nitro 11.928s (-14.6% 🟢) 12.019s (-16.0% 🟢) 0.092s 8 1.01x
💻 Local Express 12.252s (-26.2% 🟢) 12.880s (-24.4% 🟢) 0.628s 7 1.04x
💻 Local Next.js (Turbopack) 13.136s 13.742s 0.605s 7 1.11x
🐘 Postgres Next.js (Turbopack) 13.342s 14.015s 0.673s 7 1.13x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 31.050s (-92.7% 🟢) 32.614s (-92.3% 🟢) 1.564s 3 1.00x
▲ Vercel Next.js (Turbopack) 32.330s (-91.8% 🟢) 34.117s (-91.4% 🟢) 1.787s 3 1.04x
▲ Vercel Express 34.298s (-71.7% 🟢) 35.874s (-71.0% 🟢) 1.576s 3 1.10x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.139s (-9.6% 🟢) 2.007s (~) 0.868s 15 1.00x
💻 Local Nitro 1.149s (-29.6% 🟢) 2.005s (-3.3%) 0.857s 15 1.01x
🐘 Postgres Nitro 1.162s (-8.8% 🟢) 2.007s (~) 0.845s 15 1.02x
💻 Local Express 1.181s (-20.7% 🟢) 2.006s (~) 0.825s 15 1.04x
🐘 Postgres Next.js (Turbopack) 1.198s 2.007s 0.809s 15 1.05x
💻 Local Next.js (Turbopack) 1.266s 2.006s 0.740s 15 1.11x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.615s (-7.2% 🟢) 4.157s (-3.8%) 1.542s 8 1.00x
▲ Vercel Express 2.658s (-7.1% 🟢) 4.123s (-10.8% 🟢) 1.465s 8 1.02x
▲ Vercel Next.js (Turbopack) 3.490s (+2.7%) 5.168s (+4.8%) 1.678s 6 1.33x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.187s (-49.7% 🟢) 2.007s (-33.3% 🟢) 0.820s 15 1.00x
🐘 Postgres Nitro 1.227s (-47.8% 🟢) 2.007s (-33.3% 🟢) 0.781s 15 1.03x
🐘 Postgres Next.js (Turbopack) 1.343s 2.007s 0.665s 15 1.13x
💻 Local Nitro 1.594s (-49.3% 🟢) 2.005s (-48.4% 🟢) 0.411s 15 1.34x
💻 Local Express 1.767s (-40.2% 🟢) 2.007s (-41.9% 🟢) 0.240s 15 1.49x
💻 Local Next.js (Turbopack) 1.802s 2.008s 0.205s 15 1.52x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.341s (-17.6% 🟢) 4.507s (-23.9% 🟢) 1.166s 7 1.00x
▲ Vercel Express 3.426s (-5.3% 🟢) 5.299s (+3.7%) 1.873s 6 1.03x
▲ Vercel Next.js (Turbopack) 4.002s (-43.6% 🟢) 6.299s (-29.3% 🟢) 2.297s 5 1.20x

🔍 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 🥇 Express 1.298s (-62.8% 🟢) 2.009s (-49.9% 🟢) 0.711s 15 1.00x
🐘 Postgres Nitro 1.361s (-60.9% 🟢) 2.009s (-49.9% 🟢) 0.647s 15 1.05x
🐘 Postgres Next.js (Turbopack) 1.603s 2.007s 0.405s 15 1.23x
💻 Local Nitro 4.280s (-48.7% 🟢) 4.726s (-47.6% 🟢) 0.446s 7 3.30x
💻 Local Next.js (Turbopack) 4.560s 5.177s 0.617s 6 3.51x
💻 Local Express 5.508s (-33.9% 🟢) 6.013s (-33.4% 🟢) 0.505s 5 4.24x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 6.101s (+73.0% 🔺) 7.747s (+40.0% 🔺) 1.646s 4 1.00x
▲ Vercel Next.js (Turbopack) 6.550s (-26.5% 🟢) 8.494s (-22.5% 🟢) 1.943s 4 1.07x
▲ Vercel Express 9.696s (+128.7% 🔺) 11.105s (+81.2% 🔺) 1.410s 3 1.59x

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

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.136s (-9.6% 🟢) 2.008s (~) 0.872s 15 1.00x
🐘 Postgres Nitro 1.140s (-9.3% 🟢) 2.009s (~) 0.869s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.215s 2.008s 0.794s 15 1.07x
💻 Local Next.js (Turbopack) 1.314s 2.006s 0.692s 15 1.16x
💻 Local Express 1.396s (-26.3% 🟢) 2.006s (-15.1% 🟢) 0.611s 15 1.23x
💻 Local Nitro 1.410s (-24.4% 🟢) 2.005s (-14.3% 🟢) 0.595s 15 1.24x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.444s (-0.6%) 3.561s (-14.6% 🟢) 1.116s 9 1.00x
▲ Vercel Express 2.850s (+10.4% 🔺) 4.042s (-7.1% 🟢) 1.192s 8 1.17x
▲ Vercel Next.js (Turbopack) 2.996s (+2.2%) 5.142s (+10.8% 🔺) 2.146s 6 1.23x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.194s (-49.0% 🟢) 2.008s (-33.3% 🟢) 0.814s 15 1.00x
🐘 Postgres Nitro 1.203s (-48.6% 🟢) 2.009s (-33.3% 🟢) 0.806s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.338s 2.008s 0.670s 15 1.12x
💻 Local Nitro 1.833s (-40.2% 🟢) 2.220s (-42.9% 🟢) 0.387s 14 1.54x
💻 Local Next.js (Turbopack) 2.080s 2.736s 0.656s 11 1.74x
💻 Local Express 2.092s (-33.2% 🟢) 2.507s (-33.4% 🟢) 0.415s 12 1.75x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 4.155s (+30.2% 🔺) 5.681s (+18.6% 🔺) 1.526s 6 1.00x
▲ Vercel Next.js (Turbopack) 4.219s (+34.3% 🔺) 5.983s (+32.3% 🔺) 1.764s 6 1.02x
▲ Vercel Nitro 155.569s (+4711.7% 🔺) 157.009s (+2992.5% 🔺) 1.440s 2 37.44x

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

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.299s (-62.9% 🟢) 2.007s (-49.9% 🟢) 0.709s 15 1.00x
🐘 Postgres Nitro 1.328s (-61.8% 🟢) 2.007s (-49.9% 🟢) 0.679s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.606s 2.008s 0.401s 15 1.24x
💻 Local Next.js (Turbopack) 4.838s 5.345s 0.508s 6 3.72x
💻 Local Nitro 4.860s (-46.8% 🟢) 5.345s (-46.7% 🟢) 0.485s 6 3.74x
💻 Local Express 6.498s (-26.2% 🟢) 6.815s (-26.5% 🟢) 0.317s 5 5.00x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.766s (-6.4% 🟢) 6.497s (-4.7%) 1.731s 5 1.00x
▲ Vercel Express 5.644s (-12.0% 🟢) 7.185s (-12.2% 🟢) 1.540s 5 1.18x
▲ Vercel Next.js (Turbopack) 6.355s (-5.9% 🟢) 7.777s (-9.0% 🟢) 1.422s 4 1.33x

🔍 Observability: Nitro | 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.447s (-45.5% 🟢) 1.007s (~) 0.560s 60 1.00x
🐘 Postgres Express 0.468s (-44.2% 🟢) 1.006s (-1.7%) 0.538s 60 1.05x
💻 Local Nitro 0.469s (-52.2% 🟢) 1.004s (-8.2% 🟢) 0.535s 60 1.05x
💻 Local Express 0.473s (-52.0% 🟢) 1.004s (-6.7% 🟢) 0.531s 60 1.06x
🐘 Postgres Next.js (Turbopack) 0.673s 1.006s 0.332s 60 1.51x
💻 Local Next.js (Turbopack) 0.733s 1.004s 0.271s 60 1.64x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.739s (-78.5% 🟢) 6.038s (-74.9% 🟢) 1.299s 11 1.00x
▲ Vercel Express 6.091s (-68.0% 🟢) 7.501s (-64.8% 🟢) 1.410s 8 1.29x
▲ Vercel Next.js (Turbopack) 6.110s (-57.9% 🟢) 7.822s (-51.4% 🟢) 1.712s 8 1.29x

🔍 Observability: Nitro | 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 🥇 Nitro 1.014s (-47.4% 🟢) 1.586s (-24.5% 🟢) 0.571s 57 1.00x
🐘 Postgres Express 1.066s (-46.1% 🟢) 1.643s (-27.2% 🟢) 0.577s 55 1.05x
💻 Local Nitro 1.175s (-61.3% 🟢) 2.006s (-46.6% 🟢) 0.831s 45 1.16x
💻 Local Express 1.194s (-60.4% 🟢) 2.007s (-44.0% 🟢) 0.813s 45 1.18x
🐘 Postgres Next.js (Turbopack) 1.597s 2.008s 0.411s 45 1.57x
💻 Local Next.js (Turbopack) 1.831s 2.028s 0.197s 45 1.81x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 11.887s (-69.9% 🟢) 13.616s (-67.0% 🟢) 1.729s 7 1.00x
▲ Vercel Express 14.753s (-57.3% 🟢) 16.268s (-55.8% 🟢) 1.515s 6 1.24x
▲ Vercel Next.js (Turbopack) 14.769s (-70.3% 🟢) 16.825s (-67.5% 🟢) 2.056s 6 1.24x

🔍 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.059s (-48.4% 🟢) 2.407s (-44.9% 🟢) 0.349s 50 1.00x
🐘 Postgres Nitro 2.195s (-46.5% 🟢) 2.798s (-39.2% 🟢) 0.603s 43 1.07x
💻 Local Nitro 2.620s (-71.8% 🟢) 3.057s (-69.5% 🟢) 0.437s 40 1.27x
💻 Local Express 2.693s (-70.8% 🟢) 3.033s (-69.7% 🟢) 0.340s 40 1.31x
🐘 Postgres Next.js (Turbopack) 3.159s 4.009s 0.849s 30 1.53x
💻 Local Next.js (Turbopack) 3.865s 4.141s 0.276s 30 1.88x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 25.314s (-73.9% 🟢) 27.205s (-72.4% 🟢) 1.890s 5 1.00x
▲ Vercel Express 27.692s (-78.7% 🟢) 29.740s (-77.5% 🟢) 2.048s 5 1.09x
▲ Vercel Next.js (Turbopack) 32.069s (-70.1% 🟢) 34.206s (-68.6% 🟢) 2.137s 4 1.27x

🔍 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.172s (-39.0% 🟢) 1.006s (~) 0.833s 60 1.00x
🐘 Postgres Nitro 0.175s (-38.1% 🟢) 1.006s (~) 0.831s 60 1.02x
🐘 Postgres Next.js (Turbopack) 0.227s 1.006s 0.779s 60 1.32x
💻 Local Nitro 0.375s (-38.0% 🟢) 1.004s (-1.7%) 0.629s 60 2.17x
💻 Local Express 0.397s (-29.1% 🟢) 1.004s (~) 0.607s 60 2.31x
💻 Local Next.js (Turbopack) 0.540s 1.004s 0.464s 60 3.14x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.265s (+36.4% 🔺) 3.782s (+12.9% 🔺) 1.517s 16 1.00x
▲ Vercel Express 2.382s (+21.9% 🔺) 3.601s (-1.0%) 1.219s 17 1.05x
▲ Vercel Next.js (Turbopack) 3.060s (+51.3% 🔺) 4.776s (+25.9% 🔺) 1.715s 13 1.35x

🔍 Observability: Nitro | 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 🥇 Express 0.285s (-44.0% 🟢) 1.006s (~) 0.721s 90 1.00x
🐘 Postgres Nitro 0.292s (-41.1% 🟢) 1.006s (~) 0.714s 90 1.02x
🐘 Postgres Next.js (Turbopack) 0.432s 1.006s 0.574s 90 1.51x
💻 Local Nitro 2.009s (-20.9% 🟢) 2.494s (-17.1% 🟢) 0.485s 37 7.04x
💻 Local Express 2.151s (-14.4% 🟢) 2.736s (-9.1% 🟢) 0.585s 33 7.54x
💻 Local Next.js (Turbopack) 2.207s 2.854s 0.647s 32 7.73x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.753s (+47.3% 🔺) 6.171s (+28.0% 🔺) 1.418s 16 1.00x
▲ Vercel Express 6.170s (+102.5% 🔺) 7.857s (+63.4% 🔺) 1.686s 12 1.30x
▲ Vercel Next.js (Turbopack) 6.320s (+78.8% 🔺) 7.925s (+52.6% 🔺) 1.605s 12 1.33x

🔍 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 🥇 Express 0.598s (-26.9% 🟢) 1.005s (-1.2%) 0.407s 120 1.00x
🐘 Postgres Nitro 0.628s (-20.5% 🟢) 1.014s (+0.7%) 0.386s 119 1.05x
🐘 Postgres Next.js (Turbopack) 0.895s 1.041s 0.146s 116 1.50x
💻 Local Nitro 8.995s (-19.6% 🟢) 9.567s (-18.0% 🟢) 0.572s 13 15.04x
💻 Local Express 9.991s (-10.7% 🟢) 10.530s (-11.8% 🟢) 0.539s 12 16.70x
💻 Local Next.js (Turbopack) 10.515s 11.027s 0.512s 11 17.58x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 13.489s (+74.7% 🔺) 14.987s (+59.4% 🔺) 1.499s 9 1.00x
▲ Vercel Express 15.828s (+113.3% 🔺) 17.471s (+89.0% 🔺) 1.643s 8 1.17x
▲ Vercel Next.js (Turbopack) 18.071s (+75.0% 🔺) 20.385s (+65.9% 🔺) 2.314s 7 1.34x

🔍 Observability: Nitro | 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.117s (+422.6% 🔺) 2.005s (+99.6% 🔺) 0.010s (-23.2% 🟢) 2.016s (+97.9% 🔺) 0.900s 10 1.00x
🐘 Postgres Express 1.122s (+447.1% 🔺) 2.003s (+100.6% 🔺) 0.001s (-37.5% 🟢) 2.010s (+98.7% 🔺) 0.888s 10 1.00x
🐘 Postgres Nitro 1.145s (+458.4% 🔺) 2.002s (+100.3% 🔺) 0.002s (+6.7% 🔺) 2.009s (+98.7% 🔺) 0.865s 10 1.03x
💻 Local Express 1.158s (+481.6% 🔺) 2.005s (+99.6% 🔺) 0.013s (+5.8% 🔺) 2.020s (+98.4% 🔺) 0.862s 10 1.04x
💻 Local Next.js (Turbopack) 1.176s 2.003s 0.010s 2.017s 0.841s 10 1.05x
🐘 Postgres Next.js (Turbopack) 1.213s 2.002s 0.001s 2.010s 0.797s 10 1.09x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.152s (-43.8% 🟢) 3.134s (-40.6% 🟢) 1.841s (+148.1% 🔺) 5.340s (-17.6% 🟢) 3.188s 10 1.00x
▲ Vercel Express 2.557s (+2.1%) 3.179s (-22.3% 🟢) 2.754s (+186.7% 🔺) 6.560s (+17.3% 🔺) 4.003s 10 1.19x
▲ Vercel Next.js (Turbopack) 2.780s (-59.4% 🟢) 3.555s (-58.9% 🟢) 2.085s (+230.0% 🔺) 6.401s (-34.6% 🟢) 3.621s 10 1.29x

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

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.503s (+138.6% 🔺) 2.003s (+99.0% 🔺) 0.004s (+5.3% 🔺) 2.025s (+98.0% 🔺) 0.522s 30 1.00x
🐘 Postgres Nitro 1.516s (+142.9% 🔺) 2.000s (+98.6% 🔺) 0.004s (-4.1%) 2.025s (+98.0% 🔺) 0.509s 30 1.01x
💻 Local Express 1.535s (+102.8% 🔺) 2.012s (+95.5% 🔺) 0.010s (+6.6% 🔺) 2.023s (+94.6% 🔺) 0.488s 30 1.02x
💻 Local Next.js (Turbopack) 1.669s 2.009s 0.009s 2.021s 0.352s 30 1.11x
🐘 Postgres Next.js (Turbopack) 1.670s 2.010s 0.004s 2.025s 0.355s 30 1.11x
💻 Local Nitro 1.687s (+101.1% 🔺) 2.011s (+98.7% 🔺) 0.010s (+5.2% 🔺) 2.201s (+97.3% 🔺) 0.514s 28 1.12x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.824s (-80.2% 🟢) 6.982s (-77.3% 🟢) 0.209s (+86.6% 🔺) 7.664s (-75.9% 🟢) 1.840s 8 1.00x
▲ Vercel Express 5.981s (-8.0% 🟢) 7.379s (-7.9% 🟢) 0.206s (-49.7% 🟢) 7.960s (-9.9% 🟢) 1.979s 8 1.03x
▲ Vercel Next.js (Turbopack) 5.996s (-64.6% 🟢) 7.395s (-59.5% 🟢) 0.278s (+31.6% 🔺) 8.160s (-56.9% 🟢) 2.164s 8 1.03x

🔍 Observability: Nitro | Express | 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.643s (-33.6% 🟢) 1.048s (-16.0% 🟢) 0.000s (+24.1% 🔺) 1.058s (-15.9% 🟢) 0.415s 58 1.00x
🐘 Postgres Express 0.650s (-32.3% 🟢) 1.030s (-19.4% 🟢) 0.000s (+58.6% 🔺) 1.046s (-19.9% 🟢) 0.396s 58 1.01x
🐘 Postgres Next.js (Turbopack) 0.759s 1.072s 0.000s 1.078s 0.320s 56 1.18x
💻 Local Nitro 1.308s (+7.0% 🔺) 2.013s (~) 0.000s (-33.3% 🟢) 2.015s (~) 0.707s 30 2.03x
💻 Local Express 1.336s (+9.1% 🔺) 2.015s (~) 0.000s (-10.0% 🟢) 2.017s (~) 0.681s 30 2.08x
💻 Local Next.js (Turbopack) 1.643s 2.013s 0.000s 2.196s 0.552s 28 2.55x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.525s (+15.5% 🔺) 4.731s (+7.7% 🔺) 0.000s (-100.0% 🟢) 5.127s (+6.6% 🔺) 1.602s 12 1.00x
▲ Vercel Express 3.984s (+6.5% 🔺) 5.405s (+5.9% 🔺) 0.000s (-50.0% 🟢) 5.797s (+4.8%) 1.814s 11 1.13x
▲ Vercel Next.js (Turbopack) 4.120s (-59.5% 🟢) 5.733s (-50.2% 🟢) 0.000s (+Infinity% 🔺) 6.235s (-48.3% 🟢) 2.116s 10 1.17x

🔍 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 🥇 Express 1.255s (-29.2% 🟢) 1.903s (-12.6% 🟢) 0.000s (+Infinity% 🔺) 1.915s (-12.9% 🟢) 0.661s 32 1.00x
🐘 Postgres Nitro 1.280s (-28.5% 🟢) 2.029s (-5.2% 🟢) 0.000s (+86.7% 🔺) 2.061s (-5.2% 🟢) 0.781s 30 1.02x
🐘 Postgres Next.js (Turbopack) 1.632s 2.262s 0.000s 2.269s 0.637s 27 1.30x
💻 Local Nitro 2.949s (-13.0% 🟢) 3.610s (-10.5% 🟢) 0.000s (-77.9% 🟢) 3.617s (-10.4% 🟢) 0.668s 17 2.35x
💻 Local Next.js (Turbopack) 2.952s 3.467s 0.001s 3.478s 0.526s 18 2.35x
💻 Local Express 3.123s (-9.9% 🟢) 4.030s (~) 0.000s (-41.7% 🟢) 4.032s (~) 0.910s 15 2.49x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.191s (+26.8% 🔺) 6.338s (+17.9% 🔺) 0.000s (-59.3% 🟢) 6.697s (+15.6% 🔺) 1.505s 9 1.00x
▲ Vercel Next.js (Turbopack) 5.792s (+3.1%) 7.750s (+11.0% 🔺) 0.001s (+500.0% 🔺) 8.205s (+8.8% 🔺) 2.413s 8 1.12x
▲ Vercel Express 5.960s (+29.9% 🔺) 6.976s (+15.8% 🔺) 0.000s (+Infinity% 🔺) 7.349s (+13.8% 🔺) 1.388s 9 1.15x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 17/21
🐘 Postgres Express 18/21
▲ Vercel Nitro 18/21
Fastest World by Framework

Winner determined by most benchmark wins

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

…mpat

Co-authored-by: Mitul Shah <mitulxshah@gmail.com>
@mitul-s mitul-s marked this pull request as ready for review May 26, 2026 16:49
@mitul-s mitul-s requested a review from a team as a code owner May 26, 2026 16:49
@mitul-s mitul-s enabled auto-merge (squash) May 26, 2026 16:49
@mitul-s mitul-s merged commit 8633ebb into main May 26, 2026
194 of 209 checks passed
@mitul-s mitul-s deleted the c+ms/blur-style-prop-1dc2 branch May 26, 2026 17:04
@github-actions
Copy link
Copy Markdown
Contributor

No backport to stable for 8633ebb (AI decision).

The EncryptedDataBlock component being fixed does not exist on stable — that file's stable version has no blur-xs usage and no encrypted data preview. This fix builds on main-only behavior, so there is nothing to backport.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

8633ebb9b32f28cce4344329840aca47e22d3197

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants