Skip to content

[swc-plugin] Fix Windows WASM plugin linking#2174

Merged
TooTallNate merged 1 commit into
mainfrom
peter/fix-swc-plugin-windows-link
May 30, 2026
Merged

[swc-plugin] Fix Windows WASM plugin linking#2174
TooTallNate merged 1 commit into
mainfrom
peter/fix-swc-plugin-windows-link

Conversation

@VaguelySerious
Copy link
Copy Markdown
Member

@VaguelySerious VaguelySerious commented May 30, 2026

  • allow undefined host imports when linking the SWC plugin WASM target
  • add an empty changeset for CI/build-only plumbing

Context

PR #2169 failed Windows unit tests while building @workflow/swc-plugin with rust-lld undefined symbols for SWC host imports such as __emit_diagnostics, __set_transform_result, and __get_transform_context

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 30, 2026

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

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment May 30, 2026 8:02am
example-nextjs-workflow-webpack Ready Ready Preview, Comment May 30, 2026 8:02am
example-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-astro-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-express-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-fastify-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-hono-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-nitro-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-nuxt-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-sveltekit-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-tanstack-start-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workbench-vite-workflow Ready Ready Preview, Comment May 30, 2026 8:02am
workflow-docs Ready Ready Preview, Comment, Open in v0 May 30, 2026 8:02am
workflow-swc-playground Ready Ready Preview, Comment May 30, 2026 8:02am
workflow-tarballs Ready Ready Preview, Comment May 30, 2026 8:02am
workflow-web Ready Ready Preview, Comment May 30, 2026 8:02am

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 30, 2026

🦋 Changeset detected

Latest commit: c3845c3

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

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

📊 Benchmark Results

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

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 0.031s (-28.1% 🟢) 1.005s (~) 0.974s 10 1.00x
💻 Local Express 0.044s (~) 1.006s (~) 0.961s 10 1.43x
🐘 Postgres Express 0.055s (-5.2% 🟢) 1.011s (~) 0.956s 10 1.77x
💻 Local Next.js (Turbopack) 0.063s 1.006s 0.944s 10 2.02x
🐘 Postgres Nitro 0.063s (-33.4% 🟢) 1.013s (-2.9%) 0.950s 10 2.05x
🐘 Postgres Next.js (Turbopack) 0.065s 1.011s 0.946s 10 2.10x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.269s (+14.4% 🔺) 2.270s (+6.3% 🔺) 2.001s 10 1.00x
▲ Vercel Nitro 0.287s (-29.9% 🟢) 2.100s (-16.3% 🟢) 1.812s 10 1.07x
▲ Vercel Next.js (Turbopack) 0.292s (+15.9% 🔺) 2.186s (-6.3% 🟢) 1.895s 10 1.08x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.070s (-5.4% 🟢) 2.005s (~) 0.935s 10 1.00x
💻 Local Express 1.092s (-3.0%) 2.007s (~) 0.915s 10 1.02x
🐘 Postgres Nitro 1.108s (-2.8%) 2.009s (~) 0.901s 10 1.03x
🐘 Postgres Express 1.108s (-3.4%) 2.010s (~) 0.902s 10 1.04x
💻 Local Next.js (Turbopack) 1.132s 2.005s 0.873s 10 1.06x
🐘 Postgres Next.js (Turbopack) 1.155s 2.011s 0.857s 10 1.08x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.671s (-57.1% 🟢) 3.309s (-44.0% 🟢) 1.638s 10 1.00x
▲ Vercel Express 1.683s (-10.3% 🟢) 3.720s (-2.3%) 2.037s 10 1.01x
▲ Vercel Next.js (Turbopack) 1.819s (-10.6% 🟢) 3.750s (-2.1%) 1.931s 10 1.09x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.392s (-5.1% 🟢) 11.019s (~) 0.628s 3 1.00x
💻 Local Express 10.536s (-3.5%) 11.022s (~) 0.486s 3 1.01x
🐘 Postgres Express 10.539s (-3.9%) 11.018s (~) 0.479s 3 1.01x
🐘 Postgres Nitro 10.561s (-2.9%) 11.019s (~) 0.458s 3 1.02x
💻 Local Next.js (Turbopack) 10.869s 11.355s 0.486s 3 1.05x
🐘 Postgres Next.js (Turbopack) 10.947s 11.352s 0.405s 3 1.05x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 13.488s (-20.6% 🟢) 15.094s (-24.6% 🟢) 1.606s 3 1.00x
▲ Vercel Nitro 13.653s (-42.5% 🟢) 15.506s (-38.3% 🟢) 1.853s 2 1.01x
▲ Vercel Next.js (Turbopack) 14.872s (-14.1% 🟢) 17.555s (-9.5% 🟢) 2.683s 2 1.10x

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

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.455s (-10.7% 🟢) 14.026s (-12.5% 🟢) 0.571s 5 1.00x
🐘 Postgres Express 13.748s (-5.7% 🟢) 14.020s (-6.7% 🟢) 0.272s 5 1.02x
💻 Local Express 13.750s (-8.2% 🟢) 14.028s (-6.7% 🟢) 0.278s 5 1.02x
🐘 Postgres Nitro 13.830s (-5.2% 🟢) 14.018s (-6.7% 🟢) 0.188s 5 1.03x
💻 Local Next.js (Turbopack) 14.308s 15.030s 0.721s 4 1.06x
🐘 Postgres Next.js (Turbopack) 14.410s 15.016s 0.606s 4 1.07x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 21.902s (-58.3% 🟢) 24.175s (-55.7% 🟢) 2.273s 3 1.00x
▲ Vercel Nitro 22.138s (-65.7% 🟢) 23.673s (-64.5% 🟢) 1.535s 3 1.01x
▲ Vercel Express 22.200s (-55.9% 🟢) 24.008s (-54.3% 🟢) 1.808s 3 1.01x

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

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 11.834s (-29.5% 🟢) 12.020s (-29.4% 🟢) 0.186s 8 1.00x
🐘 Postgres Express 12.414s (-11.4% 🟢) 13.017s (-10.8% 🟢) 0.603s 7 1.05x
💻 Local Express 12.466s (-24.9% 🟢) 13.024s (-23.5% 🟢) 0.558s 7 1.05x
🐘 Postgres Nitro 12.554s (-10.1% 🟢) 13.019s (-9.0% 🟢) 0.465s 7 1.06x
💻 Local Next.js (Turbopack) 13.512s 14.027s 0.515s 7 1.14x
🐘 Postgres Next.js (Turbopack) 13.771s 14.163s 0.392s 7 1.16x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 31.415s (-92.6% 🟢) 33.040s (-92.2% 🟢) 1.626s 3 1.00x
▲ Vercel Next.js (Turbopack) 31.547s (-92.0% 🟢) 34.044s (-91.4% 🟢) 2.496s 3 1.00x
▲ Vercel Express 31.854s (-73.7% 🟢) 33.679s (-72.8% 🟢) 1.824s 3 1.01x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.174s (-28.0% 🟢) 2.005s (-3.3%) 0.830s 15 1.00x
🐘 Postgres Nitro 1.194s (-6.3% 🟢) 2.008s (~) 0.814s 15 1.02x
🐘 Postgres Express 1.199s (-4.9%) 2.008s (~) 0.809s 15 1.02x
💻 Local Express 1.225s (-17.7% 🟢) 2.006s (~) 0.781s 15 1.04x
🐘 Postgres Next.js (Turbopack) 1.225s 2.007s 0.781s 15 1.04x
💻 Local Next.js (Turbopack) 1.338s 2.006s 0.668s 15 1.14x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.594s (-23.7% 🟢) 4.120s (-16.5% 🟢) 1.526s 8 1.00x
▲ Vercel Nitro 2.675s (-5.1% 🟢) 4.179s (-3.3%) 1.504s 8 1.03x
▲ Vercel Express 2.733s (-4.4%) 4.368s (-5.5% 🟢) 1.635s 7 1.05x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.256s (-46.8% 🟢) 2.006s (-33.3% 🟢) 0.750s 15 1.00x
🐘 Postgres Nitro 1.277s (-45.7% 🟢) 2.007s (-33.3% 🟢) 0.730s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.366s 2.007s 0.641s 15 1.09x
💻 Local Nitro 1.577s (-49.8% 🟢) 2.005s (-48.4% 🟢) 0.428s 15 1.26x
💻 Local Next.js (Turbopack) 1.756s 2.149s 0.393s 14 1.40x
💻 Local Express 1.936s (-34.4% 🟢) 2.314s (-33.0% 🟢) 0.379s 13 1.54x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.639s (-10.2% 🟢) 5.298s (-10.5% 🟢) 1.660s 6 1.00x
▲ Vercel Express 3.640s (+0.6%) 5.245s (+2.6%) 1.604s 6 1.00x
▲ Vercel Next.js (Turbopack) 3.730s (-47.5% 🟢) 5.409s (-39.3% 🟢) 1.679s 6 1.03x

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

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.390s (-60.1% 🟢) 2.007s (-50.0% 🟢) 0.617s 15 1.00x
🐘 Postgres Nitro 1.396s (-59.9% 🟢) 2.009s (-49.9% 🟢) 0.613s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.741s 2.223s 0.482s 14 1.25x
💻 Local Nitro 3.627s (-56.6% 🟢) 4.134s (-54.2% 🟢) 0.508s 8 2.61x
💻 Local Next.js (Turbopack) 4.626s 5.010s 0.384s 6 3.33x
💻 Local Express 5.357s (-35.7% 🟢) 5.846s (-35.2% 🟢) 0.489s 6 3.85x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.601s (+32.1% 🔺) 7.644s (+24.8% 🔺) 2.043s 4 1.00x
▲ Vercel Nitro 5.802s (+64.6% 🔺) 7.041s (+27.2% 🔺) 1.240s 5 1.04x
▲ Vercel Next.js (Turbopack) 7.553s (-15.3% 🟢) 9.031s (-17.6% 🟢) 1.479s 4 1.35x

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

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.184s (-5.8% 🟢) 2.008s (~) 0.823s 15 1.00x
🐘 Postgres Express 1.195s (-5.0%) 2.007s (~) 0.812s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.229s 2.008s 0.779s 15 1.04x
💻 Local Next.js (Turbopack) 1.357s 2.006s 0.649s 15 1.15x
💻 Local Nitro 1.371s (-26.5% 🟢) 2.005s (-14.3% 🟢) 0.634s 15 1.16x
💻 Local Express 1.604s (-15.3% 🟢) 2.007s (-15.1% 🟢) 0.403s 15 1.35x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.489s (-3.6%) 4.265s (-1.9%) 1.775s 8 1.00x
▲ Vercel Nitro 2.529s (+2.8%) 4.097s (-1.7%) 1.568s 8 1.02x
▲ Vercel Next.js (Turbopack) 2.639s (-10.0% 🟢) 4.562s (-1.7%) 1.923s 7 1.06x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.252s (-46.5% 🟢) 2.009s (-33.3% 🟢) 0.757s 15 1.00x
🐘 Postgres Express 1.271s (-45.7% 🟢) 2.008s (-33.3% 🟢) 0.737s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.375s 2.007s 0.633s 15 1.10x
💻 Local Nitro 1.661s (-45.8% 🟢) 2.006s (-48.4% 🟢) 0.344s 15 1.33x
💻 Local Next.js (Turbopack) 2.103s 2.828s 0.725s 11 1.68x
💻 Local Express 2.162s (-31.0% 🟢) 2.674s (-28.9% 🟢) 0.512s 12 1.73x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 3.590s (+12.5% 🔺) 5.173s (+7.9% 🔺) 1.583s 6 1.00x
▲ Vercel Next.js (Turbopack) 3.974s (+26.5% 🔺) 6.163s (+36.3% 🔺) 2.189s 5 1.11x
▲ Vercel Nitro 4.108s (+27.1% 🔺) 5.259s (+3.6%) 1.151s 6 1.14x

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

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.377s (-60.6% 🟢) 2.007s (-49.9% 🟢) 0.630s 15 1.00x
🐘 Postgres Nitro 1.412s (-59.4% 🟢) 2.008s (-49.9% 🟢) 0.596s 15 1.02x
🐘 Postgres Next.js (Turbopack) 1.685s 2.152s 0.467s 14 1.22x
💻 Local Nitro 4.417s (-51.7% 🟢) 5.012s (-50.0% 🟢) 0.594s 6 3.21x
💻 Local Next.js (Turbopack) 5.101s 5.516s 0.415s 6 3.70x
💻 Local Express 5.983s (-32.0% 🟢) 6.615s (-28.7% 🟢) 0.633s 5 4.34x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.071s (~) 6.643s (-2.6%) 1.571s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.657s (-16.3% 🟢) 7.683s (-10.1% 🟢) 2.026s 5 1.12x
▲ Vercel Express 6.285s (-2.1%) 8.866s (+8.4% 🔺) 2.581s 4 1.24x

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

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 0.479s (-51.1% 🟢) 1.003s (-8.3% 🟢) 0.524s 60 1.00x
🐘 Postgres Nitro 0.563s (-31.3% 🟢) 1.006s (~) 0.443s 60 1.17x
🐘 Postgres Express 0.581s (-30.8% 🟢) 1.024s (~) 0.443s 59 1.21x
💻 Local Express 0.604s (-38.6% 🟢) 1.005s (-6.6% 🟢) 0.400s 60 1.26x
🐘 Postgres Next.js (Turbopack) 0.794s 1.006s 0.212s 60 1.66x
💻 Local Next.js (Turbopack) 0.837s 1.004s 0.167s 60 1.75x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.359s (-71.8% 🟢) 6.892s (-67.7% 🟢) 1.533s 9 1.00x
▲ Vercel Nitro 5.393s (-75.5% 🟢) 6.758s (-71.9% 🟢) 1.365s 10 1.01x
▲ Vercel Next.js (Turbopack) 5.836s (-59.8% 🟢) 7.776s (-51.7% 🟢) 1.940s 8 1.09x

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

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.187s (-60.9% 🟢) 2.007s (-46.6% 🟢) 0.820s 45 1.00x
🐘 Postgres Express 1.340s (-32.2% 🟢) 2.008s (-11.1% 🟢) 0.667s 45 1.13x
🐘 Postgres Nitro 1.347s (-30.1% 🟢) 2.008s (-4.4%) 0.661s 45 1.13x
💻 Local Express 1.525s (-49.4% 🟢) 2.006s (-44.0% 🟢) 0.481s 45 1.28x
🐘 Postgres Next.js (Turbopack) 1.890s 2.053s 0.163s 44 1.59x
💻 Local Next.js (Turbopack) 2.099s 2.765s 0.665s 33 1.77x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 13.580s (-60.7% 🟢) 15.250s (-58.6% 🟢) 1.670s 6 1.00x
▲ Vercel Nitro 13.788s (-65.1% 🟢) 15.454s (-62.6% 🟢) 1.666s 6 1.02x
▲ Vercel Next.js (Turbopack) 14.665s (-70.6% 🟢) 16.749s (-67.6% 🟢) 2.084s 6 1.08x

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

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 2.635s (-71.7% 🟢) 3.032s (-69.7% 🟢) 0.397s 40 1.00x
🐘 Postgres Nitro 2.657s (-35.2% 🟢) 3.058s (-33.6% 🟢) 0.401s 40 1.01x
🐘 Postgres Express 2.714s (-32.0% 🟢) 3.111s (-28.8% 🟢) 0.396s 39 1.03x
💻 Local Express 3.257s (-64.6% 🟢) 4.009s (-60.0% 🟢) 0.752s 30 1.24x
🐘 Postgres Next.js (Turbopack) 3.805s 4.076s 0.271s 30 1.44x
💻 Local Next.js (Turbopack) 4.210s 5.010s 0.800s 24 1.60x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 28.822s (-70.3% 🟢) 30.607s (-68.9% 🟢) 1.785s 4 1.00x
▲ Vercel Express 29.834s (-77.1% 🟢) 32.369s (-75.5% 🟢) 2.535s 4 1.04x
▲ Vercel Next.js (Turbopack) 30.887s (-71.2% 🟢) 33.106s (-69.6% 🟢) 2.219s 4 1.07x

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

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.214s (-24.5% 🟢) 1.006s (~) 0.793s 60 1.00x
🐘 Postgres Express 0.236s (-16.5% 🟢) 1.023s (+1.6%) 0.787s 59 1.10x
🐘 Postgres Next.js (Turbopack) 0.265s 1.006s 0.741s 60 1.24x
💻 Local Nitro 0.343s (-43.3% 🟢) 1.003s (-1.8%) 0.660s 60 1.61x
💻 Local Express 0.526s (-6.2% 🟢) 1.096s (+9.1% 🔺) 0.570s 55 2.46x
💻 Local Next.js (Turbopack) 0.617s 1.021s 0.404s 59 2.89x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.163s (+7.0% 🔺) 3.805s (~) 1.641s 16 1.00x
▲ Vercel Express 2.206s (+12.9% 🔺) 4.094s (+12.5% 🔺) 1.888s 15 1.02x
▲ Vercel Nitro 2.501s (+50.5% 🔺) 3.832s (+14.4% 🔺) 1.332s 16 1.16x

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

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.347s (-32.0% 🟢) 1.006s (~) 0.659s 90 1.00x
🐘 Postgres Nitro 0.348s (-30.0% 🟢) 1.006s (~) 0.659s 90 1.00x
🐘 Postgres Next.js (Turbopack) 0.472s 1.006s 0.533s 90 1.36x
💻 Local Nitro 1.763s (-30.5% 🟢) 2.203s (-26.8% 🟢) 0.440s 41 5.08x
💻 Local Express 2.123s (-15.5% 🟢) 2.685s (-10.8% 🟢) 0.562s 34 6.12x
💻 Local Next.js (Turbopack) 2.234s 3.044s 0.811s 30 6.44x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.282s (+63.7% 🔺) 6.729s (+39.6% 🔺) 1.448s 14 1.00x
▲ Vercel Express 5.351s (+75.7% 🔺) 7.140s (+48.5% 🔺) 1.788s 13 1.01x
▲ Vercel Next.js (Turbopack) 5.440s (+53.9% 🔺) 7.072s (+36.2% 🔺) 1.633s 13 1.03x

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

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.664s (-18.9% 🟢) 1.006s (-1.1%) 0.342s 120 1.00x
🐘 Postgres Nitro 0.685s (-13.3% 🟢) 1.006s (~) 0.321s 120 1.03x
🐘 Postgres Next.js (Turbopack) 0.941s 1.431s 0.490s 85 1.42x
💻 Local Nitro 8.049s (-28.1% 🟢) 8.595s (-26.3% 🟢) 0.546s 14 12.12x
💻 Local Express 9.839s (-12.1% 🟢) 10.361s (-13.2% 🟢) 0.522s 12 14.81x
💻 Local Next.js (Turbopack) 10.182s 11.026s 0.844s 11 15.33x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 12.324s (+66.1% 🔺) 14.498s (+56.8% 🔺) 2.173s 9 1.00x
▲ Vercel Next.js (Turbopack) 14.666s (+42.0% 🔺) 16.673s (+35.7% 🔺) 2.007s 8 1.19x
▲ Vercel Nitro 15.010s (+94.4% 🔺) 16.513s (+75.7% 🔺) 1.503s 8 1.22x

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

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.126s (+426.9% 🔺) 2.004s (+99.5% 🔺) 0.008s (-32.8% 🟢) 2.014s (+97.7% 🔺) 0.888s 10 1.00x
🐘 Postgres Nitro 1.165s (+468.0% 🔺) 2.001s (+100.1% 🔺) 0.001s (-6.7% 🟢) 2.011s (+98.8% 🔺) 0.846s 10 1.03x
💻 Local Express 1.166s (+485.8% 🔺) 2.005s (+99.6% 🔺) 0.012s (+2.5%) 2.019s (+98.3% 🔺) 0.853s 10 1.04x
🐘 Postgres Express 1.182s (+476.5% 🔺) 1.996s (+99.9% 🔺) 0.002s (-6.3% 🟢) 2.010s (+98.7% 🔺) 0.827s 10 1.05x
💻 Local Next.js (Turbopack) 1.201s 2.003s 0.011s 2.018s 0.817s 10 1.07x
🐘 Postgres Next.js (Turbopack) 1.240s 2.002s 0.001s 2.010s 0.770s 10 1.10x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.294s (-66.5% 🟢) 3.449s (-60.1% 🟢) 1.539s (+143.6% 🔺) 5.442s (-44.4% 🟢) 3.148s 10 1.00x
▲ Vercel Express 2.316s (-7.6% 🟢) 3.684s (-9.9% 🟢) 1.280s (+33.2% 🔺) 5.440s (-2.7%) 3.124s 10 1.01x
▲ Vercel Nitro 2.329s (-39.2% 🟢) 3.209s (-39.2% 🟢) 1.561s (+110.3% 🔺) 5.136s (-20.8% 🟢) 2.807s 10 1.01x

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

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.586s (+151.8% 🔺) 2.004s (+99.1% 🔺) 0.004s (~) 2.026s (+98.0% 🔺) 0.440s 30 1.00x
🐘 Postgres Nitro 1.601s (+156.5% 🔺) 2.005s (+99.2% 🔺) 0.004s (-9.7% 🟢) 2.025s (+98.0% 🔺) 0.424s 30 1.01x
💻 Local Nitro 1.633s (+94.8% 🔺) 2.007s (+98.3% 🔺) 0.008s (-16.9% 🟢) 2.195s (+96.7% 🔺) 0.562s 28 1.03x
🐘 Postgres Next.js (Turbopack) 1.720s 2.011s 0.004s 2.026s 0.306s 30 1.08x
💻 Local Next.js (Turbopack) 1.886s 2.008s 0.010s 2.194s 0.308s 29 1.19x
💻 Local Express 2.000s (+164.2% 🔺) 2.010s (+95.3% 🔺) 0.010s (+6.7% 🔺) 2.423s (+133.0% 🔺) 0.423s 25 1.26x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.902s (-80.0% 🟢) 6.937s (-77.5% 🟢) 0.161s (+43.3% 🔺) 7.510s (-76.4% 🟢) 1.608s 8 1.00x
▲ Vercel Next.js (Turbopack) 6.104s (-63.9% 🟢) 7.627s (-58.2% 🟢) 0.187s (-11.4% 🟢) 8.291s (-56.2% 🟢) 2.187s 8 1.03x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.706s (-27.1% 🟢) 1.046s (-16.1% 🟢) 0.000s (-15.8% 🟢) 1.059s (-15.8% 🟢) 0.353s 57 1.00x
🐘 Postgres Express 0.733s (-23.7% 🟢) 1.047s (-18.1% 🟢) 0.000s (-19.3% 🟢) 1.067s (-18.3% 🟢) 0.333s 57 1.04x
🐘 Postgres Next.js (Turbopack) 0.824s 1.054s 0.000s 1.061s 0.237s 57 1.17x
💻 Local Nitro 1.165s (-4.7%) 1.979s (-2.0%) 0.001s (+480.6% 🔺) 1.981s (-2.0%) 0.816s 31 1.65x
💻 Local Express 1.406s (+14.8% 🔺) 2.013s (~) 0.000s (+30.0% 🔺) 2.016s (~) 0.610s 30 1.99x
💻 Local Next.js (Turbopack) 1.478s 2.012s 0.000s 2.015s 0.538s 30 2.09x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.563s (-65.0% 🟢) 4.928s (-57.2% 🟢) 0.000s (NaN%) 5.517s (-54.2% 🟢) 1.954s 11 1.00x
▲ Vercel Express 3.601s (-3.7%) 5.056s (-0.9%) 0.000s (-50.0% 🟢) 5.560s (+0.5%) 1.959s 11 1.01x
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Express

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

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.330s (-24.9% 🟢) 2.065s (-5.2% 🟢) 0.000s (+Infinity% 🔺) 2.085s (-5.2% 🟢) 0.755s 29 1.00x
🐘 Postgres Nitro 1.462s (-18.4% 🟢) 2.175s (+1.6%) 0.000s (+100.0% 🔺) 2.192s (+0.8%) 0.731s 28 1.10x
🐘 Postgres Next.js (Turbopack) 1.651s 2.143s 0.000s 2.165s 0.514s 28 1.24x
💻 Local Nitro 2.457s (-27.5% 🟢) 2.827s (-29.9% 🟢) 0.000s (-31.8% 🟢) 2.842s (-29.6% 🟢) 0.384s 22 1.85x
💻 Local Next.js (Turbopack) 2.958s 3.609s 0.001s 3.617s 0.659s 17 2.22x
💻 Local Express 3.102s (-10.5% 🟢) 3.901s (-3.3%) 0.000s (-68.8% 🟢) 3.904s (-3.3%) 0.802s 16 2.33x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.123s (+25.1% 🔺) 6.600s (+22.8% 🔺) 0.000s (-100.0% 🟢) 6.992s (+20.7% 🔺) 1.869s 9 1.00x
▲ Vercel Express 5.822s (+26.9% 🔺) 7.693s (+27.7% 🔺) 0.002s (+Infinity% 🔺) 8.177s (+26.6% 🔺) 2.355s 8 1.14x
▲ Vercel Next.js (Turbopack) ⚠️ missing - - - - -

🔍 Observability: Nitro | Express

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 20/21
🐘 Postgres Express 12/21
▲ Vercel Express 8/21
Fastest World by Framework

Winner determined by most benchmark wins

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

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)

📋 View full workflow run


⚠️ Community world benchmarks failed (non-blocking):

  • Community Worlds: failure

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 30, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1266 0 219 1485
✅ 💻 Local Development 1671 0 219 1890
✅ 📦 Local Production 1671 0 219 1890
✅ 🐘 Local Postgres 1671 0 219 1890
✅ 🪟 Windows 135 0 0 135
✅ 📋 Other 769 0 176 945
Total 7183 0 1052 8235

Details by Category

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

📋 View full workflow run

@VaguelySerious VaguelySerious marked this pull request as ready for review May 30, 2026 08:08
@VaguelySerious VaguelySerious requested a review from a team as a code owner May 30, 2026 08:08
Copy link
Copy Markdown
Contributor

@karthikscale3 karthikscale3 left a comment

Choose a reason for hiding this comment

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

Approve. ✅ Minimal, well-scoped, correctly targeted, and empirically verified.

Verification

  • Target is correct. build.js runs cargo build-wasm32 --releasewasm32-unknown-unknown, which is exactly the section the flag is added to. The unused build-wasip1 alias is irrelevant here.
  • It fixes the reported failure. On this PR Unit Tests (windows-latest) passes (8m24s) and E2E Windows Tests passes (19m17s). The only red checks are Benchmark Community World (Redis, Redis+BullMQ, MongoDB) — unrelated benchmark/infra jobs, two of which ran a full hour before failing (timeouts, not linkage).
  • TOML/cargo syntax is valid and correctly placed for per-target rustflags; the empty changeset (---\n---) is exactly what pnpm changeset --empty emits to pass the gate without a release.

Non-blocking notes

  1. --allow-undefined is broad — it lets all undefined symbols become wasm imports, not just SWC's three host functions, so a future genuinely-missing symbol would fail at plugin-load instead of build time. Tighter options are --import-undefined or --allow-undefined-file=<allowlist>, but --allow-undefined is the conventional choice in the SWC plugin ecosystem.
  2. Applies on all platforms, which is preferable — consistent build behavior, and the imports are host-provided everywhere.
  3. RUSTFLAGS precedence caveat: target.<triple>.rustflags in .cargo/config.toml is ignored if a global RUSTFLAGS env var is set (env wins, no merge). Worth a quick confirm CI doesn't export one for the plugin build — the green Windows run suggests it's fine today.

Nice touch documenting the why in the comment for a non-obvious linker flag. The failing benchmark checks are unrelated and shouldn't gate this.

@TooTallNate TooTallNate merged commit 5dabbee into main May 30, 2026
187 of 193 checks passed
@TooTallNate TooTallNate deleted the peter/fix-swc-plugin-windows-link branch May 30, 2026 21:57
github-actions Bot added a commit that referenced this pull request May 30, 2026
Signed-off-by: Peter Wielander <mittgfu@gmail.com>
@github-actions
Copy link
Copy Markdown
Contributor

Backport PR opened against stable: #2182. (backport job run)

TooTallNate pushed a commit that referenced this pull request May 30, 2026
Signed-off-by: Peter Wielander <mittgfu@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants