Skip to content

Gitignore public workflow manifests#1683

Merged
VaguelySerious merged 6 commits into
mainfrom
pranaygp/codex/colocated-manifest-gitignore
May 22, 2026
Merged

Gitignore public workflow manifests#1683
VaguelySerious merged 6 commits into
mainfrom
pranaygp/codex/colocated-manifest-gitignore

Conversation

@pranaygp
Copy link
Copy Markdown
Contributor

@pranaygp pranaygp commented Apr 10, 2026

  • write colocated .gitignore files into the public/static manifest output directories created when WORKFLOW_PUBLIC_MANIFEST=1
  • apply the same simple generated-directory pattern already used for other .well-known/workflow outputs instead of touching the project root .gitignore
  • cover the affected builders: Vercel Build Output API, Next.js eager/deferred, and SvelteKit

Closes #1521

@vercel
Copy link
Copy Markdown
Contributor

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

Copilot AI review requested due to automatic review settings April 10, 2026 05:50
@pranaygp pranaygp requested a review from a team as a code owner April 10, 2026 05:50
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 10, 2026

🧪 E2E Test Results

All tests passed

Summary

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

Details by Category

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

📋 View full workflow run

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 10, 2026

🦋 Changeset detected

Latest commit: 136eec6

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

This PR includes changesets to release 16 packages
Name Type
@workflow/builders Patch
@workflow/next Patch
@workflow/sveltekit Patch
@workflow/astro Patch
@workflow/cli Patch
@workflow/nest Patch
@workflow/nitro Patch
@workflow/rollup Patch
@workflow/vite Patch
@workflow/vitest Patch
workflow Patch
@workflow/world-testing Patch
@workflow/nuxt Patch
@workflow/core Patch
@workflow/web-shared Patch
@workflow/web Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 10, 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.027s (-37.1% 🟢) 1.007s (~) 0.980s 10 1.00x
💻 Local Express 0.030s (-31.2% 🟢) 1.005s (~) 0.975s 10 1.13x
🐘 Postgres Nitro 0.050s (-47.4% 🟢) 1.012s (-3.0%) 0.962s 10 1.85x
💻 Local Next.js (Turbopack) 0.050s 1.005s 0.955s 10 1.85x
🐘 Postgres Next.js (Turbopack) 0.061s 1.012s 0.951s 10 2.24x
🐘 Postgres Express 0.105s (+81.2% 🔺) 1.063s (+5.2% 🔺) 0.958s 10 3.88x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 0.269s (+6.8% 🔺) 2.014s (-13.7% 🟢) 1.746s 10 1.00x
▲ Vercel Nitro 0.279s (-31.9% 🟢) 2.500s (~) 2.221s 10 1.04x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.060s (-6.3% 🟢) 2.005s (~) 0.946s 10 1.00x
💻 Local Express 1.073s (-4.7%) 2.006s (~) 0.933s 10 1.01x
🐘 Postgres Nitro 1.084s (-4.9%) 2.010s (~) 0.926s 10 1.02x
💻 Local Next.js (Turbopack) 1.107s 2.006s 0.899s 10 1.04x
🐘 Postgres Express 1.135s (-1.0%) 2.045s (+1.7%) 0.910s 10 1.07x
🐘 Postgres Next.js (Turbopack) 1.137s 2.010s 0.873s 10 1.07x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.574s (-59.6% 🟢) 6.720s (+13.7% 🔺) 5.145s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.661s (-18.4% 🟢) 3.337s (-12.9% 🟢) 1.676s 10 1.06x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.331s (-5.6% 🟢) 11.021s (~) 0.690s 3 1.00x
💻 Local Express 10.412s (-4.7%) 11.022s (~) 0.610s 3 1.01x
🐘 Postgres Nitro 10.423s (-4.1%) 11.016s (~) 0.592s 3 1.01x
💻 Local Next.js (Turbopack) 10.659s 11.022s 0.364s 3 1.03x
🐘 Postgres Next.js (Turbopack) 10.733s 11.020s 0.287s 3 1.04x
🐘 Postgres Express 10.885s (-0.7%) 11.042s (~) 0.157s 3 1.05x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 14.411s (-16.8% 🟢) 15.589s (-19.6% 🟢) 1.178s 2 1.00x
▲ Vercel Nitro 15.258s (-35.7% 🟢) 17.216s (-31.5% 🟢) 1.959s 2 1.06x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 13.371s (-11.2% 🟢) 14.025s (-12.5% 🟢) 0.654s 5 1.00x
💻 Local Express 13.456s (-10.1% 🟢) 14.026s (-6.7% 🟢) 0.570s 5 1.01x
🐘 Postgres Nitro 13.497s (-7.5% 🟢) 14.018s (-6.7% 🟢) 0.521s 5 1.01x
💻 Local Next.js (Turbopack) 14.066s 15.029s 0.963s 4 1.05x
🐘 Postgres Express 14.112s (-3.2%) 14.614s (-2.7%) 0.502s 5 1.06x
🐘 Postgres Next.js (Turbopack) 14.207s 15.020s 0.813s 4 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 24.098s (-54.2% 🟢) 25.505s (-53.3% 🟢) 1.406s 3 1.00x
▲ Vercel Nitro 25.682s (-60.2% 🟢) 27.865s (-58.2% 🟢) 2.183s 3 1.07x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 11.630s (-30.7% 🟢) 12.147s (-28.7% 🟢) 0.517s 8 1.00x
💻 Local Express 11.872s (-28.5% 🟢) 12.021s (-29.4% 🟢) 0.149s 8 1.02x
🐘 Postgres Nitro 12.014s (-14.0% 🟢) 12.521s (-12.5% 🟢) 0.507s 8 1.03x
💻 Local Next.js (Turbopack) 13.071s 13.453s 0.382s 7 1.12x
🐘 Postgres Express 13.145s (-6.2% 🟢) 13.453s (-7.8% 🟢) 0.308s 7 1.13x
🐘 Postgres Next.js (Turbopack) 13.287s 14.018s 0.731s 7 1.14x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 32.691s (-92.3% 🟢) 34.953s (-91.8% 🟢) 2.262s 3 1.00x
▲ Vercel Next.js (Turbopack) 33.654s (-91.4% 🟢) 35.344s (-91.1% 🟢) 1.691s 3 1.03x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.146s (-10.1% 🟢) 2.007s (~) 0.861s 15 1.00x
💻 Local Nitro 1.159s (-29.0% 🟢) 2.006s (-3.3%) 0.847s 15 1.01x
💻 Local Express 1.206s (-19.0% 🟢) 2.006s (~) 0.800s 15 1.05x
🐘 Postgres Next.js (Turbopack) 1.207s 2.007s 0.799s 15 1.05x
🐘 Postgres Express 1.209s (-4.1%) 2.009s (~) 0.800s 15 1.05x
💻 Local Next.js (Turbopack) 1.292s 2.006s 0.714s 15 1.13x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.827s (~) 4.287s (-0.8%) 1.460s 7 1.00x
▲ Vercel Next.js (Turbopack) 3.089s (-9.1% 🟢) 4.469s (-9.4% 🟢) 1.380s 7 1.09x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.197s (-49.1% 🟢) 2.008s (-33.3% 🟢) 0.811s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.339s 2.007s 0.668s 15 1.12x
🐘 Postgres Express 1.537s (-34.9% 🟢) 2.102s (-30.1% 🟢) 0.566s 15 1.28x
💻 Local Nitro 1.571s (-50.0% 🟢) 2.005s (-48.4% 🟢) 0.434s 15 1.31x
💻 Local Next.js (Turbopack) 1.700s 2.006s 0.306s 15 1.42x
💻 Local Express 1.738s (-41.1% 🟢) 2.006s (-41.9% 🟢) 0.268s 15 1.45x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 4.234s (-40.4% 🟢) 5.433s (-39.0% 🟢) 1.200s 6 1.00x
▲ Vercel Nitro 4.397s (+8.5% 🔺) 6.007s (+1.5%) 1.609s 6 1.04x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.317s (-62.1% 🟢) 2.008s (-49.9% 🟢) 0.691s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.626s 2.007s 0.380s 15 1.23x
🐘 Postgres Express 1.842s (-47.2% 🟢) 2.637s (-34.2% 🟢) 0.795s 12 1.40x
💻 Local Nitro 3.977s (-52.4% 🟢) 4.438s (-50.8% 🟢) 0.460s 7 3.02x
💻 Local Next.js (Turbopack) 4.655s 5.345s 0.689s 6 3.53x
💻 Local Express 4.739s (-43.2% 🟢) 5.346s (-40.8% 🟢) 0.607s 6 3.60x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.698s (+61.6% 🔺) 7.424s (+34.2% 🔺) 1.726s 5 1.00x
▲ Vercel Next.js (Turbopack) 6.676s (-25.1% 🟢) 8.789s (-19.8% 🟢) 2.112s 4 1.17x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: 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.149s (-8.6% 🟢) 2.008s (~) 0.859s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.208s 2.007s 0.799s 15 1.05x
🐘 Postgres Express 1.218s (-3.1%) 2.022s (+0.7%) 0.804s 15 1.06x
💻 Local Nitro 1.252s (-32.9% 🟢) 2.006s (-14.3% 🟢) 0.754s 15 1.09x
💻 Local Next.js (Turbopack) 1.298s 2.005s 0.708s 15 1.13x
💻 Local Express 1.329s (-29.8% 🟢) 2.006s (-15.1% 🟢) 0.677s 15 1.16x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.068s (+4.6%) 4.590s (-1.1%) 1.523s 7 1.00x
▲ Vercel Nitro 3.101s (+26.1% 🔺) 4.840s (+16.1% 🔺) 1.740s 7 1.01x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.205s (-48.5% 🟢) 2.008s (-33.3% 🟢) 0.803s 15 1.00x
🐘 Postgres Next.js (Turbopack) 1.351s 2.008s 0.657s 15 1.12x
🐘 Postgres Express 1.382s (-41.0% 🟢) 2.104s (-30.1% 🟢) 0.721s 15 1.15x
💻 Local Nitro 1.585s (-48.3% 🟢) 2.005s (-48.4% 🟢) 0.419s 15 1.32x
💻 Local Express 1.960s (-37.4% 🟢) 2.392s (-36.4% 🟢) 0.432s 13 1.63x
💻 Local Next.js (Turbopack) 2.016s 2.507s 0.491s 12 1.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.906s (+20.8% 🔺) 5.934s (+16.9% 🔺) 2.027s 6 1.00x
▲ Vercel Next.js (Turbopack) 4.854s (+54.5% 🔺) 6.286s (+39.0% 🔺) 1.432s 5 1.24x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.337s (-61.6% 🟢) 2.007s (-49.9% 🟢) 0.670s 15 1.00x
🐘 Postgres Express 1.575s (-55.0% 🟢) 2.225s (-44.5% 🟢) 0.651s 14 1.18x
🐘 Postgres Next.js (Turbopack) 1.603s 2.009s 0.405s 15 1.20x
💻 Local Nitro 4.347s (-52.5% 🟢) 4.869s (-51.4% 🟢) 0.522s 7 3.25x
💻 Local Next.js (Turbopack) 4.706s 5.013s 0.307s 6 3.52x
💻 Local Express 5.602s (-36.3% 🟢) 6.213s (-33.0% 🟢) 0.612s 5 4.19x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.238s (+2.9%) 7.305s (+7.2% 🔺) 2.066s 5 1.00x
▲ Vercel Next.js (Turbopack) 5.862s (-13.3% 🟢) 7.571s (-11.4% 🟢) 1.710s 4 1.12x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 0.424s (-56.8% 🟢) 1.004s (-8.2% 🟢) 0.580s 60 1.00x
🐘 Postgres Nitro 0.467s (-43.0% 🟢) 1.023s (+1.7%) 0.556s 59 1.10x
🐘 Postgres Express 0.489s (-41.7% 🟢) 1.024s (~) 0.535s 59 1.15x
💻 Local Express 0.492s (-50.0% 🟢) 1.004s (-6.7% 🟢) 0.513s 60 1.16x
🐘 Postgres Next.js (Turbopack) 0.665s 1.006s 0.341s 60 1.57x
💻 Local Next.js (Turbopack) 0.725s 1.004s 0.279s 60 1.71x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 4.837s (-78.1% 🟢) 6.643s (-72.4% 🟢) 1.806s 10 1.00x
▲ Vercel Next.js (Turbopack) 6.008s (-58.6% 🟢) 8.080s (-49.8% 🟢) 2.072s 9 1.24x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: 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.075s (-64.6% 🟢) 1.641s (-56.3% 🟢) 0.566s 55 1.00x
🐘 Postgres Nitro 1.086s (-43.6% 🟢) 1.792s (-14.7% 🟢) 0.706s 51 1.01x
💻 Local Express 1.217s (-59.6% 🟢) 2.006s (-44.1% 🟢) 0.789s 45 1.13x
🐘 Postgres Next.js (Turbopack) 1.646s 2.008s 0.362s 45 1.53x
🐘 Postgres Express 1.676s (-15.2% 🟢) 2.195s (-2.8%) 0.520s 41 1.56x
💻 Local Next.js (Turbopack) 1.794s 2.005s 0.211s 45 1.67x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 13.487s (-65.8% 🟢) 15.297s (-63.0% 🟢) 1.810s 6 1.00x
▲ Vercel Next.js (Turbopack) 13.660s (-72.6% 🟢) 15.381s (-70.3% 🟢) 1.721s 6 1.01x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.128s (-48.1% 🟢) 2.697s (-41.4% 🟢) 0.569s 45 1.00x
💻 Local Nitro 2.608s (-71.9% 🟢) 3.148s (-68.6% 🟢) 0.540s 39 1.23x
💻 Local Express 2.736s (-70.3% 🟢) 3.007s (-70.0% 🟢) 0.272s 40 1.29x
🐘 Postgres Next.js (Turbopack) 3.233s 4.009s 0.776s 30 1.52x
🐘 Postgres Express 3.247s (-18.6% 🟢) 3.776s (-13.6% 🟢) 0.528s 32 1.53x
💻 Local Next.js (Turbopack) 3.817s 4.041s 0.224s 30 1.79x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 28.129s (-71.0% 🟢) 30.274s (-69.2% 🟢) 2.145s 4 1.00x
▲ Vercel Next.js (Turbopack) 34.534s (-67.8% 🟢) 35.815s (-67.1% 🟢) 1.281s 4 1.23x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | 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.171s (-39.6% 🟢) 1.006s (~) 0.835s 60 1.00x
🐘 Postgres Next.js (Turbopack) 0.232s 1.006s 0.774s 60 1.36x
💻 Local Express 0.381s (-31.9% 🟢) 1.004s (~) 0.622s 60 2.23x
💻 Local Nitro 0.393s (-35.0% 🟢) 1.003s (-1.8%) 0.610s 60 2.30x
🐘 Postgres Express 0.442s (+56.6% 🔺) 1.093s (+8.5% 🔺) 0.651s 55 2.59x
💻 Local Next.js (Turbopack) 0.548s 1.004s 0.456s 60 3.21x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.557s (+54.0% 🔺) 4.290s (+28.0% 🔺) 1.732s 14 1.00x
▲ Vercel Next.js (Turbopack) 2.658s (+31.4% 🔺) 4.019s (+5.9% 🔺) 1.362s 16 1.04x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.302s (-39.2% 🟢) 1.006s (~) 0.704s 90 1.00x
🐘 Postgres Next.js (Turbopack) 0.439s 1.006s 0.567s 90 1.46x
🐘 Postgres Express 0.852s (+67.1% 🔺) 1.333s (+32.5% 🔺) 0.482s 68 2.82x
💻 Local Nitro 1.841s (-27.5% 🟢) 2.227s (-26.0% 🟢) 0.386s 41 6.10x
💻 Local Express 2.118s (-15.7% 🟢) 2.655s (-11.8% 🟢) 0.537s 34 7.02x
💻 Local Next.js (Turbopack) 2.120s 2.978s 0.858s 31 7.02x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.781s (+63.5% 🔺) 7.251s (+39.6% 🔺) 1.470s 13 1.00x
▲ Vercel Nitro 5.808s (+80.0% 🔺) 7.529s (+56.1% 🔺) 1.721s 12 1.00x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.637s (-19.3% 🟢) 1.006s (~) 0.368s 120 1.00x
🐘 Postgres Next.js (Turbopack) 0.968s 1.567s 0.599s 77 1.52x
🐘 Postgres Express 1.191s (+45.5% 🔺) 1.648s (+62.0% 🔺) 0.457s 73 1.87x
💻 Local Nitro 8.086s (-27.7% 🟢) 8.735s (-25.1% 🟢) 0.649s 14 12.69x
💻 Local Express 9.970s (-10.9% 🟢) 10.611s (-11.1% 🟢) 0.641s 12 15.64x
💻 Local Next.js (Turbopack) 10.654s 11.391s 0.737s 11 16.72x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 17.543s (+69.9% 🔺) 19.711s (+60.4% 🔺) 2.168s 7 1.00x
▲ Vercel Nitro 18.229s (+136.0% 🔺) 20.537s (+118.5% 🔺) 2.308s 7 1.04x
▲ Vercel Express ⚠️ missing - - - -

🔍 Observability: 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.117s (+422.6% 🔺) 2.004s (+99.5% 🔺) 0.008s (-35.2% 🟢) 2.015s (+97.7% 🔺) 0.898s 10 1.00x
💻 Local Express 1.133s (+468.9% 🔺) 2.005s (+99.6% 🔺) 0.012s (-1.7%) 2.019s (+98.3% 🔺) 0.887s 10 1.01x
🐘 Postgres Nitro 1.136s (+454.2% 🔺) 2.001s (+100.2% 🔺) 0.001s (-6.7% 🟢) 2.010s (+98.7% 🔺) 0.873s 10 1.02x
💻 Local Next.js (Turbopack) 1.187s 2.004s 0.011s 2.018s 0.831s 10 1.06x
🐘 Postgres Next.js (Turbopack) 1.211s 2.003s 0.002s 2.012s 0.801s 10 1.08x
🐘 Postgres Express 1.212s (+490.7% 🔺) 1.992s (+99.5% 🔺) 0.001s (-50.0% 🟢) 2.018s (+99.5% 🔺) 0.806s 10 1.08x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.316s (-39.6% 🟢) 3.492s (-33.8% 🟢) 1.913s (+157.7% 🔺) 5.930s (-8.5% 🟢) 3.614s 10 1.00x
▲ Vercel Next.js (Turbopack) 2.345s (-65.8% 🟢) 3.112s (-64.0% 🟢) 2.450s (+287.7% 🔺) 6.013s (-38.6% 🟢) 3.668s 10 1.01x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.538s (+146.4% 🔺) 2.008s (+99.5% 🔺) 0.004s (-6.5% 🟢) 2.026s (+98.1% 🔺) 0.488s 30 1.00x
💻 Local Express 1.549s (+104.6% 🔺) 2.012s (+95.6% 🔺) 0.010s (+2.0%) 2.024s (+94.6% 🔺) 0.475s 30 1.01x
💻 Local Next.js (Turbopack) 1.679s 2.010s 0.011s 2.024s 0.345s 30 1.09x
🐘 Postgres Next.js (Turbopack) 1.700s 2.010s 0.004s 2.025s 0.325s 30 1.11x
💻 Local Nitro 1.825s (+117.6% 🔺) 2.007s (+98.4% 🔺) 0.008s (-16.3% 🟢) 2.418s (+116.7% 🔺) 0.593s 25 1.19x
🐘 Postgres Express 2.118s (+236.3% 🔺) 2.606s (+158.9% 🔺) 0.003s (-18.3% 🟢) 2.648s (+158.8% 🔺) 0.529s 23 1.38x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 6.304s (-62.7% 🟢) 6.974s (-61.8% 🟢) 0.222s (+5.3% 🔺) 7.906s (-58.2% 🟢) 1.602s 8 1.00x
▲ Vercel Nitro 6.393s (-78.3% 🟢) 8.334s (-72.9% 🟢) 0.221s (+96.9% 🔺) 9.138s (-71.2% 🟢) 2.745s 7 1.01x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack) | Nitro

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.668s (-31.1% 🟢) 1.016s (-18.6% 🟢) 0.000s (-18.6% 🟢) 1.024s (-18.5% 🟢) 0.357s 59 1.00x
🐘 Postgres Next.js (Turbopack) 0.805s 1.036s 0.000s 1.069s 0.264s 57 1.20x
💻 Local Nitro 1.198s (-2.1%) 1.956s (-3.2%) 0.000s (+351.6% 🔺) 1.958s (-3.1%) 0.760s 31 1.79x
🐘 Postgres Express 1.200s (+24.9% 🔺) 1.565s (+22.4% 🔺) 0.000s (+24.3% 🔺) 1.625s (+24.4% 🔺) 0.424s 37 1.80x
💻 Local Express 1.311s (+7.0% 🔺) 2.014s (~) 0.000s (-40.0% 🟢) 2.016s (~) 0.705s 30 1.96x
💻 Local Next.js (Turbopack) 1.442s 2.014s 0.000s 2.017s 0.575s 30 2.16x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.697s (+21.2% 🔺) 5.198s (+18.3% 🔺) 0.000s (+18.2% 🔺) 5.686s (+18.2% 🔺) 1.989s 11 1.00x
▲ Vercel Next.js (Turbopack) 4.609s (-54.7% 🟢) 5.625s (-51.2% 🟢) 0.001s (+Infinity% 🔺) 6.138s (-49.1% 🟢) 1.529s 10 1.25x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

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

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.359s (-24.2% 🟢) 2.068s (-3.4%) 0.000s (-100.0% 🟢) 2.102s (-3.3%) 0.743s 29 1.00x
🐘 Postgres Next.js (Turbopack) 1.628s 2.226s 0.000s 2.234s 0.606s 27 1.20x
💻 Local Nitro 2.575s (-24.0% 🟢) 3.022s (-25.0% 🟢) 0.000s (-34.4% 🟢) 3.027s (-25.0% 🟢) 0.452s 20 1.89x
💻 Local Next.js (Turbopack) 2.813s 3.343s 0.001s 3.348s 0.535s 19 2.07x
🐘 Postgres Express 3.010s (+69.9% 🔺) 3.376s (+55.0% 🔺) 0.000s (+Infinity% 🔺) 3.449s (+56.8% 🔺) 0.439s 19 2.22x
💻 Local Express 3.072s (-11.4% 🟢) 3.617s (-10.3% 🟢) 0.001s (-11.8% 🟢) 3.620s (-10.3% 🟢) 0.549s 17 2.26x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.461s (+33.4% 🔺) 7.077s (+31.7% 🔺) 0.000s (-54.2% 🟢) 8.098s (+39.8% 🔺) 2.637s 8 1.00x
▲ Vercel Next.js (Turbopack) 6.143s (+9.4% 🔺) 7.578s (+8.5% 🔺) 0.000s (+100.0% 🔺) 8.317s (+10.3% 🔺) 2.174s 8 1.12x
▲ Vercel Express ⚠️ missing - - - - -

🔍 Observability: Nitro | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

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

Winner determined by most benchmark wins

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

Worlds:

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

📋 View full workflow run


Some benchmark jobs failed:

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

Check the workflow run for details.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the builders to write .gitignore files next to generated custom workflow manifest outputs (instead of editing a repo root ignore), and aligns manifest path resolution with the builder workingDir. Also updates the example app to emit the custom manifest under .well-known/workflow/manifest.js.

Changes:

  • Add ensureGeneratedFileGitignore() (with tests) to create/append a colocated .gitignore entry for generated manifests.
  • Resolve workflowManifestPath relative to workingDir and invoke the new gitignore writer after emitting the manifest.
  • Move the example app’s custom manifest output from root manifest.js to .well-known/workflow/manifest.js, removing the old ignore/output wiring.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
workbench/example/turbo.json Removes root manifest.js from Turbo build outputs to match the new manifest location.
workbench/example/package.json Updates example build script to output the manifest under .well-known/workflow/manifest.js.
workbench/example/.gitignore Removes root-level manifest.js ignore since it’s no longer generated there.
packages/builders/src/gitignore.ts New helper that writes/updates colocated .gitignore files for generated outputs.
packages/builders/src/gitignore.test.ts Adds Vitest coverage for the colocated .gitignore behavior.
packages/builders/src/base-builder.ts Resolves manifest paths via workingDir and calls the new gitignore helper after writing the manifest.
.changeset/ignore-generated-manifest.md Changeset entry for the @workflow/builders patch release.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/builders/src/gitignore.ts Outdated
Comment on lines +25 to +33
const resolvedWorkingDir = resolve(workingDir);
const resolvedFilePath = resolve(resolvedWorkingDir, filePath);
const relativePath = normalizeRelativePath(
relative(resolvedWorkingDir, resolvedFilePath)
);

if (!relativePath || isOutsideRoot(relativePath)) {
return false;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(AI) AI Review: Note

Obsolete — the gitignore.ts helper this comment references was removed in 2ac6942, when the approach simplified to writing .gitignore directly inside each builder. No action needed.

Comment thread packages/builders/src/gitignore.ts Outdated
Comment on lines +40 to +55
const gitignorePath = join(outputDir, '.gitignore');
const entry = basename(resolvedFilePath);

let existing = '';
try {
existing = await readFile(gitignorePath, 'utf8');
} catch (error) {
if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {
throw error;
}
}

const lines = existing.split(/\r?\n/).map((line) => line.trim());
if (lines.includes('*') || lines.includes(entry) || lines.includes(`/${entry}`)) {
return false;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(AI) AI Review: Note

Obsolete — the gitignore.ts helper this comment references was removed in 2ac6942, when the approach simplified to writing .gitignore directly inside each builder. No action needed.

Copy link
Copy Markdown
Member

@VaguelySerious VaguelySerious left a comment

Choose a reason for hiding this comment

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

(AI) AI review: no blocking issues

@github-actions
Copy link
Copy Markdown
Contributor

Backport PR opened against stable: #2085. Merge conflicts were resolved by AI — please review carefully. (backport job run)

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.

4 participants