Skip to content

Add lazy workflow and step discovery in Next.js#640

Merged
ijjk merged 27 commits intomainfrom
ijjk/lazy-next-discovery
Dec 23, 2025
Merged

Add lazy workflow and step discovery in Next.js#640
ijjk merged 27 commits intomainfrom
ijjk/lazy-next-discovery

Conversation

@ijjk
Copy link
Copy Markdown
Member

@ijjk ijjk commented Dec 17, 2025

This re-architects the integration with workflows and Next.js to no longer need to do a pass over all entry points to discover workflows/steps. Instead workflows/steps will be discovered as Next.js is processing files via the configured loader automatically. Then once the loader is done being called we compile the workflow bundles. This also removes the need to have separate custom dev watching for workflows and we can fully rely on Next.js for watching for changes instead.

closes: #523
closes: #469

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Dec 17, 2025

🦋 Changeset detected

Latest commit: 60eaeb3

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

This PR includes changesets to release 10 packages
Name Type
@workflow/builders Patch
@workflow/next Patch
@workflow/astro Patch
@workflow/cli Patch
@workflow/nitro Patch
@workflow/sveltekit Patch
workflow Patch
@workflow/world-testing Patch
@workflow/nuxt Patch
@workflow/ai Patch

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

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

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Dec 17, 2025

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

Project Deployment Review Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Dec 23, 2025 4:38am
example-nextjs-workflow-webpack Ready Ready Preview, Comment Dec 23, 2025 4:38am
example-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-astro-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-express-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-fastify-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-hono-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-nitro-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-nuxt-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-sveltekit-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workbench-vite-workflow Ready Ready Preview, Comment Dec 23, 2025 4:38am
workflow-docs Ready Ready Preview, Comment Dec 23, 2025 4:38am

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Dec 17, 2025

📊 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 🥇 Next.js (Turbopack) 0.032s (-21.2% 🟢) 1.015s (~) 0.983s 10 1.00x
🌐 Redis Next.js (Turbopack) 0.034s (-17.5% 🟢) 1.018s (~) 0.983s 10 1.07x
🌐 Starter Next.js (Turbopack) 0.040s (+3.4%) 1.014s (~) 0.974s 10 1.24x
💻 Local Nitro 0.042s (-1.0%) 1.006s (~) 0.965s 10 1.30x
💻 Local Express 0.044s (+1.6%) 1.007s (~) 0.964s 10 1.37x
🌐 Turso Next.js (Turbopack) 0.109s (+9.8% 🔺) 1.013s (~) 0.904s 10 3.41x
🌐 MongoDB Next.js (Turbopack) 0.117s (+58.8% 🔺) 1.015s (~) 0.898s 10 3.66x
🐘 Postgres Nitro 0.269s (-10.7% 🟢) 1.022s (+1.0%) 0.753s 10 8.41x
🐘 Postgres Express 0.318s (~) 1.016s (~) 0.698s 10 9.95x
🐘 Postgres Next.js (Turbopack) 0.365s (+123.7% 🔺) 1.019s (~) 0.654s 10 11.40x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 0.537s (+2.0%) 1.639s (-17.3% 🟢) 1.101s 10 1.00x
▲ Vercel Express 0.564s (-7.8% 🟢) 1.545s (+5.8% 🔺) 0.982s 10 1.05x
▲ Vercel Next.js (Turbopack) 0.567s (-10.6% 🟢) 1.570s (-0.9%) 1.004s 10 1.05x

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

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 1.071s (-2.0%) 2.011s (~) 0.940s 10 1.00x
🌐 Redis Next.js (Turbopack) 1.077s (-1.4%) 2.015s (~) 0.937s 10 1.01x
🌐 Starter Next.js (Turbopack) 1.091s (~) 2.009s (~) 0.917s 10 1.02x
💻 Local Nitro 1.112s (~) 2.006s (~) 0.894s 10 1.04x
💻 Local Express 1.113s (~) 2.007s (~) 0.895s 10 1.04x
🌐 MongoDB Next.js (Turbopack) 1.301s (~) 2.012s (~) 0.710s 10 1.21x
🌐 Turso Next.js (Turbopack) 1.315s (+0.9%) 2.012s (~) 0.697s 10 1.23x
🐘 Postgres Next.js (Turbopack) 1.649s (-14.1% 🟢) 2.016s (~) 0.367s 10 1.54x
🐘 Postgres Express 2.155s (~) 3.016s (~) 0.860s 10 2.01x
🐘 Postgres Nitro 2.232s (+4.2%) 3.015s (~) 0.782s 10 2.08x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.542s (-7.0% 🟢) 3.702s (~) 1.160s 10 1.00x
▲ Vercel Next.js (Turbopack) 2.554s (-5.0%) 3.634s (-1.8%) 1.080s 10 1.00x
▲ Vercel Express 2.659s (~) 3.624s (+2.2%) 0.965s 10 1.05x

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

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 10.535s (-1.1%) 11.016s (~) 0.481s 5 1.00x
🌐 Redis Next.js (Turbopack) 10.580s (-0.9%) 11.022s (~) 0.442s 5 1.00x
🌐 Starter Next.js (Turbopack) 10.587s (~) 11.010s (~) 0.424s 5 1.00x
💻 Local Express 10.785s (~) 11.013s (~) 0.228s 5 1.02x
💻 Local Nitro 10.791s (~) 11.013s (~) 0.223s 5 1.02x
🌐 Turso Next.js (Turbopack) 12.184s (~) 13.022s (~) 0.838s 5 1.16x
🌐 MongoDB Next.js (Turbopack) 12.193s (~) 13.021s (~) 0.828s 5 1.16x
🐘 Postgres Next.js (Turbopack) 14.811s (-2.7%) 15.441s (-3.7%) 0.630s 5 1.41x
🐘 Postgres Nitro 20.431s (~) 21.037s (+0.9%) 0.606s 5 1.94x
🐘 Postgres Express 20.501s (~) 21.032s (~) 0.531s 5 1.95x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 21.385s (-0.9%) 22.047s (-1.7%) 0.662s 5 1.00x
▲ Vercel Express 21.546s (~) 22.397s (~) 0.851s 5 1.01x
▲ Vercel Next.js (Turbopack) 21.606s (-0.9%) 22.346s (-0.9%) 0.740s 5 1.01x

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

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 1.313s (-3.3%) 2.011s (~) 0.699s 15 1.00x
💻 Local Next.js (Turbopack) 1.328s (-4.8%) 2.012s (~) 0.683s 15 1.01x
🌐 Starter Next.js (Turbopack) 1.343s (~) 2.007s (~) 0.664s 15 1.02x
💻 Local Express 1.403s (-0.6%) 2.006s (~) 0.603s 15 1.07x
💻 Local Nitro 1.415s (~) 2.006s (~) 0.591s 15 1.08x
🐘 Postgres Next.js (Turbopack) 1.869s (+1.3%) 2.015s (-2.5%) 0.146s 15 1.42x
🌐 MongoDB Next.js (Turbopack) 2.155s (+1.3%) 3.013s (~) 0.858s 10 1.64x
🌐 Turso Next.js (Turbopack) 2.176s (-0.8%) 3.017s (~) 0.841s 10 1.66x
🐘 Postgres Nitro 2.338s (-0.6%) 3.017s (~) 0.679s 10 1.78x
🐘 Postgres Express 2.396s (~) 3.013s (~) 0.616s 10 1.83x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.719s (-0.6%) 3.815s (+8.5% 🔺) 1.096s 8 1.00x
▲ Vercel Nitro 2.740s (+1.0%) 3.806s (~) 1.066s 8 1.01x
▲ Vercel Next.js (Turbopack) 2.935s (-3.8%) 3.782s (-4.9%) 0.847s 8 1.08x

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

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 2.014s (-6.9% 🟢) 2.421s (-22.3% 🟢) 0.407s 13 1.00x
💻 Local Express 2.165s (-2.0%) 3.131s (-0.8%) 0.966s 10 1.07x
💻 Local Nitro 2.176s (-2.1%) 3.151s (~) 0.975s 10 1.08x
🌐 Redis Next.js (Turbopack) 2.367s (-5.0% 🟢) 3.012s (~) 0.645s 10 1.17x
🌐 Starter Next.js (Turbopack) 2.446s (~) 3.009s (~) 0.563s 10 1.21x
🐘 Postgres Next.js (Turbopack) 2.576s (-2.2%) 3.021s (~) 0.444s 10 1.28x
🐘 Postgres Express 2.978s (+2.0%) 3.470s (+7.2% 🔺) 0.492s 9 1.48x
🐘 Postgres Nitro 3.048s (+14.8% 🔺) 3.582s (+18.3% 🔺) 0.534s 9 1.51x
🌐 MongoDB Next.js (Turbopack) 4.656s (-2.4%) 5.186s (~) 0.530s 6 2.31x
🌐 Turso Next.js (Turbopack) 4.661s (~) 5.181s (~) 0.520s 6 2.31x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.716s (+16.9% 🔺) 4.584s (+20.1% 🔺) 0.868s 7 1.00x
▲ Vercel Express 3.754s (+23.3% 🔺) 4.516s (+22.6% 🔺) 0.761s 7 1.01x
▲ Vercel Nitro 3.912s (+25.9% 🔺) 4.473s (+16.7% 🔺) 0.560s 7 1.05x

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

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🌐 Redis 🥇 Next.js (Turbopack) 1.325s (-4.5%) 2.011s (~) 0.686s 15 1.00x
🌐 Starter Next.js (Turbopack) 1.331s (-3.0%) 2.007s (~) 0.676s 15 1.00x
💻 Local Next.js (Turbopack) 1.351s (-3.4%) 2.015s (~) 0.664s 15 1.02x
💻 Local Nitro 1.409s (-1.7%) 2.005s (~) 0.596s 15 1.06x
💻 Local Express 1.410s (~) 2.006s (~) 0.596s 15 1.06x
🐘 Postgres Next.js (Turbopack) 1.671s (+2.6%) 2.013s (~) 0.343s 15 1.26x
🐘 Postgres Nitro 1.850s (-1.3%) 2.011s (~) 0.161s 15 1.40x
🐘 Postgres Express 1.908s (+8.0% 🔺) 2.077s (+3.3%) 0.170s 15 1.44x
🌐 MongoDB Next.js (Turbopack) 2.140s (+1.0%) 3.011s (~) 0.871s 10 1.62x
🌐 Turso Next.js (Turbopack) 2.180s (-1.7%) 3.013s (~) 0.832s 10 1.65x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.566s (-4.0%) 3.664s (-2.9%) 1.098s 9 1.00x
▲ Vercel Express 2.668s (-1.5%) 3.665s (+4.5%) 0.997s 9 1.04x
▲ Vercel Next.js (Turbopack) 2.712s (+1.9%) 3.655s (~) 0.943s 9 1.06x

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

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 2.060s (-10.2% 🟢) 2.918s (-10.1% 🟢) 0.858s 11 1.00x
💻 Local Nitro 2.214s (-7.4% 🟢) 3.157s (-5.2% 🟢) 0.943s 10 1.07x
💻 Local Express 2.227s (-0.8%) 3.177s (~) 0.950s 10 1.08x
🌐 Redis Next.js (Turbopack) 2.381s (-4.3%) 3.012s (~) 0.632s 10 1.16x
🌐 Starter Next.js (Turbopack) 2.466s (~) 3.008s (~) 0.543s 10 1.20x
🐘 Postgres Next.js (Turbopack) 2.466s (-7.1% 🟢) 3.021s (~) 0.555s 10 1.20x
🐘 Postgres Nitro 2.619s (+11.8% 🔺) 3.024s (~) 0.406s 10 1.27x
🐘 Postgres Express 2.817s (+3.4%) 3.015s (~) 0.197s 10 1.37x
🌐 Turso Next.js (Turbopack) 4.702s (-1.4%) 5.183s (~) 0.481s 6 2.28x
🌐 MongoDB Next.js (Turbopack) 4.765s (+1.3%) 5.181s (~) 0.416s 6 2.31x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.745s (+26.2% 🔺) 4.586s (+24.6% 🔺) 0.842s 7 1.00x
▲ Vercel Express 3.795s (+17.8% 🔺) 4.591s (+20.7% 🔺) 0.796s 7 1.01x
▲ Vercel Next.js (Turbopack) 4.534s (+41.7% 🔺) 5.280s (+36.2% 🔺) 0.747s 6 1.21x

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

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.103s (-29.4% 🟢) 1.003s (~) 0.017s (+3.1%) 1.027s (~) 0.924s 10 1.00x
🌐 Redis Next.js (Turbopack) 0.109s (-23.8% 🟢) 1.005s (~) 0.000s (NaN%) 1.014s (~) 0.905s 10 1.05x
🌐 Starter Next.js (Turbopack) 0.126s (-2.6%) 1.006s (~) 0.000s (NaN%) 1.011s (~) 0.885s 10 1.22x
💻 Local Express 0.174s (-1.0%) 0.992s (~) 0.015s (-6.3% 🟢) 1.022s (~) 0.847s 10 1.68x
💻 Local Nitro 0.178s (+1.3%) 0.993s (~) 0.019s (+18.9% 🔺) 1.025s (~) 0.848s 10 1.72x
🌐 MongoDB Next.js (Turbopack) 0.517s (+0.9%) 0.930s (-0.6%) 0.000s (+Infinity% 🔺) 1.013s (~) 0.495s 10 5.00x
🌐 Turso Next.js (Turbopack) 0.545s (+11.2% 🔺) 0.910s (-5.3% 🟢) 0.000s (+200.0% 🔺) 1.016s (~) 0.471s 10 5.27x
🐘 Postgres Next.js (Turbopack) 0.910s (-23.1% 🟢) 0.755s (-55.8% 🟢) 0.000s (+Infinity% 🔺) 1.015s (-44.2% 🟢) 0.105s 10 8.80x
🐘 Postgres Nitro 2.226s (-1.9%) 2.823s (+2.0%) 0.000s (~) 3.016s (~) 0.790s 10 21.51x
🐘 Postgres Express 2.309s (~) 2.735s (~) 0.000s (-100.0% 🟢) 3.016s (~) 0.707s 10 22.31x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.731s (-8.1% 🟢) 3.210s (-0.8%) 0.409s (-42.8% 🟢) 4.100s (-8.8% 🟢) 1.368s 10 1.00x
▲ Vercel Nitro 2.733s (+3.3%) 3.330s (+3.4%) 0.483s (-27.9% 🟢) 4.241s (-1.5%) 1.507s 10 1.00x
▲ Vercel Next.js (Turbopack) 3.089s (+17.4% 🔺) 3.571s (+11.8% 🔺) 0.484s (-15.7% 🟢) 4.515s (+7.6% 🔺) 1.425s 10 1.13x

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

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 8/8
🐘 Postgres Next.js (Turbopack) 7/8
▲ Vercel Nitro 5/8
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 💻 Local 8/8
Next.js (Turbopack) 💻 Local 6/8
Nitro 💻 Local 8/8
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
  • 🌐 Starter: Community world (local development)
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Dec 17, 2025

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 286 0 11 297
✅ 💻 Local Development 262 0 8 270
✅ 📦 Local Production 262 0 8 270
✅ 🐘 Local Postgres 262 0 8 270
❌ 🪟 Windows 0 27 0 27
❌ 🌍 Community Worlds 109 11 0 120
Total 1181 38 35 1254

❌ Failed Tests

🪟 Windows (27 failed)

nextjs-turbopack (27 failed):

  • addTenWorkflow
  • addTenWorkflow
  • should work with react rendering in step
  • promiseAllWorkflow
  • promiseRaceWorkflow
  • promiseAnyWorkflow
  • readableStreamWorkflow
  • hookWorkflow
  • webhookWorkflow
  • webhook route with invalid token
  • sleepingWorkflow
  • nullByteWorkflow
  • workflowAndStepMetadataWorkflow
  • outputStreamWorkflow
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions
  • fetchWorkflow
  • promiseRaceStressTestWorkflow
  • retryAttemptCounterWorkflow
  • retryableAndFatalErrorWorkflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • crossFileErrorWorkflow - stack traces work across imported modules
  • hookCleanupTestWorkflow - hook token reuse after workflow completion
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument
  • closureVariableWorkflow - nested step functions with closure variables
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step
  • health check endpoint - workflow and step endpoints respond to __health query parameter
🌍 Community Worlds (11 failed)

mongodb (1 failed):

  • webhookWorkflow

redis (1 failed):

  • webhookWorkflow

starter (8 failed):

  • addTenWorkflow
  • addTenWorkflow
  • retryAttemptCounterWorkflow
  • crossFileErrorWorkflow - stack traces work across imported modules
  • hookCleanupTestWorkflow - hook token reuse after workflow completion
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars)
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step

turso (1 failed):

  • webhookWorkflow

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 26 0 1
✅ example 26 0 1
✅ express 26 0 1
✅ fastify 26 0 1
✅ hono 26 0 1
✅ nextjs-turbopack 26 0 1
✅ nextjs-webpack 26 0 1
✅ nitro 26 0 1
✅ nuxt 26 0 1
✅ sveltekit 26 0 1
✅ vite 26 0 1
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 26 0 1
✅ express-stable 26 0 1
✅ fastify-stable 26 0 1
✅ hono-stable 26 0 1
✅ nextjs-turbopack-stable 27 0 0
✅ nextjs-webpack-stable 27 0 0
✅ nitro-stable 26 0 1
✅ nuxt-stable 26 0 1
✅ sveltekit-stable 26 0 1
✅ vite-stable 26 0 1
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 26 0 1
✅ express-stable 26 0 1
✅ fastify-stable 26 0 1
✅ hono-stable 26 0 1
✅ nextjs-turbopack-stable 27 0 0
✅ nextjs-webpack-stable 27 0 0
✅ nitro-stable 26 0 1
✅ nuxt-stable 26 0 1
✅ sveltekit-stable 26 0 1
✅ vite-stable 26 0 1
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 26 0 1
✅ express-stable 26 0 1
✅ fastify-stable 26 0 1
✅ hono-stable 26 0 1
✅ nextjs-turbopack-stable 27 0 0
✅ nextjs-webpack-stable 27 0 0
✅ nitro-stable 26 0 1
✅ nuxt-stable 26 0 1
✅ sveltekit-stable 26 0 1
✅ vite-stable 26 0 1
❌ 🪟 Windows
App Passed Failed Skipped
❌ nextjs-turbopack 0 27 0
❌ 🌍 Community Worlds
App Passed Failed Skipped
✅ mongodb-dev 3 0 0
❌ mongodb 26 1 0
✅ redis-dev 3 0 0
❌ redis 26 1 0
✅ starter-dev 3 0 0
❌ starter 19 8 0
✅ turso-dev 3 0 0
❌ turso 26 1 0

📋 View full workflow run

Comment thread packages/next/src/builder.ts Outdated
Comment thread packages/next/src/loader.ts Outdated
Comment thread packages/next/src/loader.ts
dirs: ['.'], // Different apps that use nitro have different directories
}),
buildTarget: 'next', // Placeholder, not actually used
buildTarget: 'nitro' as any, // Placeholder, not actually used
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nice

*/
// Re-export stdlib for discovery - needed because lazy discovery doesn't pick it up via eager scanning.
// The workflow builder injects this as a builtin module available in the workflow runtime sandbox.
export * from '../stdlib.js';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

jc: does this mean things like DurableAgent and mux's external code won't work with lazy eval - when npm modules are distributed via npm?

Copy link
Copy Markdown
Member Author

@ijjk ijjk Dec 22, 2025

Choose a reason for hiding this comment

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

Those will this one is just special since it's implicit not explicit/imported directly by the user.

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.

stdlib only contains fetch() which does need to be imported by the user. We got rid of the implicit fetch() hoisting a while ago.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Ah ya seems fine without it so must have only been needed from different issue early on in this PR.

#683

Comment thread packages/builders/src/base-builder.ts
@ijjk
Copy link
Copy Markdown
Member Author

ijjk commented Dec 23, 2025

@packages/next lists peerDependencies as "next": ">13". Any reason to believe that this is still accurate?

@VaguelySerious wrt^ this PR shouldn't be using any features that cause a Next.js semver requirement change but we should validate minimum supported version in follow-up as v13 does sound like a stretch and isn't maintained anymore.

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

Labels

None yet

Projects

None yet

5 participants