[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[web-shared] Enable in-line decryption for data inspector in detail panel - #1722

Merged
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2
Apr 14, 2026
Merged

[web-shared] Enable in-line decryption for data inspector in detail panel#1722
karthikscale3 merged 82 commits into
mainfrom
karthik/fix-decryption-itg2

Conversation

@karthikscale3

Copy link
Copy Markdown
Contributor

Changes

Enable in-line decryption for data inspector in detail panel. This is a follow-up to the following PR

@changeset-bot

changeset-botBot commented Apr 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f088de9

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

This PR includes changesets to release 1 package
NameType
@workflow/web-sharedPatch

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

vercelBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 marked this pull request as ready for review April 14, 2026 03:46
@karthikscale3
karthikscale3 requested a review from a team as a code ownerApril 14, 2026 03:46
@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.035s (-16.1% 🟢)1.006s (~)0.971s101.00x
💻 LocalExpress0.044s (+22.0% 🔺)1.006s (~)0.961s101.27x
💻 LocalNext.js (Turbopack)0.046s1.005s0.959s101.32x
🐘 PostgresNext.js (Turbopack)0.057s (+16.9% 🔺)1.009s (~)0.952s101.64x
🐘 PostgresExpress0.061s (+6.8% 🔺)1.011s (~)0.950s101.75x
🐘 PostgresNitro0.070s (+5.1% 🔺)1.011s (~)0.941s102.01x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro0.261s (+0.9%)2.277s (+12.9% 🔺)2.016s101.00x
▲ VercelExpress0.296s (+14.7% 🔺)2.117s (+17.6% 🔺)1.820s101.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 1 step

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro1.095s (-2.9%)2.006s (~)0.910s101.00x
💻 LocalNext.js (Turbopack)1.114s2.005s0.892s101.02x
💻 LocalExpress1.131s (+3.1%)2.006s (~)0.876s101.03x
🐘 PostgresNext.js (Turbopack)1.135s (+1.1%)2.011s (~)0.876s101.04x
🐘 PostgresExpress1.143s (-0.6%)2.009s (~)0.866s101.04x
🐘 PostgresNitro1.149s (~)2.010s (~)0.861s101.05x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.845s (-3.2%)3.905s (+1.9%)2.060s101.00x
▲ VercelExpress1.923s (-3.0%)3.398s (-12.0% 🟢)1.475s101.04x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 10 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro10.629s (-2.9%)11.021s (~)0.393s31.00x
💻 LocalNext.js (Turbopack)10.771s11.023s0.253s31.01x
🐘 PostgresNext.js (Turbopack)10.853s (+0.6%)11.025s (~)0.172s31.02x
🐘 PostgresExpress10.897s (~)11.021s (~)0.123s31.03x
🐘 PostgresNitro10.948s (~)11.026s (~)0.078s31.03x
💻 LocalExpress10.969s (+3.1%)11.024s (~)0.055s31.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro16.943s (-10.7% 🟢)19.044s (-7.2% 🟢)2.101s21.00x
▲ VercelExpress17.825s (+0.6%)19.110s (-5.5% 🟢)1.285s21.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro14.169s (-5.6% 🟢)15.028s (~)0.858s41.00x
🐘 PostgresExpress14.486s (~)15.025s (~)0.539s41.02x
🐘 PostgresNext.js (Turbopack)14.525s (+2.5%)15.026s (~)0.501s41.03x
💻 LocalNext.js (Turbopack)14.612s15.030s0.417s41.03x
🐘 PostgresNitro14.678s (+0.8%)15.027s (~)0.349s41.04x
💻 LocalExpress15.004s (+5.3% 🔺)15.281s (+1.7%)0.276s41.06x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express33.195s (-7.1% 🟢)34.735s (-8.2% 🟢)1.540s21.00x
▲ VercelNitro34.156s (~)36.284s (~)2.129s21.03x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express13.857s (-0.7%)14.025s (-2.0%)0.168s71.00x
🐘 PostgresNext.js (Turbopack)13.874s (+3.4%)14.305s (+1.0%)0.431s71.00x
🐘 PostgresNitro14.066s (~)15.026s (+2.0%)0.959s61.02x
💻 LocalNitro14.808s (-11.6% 🟢)15.026s (-11.8% 🟢)0.218s61.07x
💻 LocalNext.js (Turbopack)15.671s16.030s0.359s61.13x
💻 LocalExpress16.909s (+12.4% 🔺)17.031s (+9.7% 🔺)0.122s61.22x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express50.028s (-8.2% 🟢)51.650s (-8.5% 🟢)1.622s21.00x
▲ VercelNitro50.526s (-8.9% 🟢)52.351s (-9.3% 🟢)1.824s21.01x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.223s (+3.1%)2.010s (~)0.788s151.00x
🐘 PostgresExpress1.256s (-1.6%)2.009s (~)0.753s151.03x
🐘 PostgresNitro1.271s (-0.8%)2.011s (~)0.739s151.04x
💻 LocalNitro1.486s (-2.4%)2.005s (~)0.519s151.22x
💻 LocalNext.js (Turbopack)1.486s2.006s0.519s151.22x
💻 LocalExpress1.544s (+7.2% 🔺)2.007s (~)0.462s151.26x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express1.953s (-27.4% 🟢)3.347s (-24.9% 🟢)1.394s91.00x
▲ VercelNitro2.771s (-5.2% 🟢)4.700s (+0.9%)1.929s71.42x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.321s (-1.2%)3.009s (~)0.688s101.00x
🐘 PostgresNext.js (Turbopack)2.389s (-2.4%)3.011s (~)0.621s101.03x
🐘 PostgresNitro2.390s (+1.4%)3.011s (~)0.621s101.03x
💻 LocalNitro2.596s (-12.4% 🟢)3.007s (-20.0% 🟢)0.411s101.12x
💻 LocalNext.js (Turbopack)2.822s3.208s0.385s101.22x
💻 LocalExpress3.086s (+19.7% 🔺)3.884s (+29.1% 🔺)0.798s81.33x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.537s (-3.7%)3.964s (-9.9% 🟢)1.427s81.00x
▲ VercelNitro2.715s (-0.6%)4.318s (-6.0% 🟢)1.603s71.07x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.464s (-0.9%)4.010s (~)0.545s81.00x
🐘 PostgresNitro3.502s (~)4.012s (~)0.510s81.01x
🐘 PostgresNext.js (Turbopack)3.682s (+2.3%)4.009s (~)0.326s81.06x
💻 LocalNext.js (Turbopack)6.491s7.217s0.725s51.87x
💻 LocalNitro6.920s (-17.3% 🟢)7.215s (-20.1% 🟢)0.294s52.00x
💻 LocalExpress8.780s (+30.7% 🔺)9.523s (+35.7% 🔺)0.743s42.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.658s (-15.0% 🟢)4.122s (-16.4% 🟢)1.464s81.00x
▲ VercelNitro2.705s (+3.8%)4.496s (+6.2% 🔺)1.790s71.02x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 10 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)1.216s (+2.2%)2.007s (~)0.791s151.00x
🐘 PostgresExpress1.256s (-0.8%)2.008s (~)0.752s151.03x
🐘 PostgresNitro1.273s (~)2.010s (~)0.737s151.05x
💻 LocalNext.js (Turbopack)1.449s2.006s0.557s151.19x
💻 LocalNitro1.479s (-2.9%)2.005s (~)0.526s151.22x
💻 LocalExpress1.548s (+5.5% 🔺)2.006s (~)0.457s151.27x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro2.203s (+7.5% 🔺)4.113s (~)1.910s81.00x
▲ VercelExpress2.322s (+0.9%)3.714s (-14.1% 🟢)1.392s91.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

Promise.race with 25 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express2.357s (~)3.010s (~)0.653s101.00x
🐘 PostgresNitro2.373s (~)3.009s (~)0.636s101.01x
🐘 PostgresNext.js (Turbopack)2.378s (~)3.010s (~)0.631s101.01x
💻 LocalNitro2.632s (-15.0% 🟢)3.008s (-25.0% 🟢)0.375s101.12x
💻 LocalNext.js (Turbopack)2.812s3.110s0.299s101.19x
💻 LocalExpress3.089s (+3.9%)3.885s (+16.2% 🔺)0.796s81.31x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.118s (+15.4% 🔺)4.622s (+5.3% 🔺)1.504s71.00x
▲ VercelNitro3.708s (+48.5% 🔺)5.673s (+35.4% 🔺)1.965s61.19x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Promise.race with 50 concurrent steps

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.493s (~)4.013s (~)0.521s81.00x
🐘 PostgresNitro3.501s (~)4.012s (~)0.512s81.00x
🐘 PostgresNext.js (Turbopack)3.641s (+1.8%)4.014s (~)0.373s81.04x
💻 LocalNitro7.502s (-19.7% 🟢)8.015s (-20.1% 🟢)0.514s42.15x
💻 LocalNext.js (Turbopack)7.726s8.267s0.541s42.21x
💻 LocalExpress8.925s (+10.9% 🔺)9.023s (+2.9%)0.097s42.56x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.038s (-5.6% 🟢)4.491s (-12.2% 🟢)1.453s71.00x
▲ VercelNitro4.222s (+41.9% 🔺)6.089s (+20.5% 🔺)1.868s51.39x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.671s (-32.2% 🟢)1.004s (-20.0% 🟢)0.333s601.00x
🐘 PostgresExpress0.798s (-4.3%)1.006s (~)0.208s601.19x
🐘 PostgresNext.js (Turbopack)0.805s (+25.7% 🔺)1.023s (+1.7%)0.218s591.20x
🐘 PostgresNitro0.838s (~)1.006s (~)0.169s601.25x
💻 LocalNext.js (Turbopack)0.848s1.021s0.173s591.26x
💻 LocalExpress0.998s (+42.4% 🔺)1.338s (+33.3% 🔺)0.341s451.49x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro8.452s (-9.5% 🟢)10.321s (-7.4% 🟢)1.868s61.00x
▲ VercelExpress8.852s (-8.5% 🟢)10.269s (-11.1% 🟢)1.417s61.05x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.887s (-3.9%)2.052s (-7.8% 🟢)0.166s441.00x
🐘 PostgresNext.js (Turbopack)1.943s (+18.1% 🔺)2.147s (+5.8% 🔺)0.204s431.03x
🐘 PostgresNitro2.071s (+6.9% 🔺)2.913s (+29.4% 🔺)0.841s311.10x
💻 LocalNitro2.198s (-27.2% 🟢)3.007s (-16.1% 🟢)0.809s301.16x
💻 LocalNext.js (Turbopack)2.794s3.181s0.386s291.48x
💻 LocalExpress3.032s (+24.2% 🔺)3.801s (+19.5% 🔺)0.769s241.61x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express28.470s (+1.9%)30.199s (~)1.729s31.00x
▲ VercelNitro31.281s (+11.9% 🔺)33.706s (+12.1% 🔺)2.425s31.10x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express3.857s (-4.1%)4.111s (-7.7% 🟢)0.254s301.00x
🐘 PostgresNext.js (Turbopack)4.003s (+25.4% 🔺)4.332s (+8.9% 🔺)0.329s281.04x
🐘 PostgresNitro4.179s (+7.3% 🔺)5.013s (+20.8% 🔺)0.834s241.08x
💻 LocalNitro7.178s (-22.4% 🟢)8.015s (-20.0% 🟢)0.836s151.86x
💻 LocalNext.js (Turbopack)8.359s9.017s0.658s142.17x
💻 LocalExpress9.218s (+26.2% 🔺)9.865s (+24.1% 🔺)0.646s132.39x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express74.352s (+4.7%)75.689s (+2.7%)1.337s21.00x
▲ VercelNitro74.492s (-2.7%)76.675s (-2.2%)2.184s21.00x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.252s (+18.2% 🔺)1.007s (~)0.755s601.00x
🐘 PostgresExpress0.283s (~)1.007s (~)0.724s601.13x
🐘 PostgresNitro0.304s (+10.4% 🔺)1.008s (~)0.703s601.21x
💻 LocalNext.js (Turbopack)0.524s1.004s0.480s602.08x
💻 LocalNitro0.558s (-3.8%)1.004s (~)0.445s602.22x
💻 LocalExpress0.598s (+2.7%)1.005s (~)0.406s602.38x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.461s (+6.5% 🔺)2.942s (~)1.481s211.00x
▲ VercelExpress1.663s (+15.3% 🔺)3.017s (-6.2% 🟢)1.355s201.14x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Nitro | Express

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.479s (+14.0% 🔺)1.006s (~)0.527s901.00x
🐘 PostgresExpress0.488s (-2.9%)1.006s (~)0.518s901.02x
🐘 PostgresNitro0.525s (+5.0%)1.007s (~)0.482s901.10x
💻 LocalNitro2.353s (-4.9%)3.007s (~)0.654s304.91x
💻 LocalNext.js (Turbopack)2.422s2.976s0.555s315.06x
💻 LocalExpress2.618s (+9.3% 🔺)3.009s (~)0.392s305.47x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express2.302s (-12.2% 🟢)3.739s (-16.5% 🟢)1.437s251.00x
▲ VercelNitro2.578s (-6.4% 🟢)4.515s (+0.7%)1.936s211.12x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.781s (+17.7% 🔺)1.007s (~)0.226s1201.00x
🐘 PostgresExpress0.784s (-0.8%)1.007s (~)0.223s1201.00x
🐘 PostgresNitro0.874s (+11.7% 🔺)1.047s (+3.9%)0.173s1151.12x
💻 LocalNext.js (Turbopack)10.144s10.691s0.547s1212.99x
💻 LocalNitro10.222s (-8.0% 🟢)10.934s (-7.7% 🟢)0.712s1113.09x
💻 LocalExpress11.398s (+13.9% 🔺)12.029s (+12.5% 🔺)0.632s1014.60x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express6.280s (-4.8%)7.561s (-12.3% 🟢)1.280s161.00x
▲ VercelNitro7.572s (+13.4% 🔺)9.558s (+8.8% 🔺)1.985s131.21x
▲ VercelNext.js (Turbopack)⚠️missing----

🔍 Observability: Express | Nitro

Stream Benchmarks(includes TTFB metrics)
workflow with stream

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
💻 Local🥇 Nitro0.141s (-30.7% 🟢)1.004s (~)0.009s (-20.2% 🟢)1.015s (~)0.875s101.00x
💻 LocalNext.js (Turbopack)0.171s1.002s0.010s1.015s0.844s101.22x
🐘 PostgresNext.js (Turbopack)0.192s (+16.2% 🔺)1.001s (~)0.001s (+30.0% 🔺)1.009s (~)0.817s101.37x
💻 LocalExpress0.205s (+46.7% 🔺)1.004s (~)0.012s (+26.6% 🔺)1.018s (~)0.813s101.46x
🐘 PostgresExpress0.209s (+1.3%)0.994s (~)0.001s (+7.7% 🔺)1.009s (~)0.800s101.49x
🐘 PostgresNitro0.216s (+1.2%)0.996s (~)0.001s (+7.7% 🔺)1.011s (~)0.796s101.53x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro1.410s (-10.6% 🟢)2.730s (-9.0% 🟢)0.806s (+117.3% 🔺)4.044s (+6.3% 🔺)2.633s101.00x
▲ VercelExpress1.806s (+17.7% 🔺)2.972s (+7.4% 🔺)1.018s (+43.8% 🔺)4.360s (+9.9% 🔺)2.555s101.28x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

stream pipeline with 5 transform steps (1MB)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express0.593s (-2.4%)1.006s (~)0.004s (-19.2% 🟢)1.022s (~)0.429s591.00x
🐘 PostgresNext.js (Turbopack)0.618s (+7.1% 🔺)1.009s (~)0.006s (+50.2% 🔺)1.024s (~)0.406s591.04x
🐘 PostgresNitro0.646s (+5.3% 🔺)1.004s (~)0.005s (+28.6% 🔺)1.024s (~)0.377s591.09x
💻 LocalNitro0.656s (-9.7% 🟢)1.011s (~)0.009s (-12.5% 🟢)1.114s (+8.8% 🔺)0.458s541.11x
💻 LocalExpress0.735s (+31.6% 🔺)1.012s (~)0.010s (+10.9% 🔺)1.024s (~)0.289s591.24x
💻 LocalNext.js (Turbopack)0.763s1.010s0.009s1.115s0.352s541.29x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Nitro4.363s (-2.6%)6.053s (~)0.259s (-8.4% 🟢)6.785s (-2.6%)2.423s91.00x
▲ VercelExpress4.578s (+10.3% 🔺)5.798s (-2.0%)0.283s (+3.3%)6.510s (-2.1%)1.931s101.05x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Nitro | Express

10 parallel streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Next.js (Turbopack)0.926s (~)1.151s (+3.6%)0.000s (-66.0% 🟢)1.160s (+3.6%)0.234s531.00x
🐘 PostgresExpress0.946s (~)1.147s (-1.9%)0.000s (+66.7% 🔺)1.178s (-0.6%)0.232s511.02x
🐘 PostgresNitro0.989s (+0.9%)1.336s (+12.0% 🔺)0.000s (-100.0% 🟢)1.368s (+12.3% 🔺)0.378s441.07x
💻 LocalNitro1.148s (-7.3% 🟢)2.018s (~)0.000s (+50.0% 🔺)2.020s (~)0.871s301.24x
💻 LocalNext.js (Turbopack)1.231s2.018s0.000s2.021s0.791s301.33x
💻 LocalExpress1.249s (+9.6% 🔺)2.022s (~)0.000s (+12.5% 🔺)2.024s (~)0.774s301.35x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.209s (+22.5% 🔺)4.281s (+11.7% 🔺)0.000s (-96.0% 🟢)4.616s (+6.8% 🔺)1.406s131.00x
▲ VercelNitro3.233s (+10.2% 🔺)4.549s (+9.0% 🔺)0.000s (+116.7% 🔺)5.093s (+9.3% 🔺)1.859s121.01x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

fan-out fan-in 10 streams (1MB each)

💻 Local Development

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
🐘 Postgres🥇 Express1.739s (-2.3%)2.098s (-1.8%)0.000s (+Infinity% 🔺)2.116s (-1.4%)0.377s291.00x
🐘 PostgresNext.js (Turbopack)1.822s (-3.1%)2.071s (-8.4% 🟢)0.000s (+Infinity% 🔺)2.100s (-7.4% 🟢)0.278s291.05x
🐘 PostgresNitro1.852s (+5.0% 🔺)2.178s (+3.7%)0.000s (+107.1% 🔺)2.189s (+3.6%)0.338s281.06x
💻 LocalNitro3.406s (-2.8%)3.967s (-3.3%)0.000s (-66.5% 🟢)3.971s (-3.3%)0.564s161.96x
💻 LocalNext.js (Turbopack)3.419s4.031s0.001s4.035s0.617s151.97x
💻 LocalExpress3.530s (+7.8% 🔺)4.233s (+8.3% 🔺)0.000s (-32.1% 🟢)4.235s (+8.3% 🔺)0.705s152.03x

▲ Production (Vercel)

WorldFrameworkWorkflow TimeTTFBSlurpWall TimeOverheadSamplesvs Fastest
▲ Vercel🥇 Express3.963s (-6.3% 🟢)4.927s (-12.8% 🟢)0.000s (-100.0% 🟢)5.303s (-15.9% 🟢)1.340s121.00x
▲ VercelNitro4.229s (+8.7% 🔺)5.931s (+9.0% 🔺)0.000s (-81.7% 🟢)6.416s (+7.8% 🔺)2.187s101.07x
▲ VercelNext.js (Turbopack)⚠️missing-----

🔍 Observability: Express | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World🥇 Fastest FrameworkWins
💻 LocalNitro17/21
🐘 PostgresExpress11/21
▲ VercelExpress13/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework🥇 Fastest WorldWins
Express🐘 Postgres16/21
Next.js (Turbopack)🐘 Postgres17/21
Nitro🐘 Postgres14/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

@github-actions

github-actionsBot commented Apr 14, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production923067990
✅ 💻 Local Development89801821080
✅ 📦 Local Production89801821080
✅ 🐘 Local Postgres89801821080
✅ 🪟 Windows820890
❌ 🌍 Community Worlds1337424231
✅ 📋 Other228042270
Total4060746874821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345

turso (60 failed):

  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • addTenWorkflow | wrun_01KP528VYDDBT8KTAJWQPJRDBP
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KP52A4ECAC6TZE7JQX9CRH07
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KP52930MERMWKMYP2XFTVNT5
  • promiseRaceWorkflow | wrun_01KP5298YTXHGVA8SDQ9TRCCK5
  • promiseAnyWorkflow | wrun_01KP529B85G29AB3SW9BGQD3RT
  • importedStepOnlyWorkflow | wrun_01KP52AEWRAWD7KYKWY0CHX00S
  • hookWorkflow | wrun_01KP529QE541X8VBE2VE0XXPKH
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KP52A3W2ACE6T3JH36FRBS3W
  • webhookWorkflow | wrun_01KP52AC5M8VDWF8GFRFF01GG3
  • sleepingWorkflow | wrun_01KP52AJEE571RJYP347ETBS23
  • parallelSleepWorkflow | wrun_01KP52AYD93GRNTEVP4BFTWD20
  • nullByteWorkflow | wrun_01KP52B357672Z7S22V9M7YSAC
  • workflowAndStepMetadataWorkflow | wrun_01KP52B5EM35KQHKEQ2V7GBZ4D
  • fetchWorkflow | wrun_01KP52DVZ3XBN5GYDBKEZ0QZZN
  • promiseRaceStressTestWorkflow | wrun_01KP52DZKN6GXPQKX2PNF3VE0Y
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KP52HS2MW3P1K8V72RK3NYC2
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KP52JE839W1MHXM7TD1A320X
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KP52K5SX5WGS2J85DJ2DNRP9
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KP52KTMZJ1NCBQT1QFCH7SRB
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KP52M4542SYGCMKCJEBH3YN8
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KP52MBFC994AV2M0H0666PNJ
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KP52MDPNDTRANKTFQ4W8E4NB
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KP52MSPY2HATHNC8C7ZRDE8J
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KP52N94FE2NEHZ608BRT8YGC
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KP52NFCX11CSAD8X3EVS4EKB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KP52NPMBSYKD8AXC36V0SXJ0
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KP52NX6YWBTSY8DYP7S3AHZJ
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KP52P39YVAXXX00EDYY07K4V
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KP52PA8YDJMWQP8E288AAD8G
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KP52PHFSNG729V6W4YMWPWVJ
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KP52PXDT50MXADXXVAJR4QD2
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KP52Q5SXJCD4CT6TGW2ENRN2
  • cancelRun - cancelling a running workflow | wrun_01KP52QD0RMBP2GRJH0W3HDWRD
  • cancelRun via CLI - cancelling a running workflow | wrun_01KP52QQKD7BAFWX6ET1QYAC3K
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KP52R4G627YMB6DYNPXKNTA8
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KP52RTVDTSSWTFF98Y6T1X9H
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KP52S6514V5TJ08VRD51941E
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KP52SEZAQQDXA6FHADF3W2QJ
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KP52SH85M5HFBX5Y0WE9DE4V
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KP52SKG0FZF6ZQQXXKAAJ345
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KP52SQGKGGFHE4QW2W43033T

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro8307
✅ example8307
✅ express8307
✅ fastify8307
✅ hono8307
✅ nextjs-turbopack8802
✅ nextjs-webpack8802
✅ nitro8307
✅ nuxt8307
✅ sveltekit8307
✅ vite8307
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable76014
✅ express-stable76014
✅ fastify-stable76014
✅ hono-stable76014
✅ nextjs-turbopack-canary63027
✅ nextjs-turbopack-stable8208
✅ nextjs-webpack-canary63027
✅ nextjs-webpack-stable8208
✅ nitro-stable76014
✅ nuxt-stable76014
✅ sveltekit-stable76014
✅ vite-stable76014
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack8208
❌ 🌍 Community Worlds
AppPassedFailedSkipped
✅ mongodb-dev600
❌ mongodb5678
✅ redis-dev600
❌ redis5678
✅ turso-dev600
❌ turso3608
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable76014
✅ e2e-local-postgres-nest-stable76014
✅ e2e-local-prod-nest-stable76014

📋 View full workflow run

@karthikscale3
karthikscale3 merged commit 3eb5034 into mainApr 14, 2026
162 of 169 checks passed
@karthikscale3
karthikscale3 deleted the karthik/fix-decryption-itg2 branch April 14, 2026 16:16
@ghost

Copy link
Copy Markdown

Backported to stable (3eb5034 -> 1c70bfa).

ghost pushed a commit that referenced this pull request Apr 14, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
@ghostghost mentioned this pull request Apr 14, 2026
ijjk pushed a commit that referenced this pull request Apr 15, 2026
…anel (#1722)
* decryption flow for detail panel data inspector
* decryption flow for detail panel data inspector
* update spinner
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stableCherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@karthikscale3@TooTallNate