Skip to content

Add MCP get_compilation_issues tool and NAPI method#92062

Draft
sokra wants to merge 2 commits intocanaryfrom
sokra/all-compilation-issues
Draft

Add MCP get_compilation_issues tool and NAPI method#92062
sokra wants to merge 2 commits intocanaryfrom
sokra/all-compilation-issues

Conversation

@sokra
Copy link
Copy Markdown
Member

@sokra sokra commented Mar 29, 2026

What?

Adds a new get_compilation_issues MCP tool (and the underlying projectGetAllCompilationIssues NAPI method) that returns all compilation issues from all routes in a single call.

New files:

  • crates/next-napi-bindings/src/next_api/project.rsproject_get_all_compilation_issues NAPI function + get_all_compilation_issues_operation / get_all_compilation_issues_inner_operation turbo-tasks operations
  • packages/next/src/server/mcp/tools/get-compilation-issues.ts — MCP tool implementation
  • test/development/mcp-server/mcp-server-get-compilation-issues.test.ts — e2e test
  • test/development/mcp-server/fixtures/compilation-errors-app/ — fixture app with three routes (valid page, missing-module error, syntax error)

Modified files:

  • packages/next/src/build/swc/generated-native.d.ts + types.ts + index.ts — expose the new NAPI method
  • packages/next/src/server/mcp/get-or-create-mcp-server.ts — register the new tool, accept getTurbopackProject option
  • packages/next/src/server/dev/hot-reloader-turbopack.ts — pass project to MCP middleware
  • packages/next/src/telemetry/events/build.ts — add 'mcp/get_compilation_issues' to the McpToolName union

Why?

The existing MCP tools require a browser session (and thus a specific route to be rendered) to surface compilation errors. get_compilation_issues works without a browser session and covers all routes proactively — useful for AI coding agents that want to check for errors across the whole app before trying to render a page.

How?

NAPI layer:
project_get_all_compilation_issues calls a two-level turbo-tasks operation pair:

  1. get_all_compilation_issues_inner_operation — iterates all endpoint groups via project.get_all_endpoint_groups(false) and calls endpoint_group.module_graphs().as_side_effect() on each. This builds the module graph (resolution + transformation) for every entrypoint without chunking, emitting, or code generation. Issues are emitted as turbo-tasks collectables.

  2. get_all_compilation_issues_operation — wraps the inner op in strongly_consistent_catch_collectables to harvest issues/diagnostics/effects, then returns an OperationResult.

Why not project.whole_app_module_graphs()?
whole_app_module_graphs() calls drop_issues() in development mode to prevent every per-route HMR subscription from seeing all global issues. Calling it here would return zero issues in dev. Per-endpoint module_graphs() calls don't have this suppression.

MCP tool (get_compilation_issues):
Calls project.getAllCompilationIssues(), maps the result to a plain {issues, diagnostics} JSON object, and returns it. The tool works without a browser session and is available as soon as the dev server is ready.

Test:
A fixture app with three routes (valid app/page.tsx, app/missing-module/page.tsx importing a non-existent package, app/syntax-error/page.tsx with unclosed JSX) is used to verify:

  1. The tool returns a result without any browser session
  2. Module-not-found errors are detected
  3. Syntax errors are detected
  4. Issues include severity, title, filePath, and description metadata fields

e2e tests: added — test/development/mcp-server/mcp-server-get-compilation-issues.test.ts

sokra and others added 2 commits March 29, 2026 00:22
Adds a new `project_get_all_compilation_issues` NAPI method that builds
the module graph for all entrypoints using `whole_app_module_graphs()`
without chunking, code generation, or disk emission. This surfaces all
compilation issues (resolve errors, missing modules, transform errors)
from all routes in a single call.

Wires this into a new `get_compilation_issues` MCP tool that works
without requiring a browser session, covering all routes proactively.

Includes an e2e test with a fixture app containing routes with different
error types (module-not-found, syntax errors, and a valid page).

Co-Authored-By: Claude <noreply@anthropic.com>
…app_module_graphs

whole_app_module_graphs() calls drop_issues() in development mode to prevent
duplicate issue reporting during HMR per-route subscriptions. This caused
get_all_compilation_issues to return zero issues in dev mode.

Fix by iterating all endpoint groups and calling module_graphs() on each,
which builds the module graph and collects issues per endpoint without the
dev-mode issue suppression.

Co-Authored-By: Claude <noreply@anthropic.com>
@nextjs-bot nextjs-bot added created-by: Turbopack team PRs by the Turbopack team. tests Turbopack Related to Turbopack with Next.js. type: next labels Mar 29, 2026
@nextjs-bot
Copy link
Copy Markdown
Collaborator

nextjs-bot commented Mar 29, 2026

Failing test suites

Commit: 4a69f6c | About building and testing Next.js

pnpm test-dev test/development/mcp-server/mcp-server-get-compilation-issues.test.ts (job)

  • mcp-server get_compilation_issues tool > should return compilation issues without requiring a browser session (DD)
  • mcp-server get_compilation_issues tool > should detect module-not-found errors (DD)
  • mcp-server get_compilation_issues tool > should detect syntax errors (DD)
  • mcp-server get_compilation_issues tool > should include issue metadata fields (DD)
Expand output

● mcp-server get_compilation_issues tool › should return compilation issues without requiring a browser session

SyntaxError: "undefined" is not valid JSON
    at JSON.parse (<anonymous>)

  31 |     expect(match).toBeTruthy()
  32 |     const result = JSON.parse(match![1])
> 33 |     return JSON.parse(result.result?.content?.[0]?.text)
     |                 ^
  34 |   }
  35 |
  36 |   it('should return compilation issues without requiring a browser session', async () => {

  at parse (development/mcp-server/mcp-server-get-compilation-issues.test.ts:33:17)
  at Object.<anonymous> (development/mcp-server/mcp-server-get-compilation-issues.test.ts:37:22)

● mcp-server get_compilation_issues tool › should detect module-not-found errors

SyntaxError: "undefined" is not valid JSON
    at JSON.parse (<anonymous>)

  31 |     expect(match).toBeTruthy()
  32 |     const result = JSON.parse(match![1])
> 33 |     return JSON.parse(result.result?.content?.[0]?.text)
     |                 ^
  34 |   }
  35 |
  36 |   it('should return compilation issues without requiring a browser session', async () => {

  at parse (development/mcp-server/mcp-server-get-compilation-issues.test.ts:33:17)
  at Object.<anonymous> (development/mcp-server/mcp-server-get-compilation-issues.test.ts:44:22)

● mcp-server get_compilation_issues tool › should detect syntax errors

SyntaxError: "undefined" is not valid JSON
    at JSON.parse (<anonymous>)

  31 |     expect(match).toBeTruthy()
  32 |     const result = JSON.parse(match![1])
> 33 |     return JSON.parse(result.result?.content?.[0]?.text)
     |                 ^
  34 |   }
  35 |
  36 |   it('should return compilation issues without requiring a browser session', async () => {

  at parse (development/mcp-server/mcp-server-get-compilation-issues.test.ts:33:17)
  at Object.<anonymous> (development/mcp-server/mcp-server-get-compilation-issues.test.ts:60:22)

● mcp-server get_compilation_issues tool › should include issue metadata fields

SyntaxError: "undefined" is not valid JSON
    at JSON.parse (<anonymous>)

  31 |     expect(match).toBeTruthy()
  32 |     const result = JSON.parse(match![1])
> 33 |     return JSON.parse(result.result?.content?.[0]?.text)
     |                 ^
  34 |   }
  35 |
  36 |   it('should return compilation issues without requiring a browser session', async () => {

  at parse (development/mcp-server/mcp-server-get-compilation-issues.test.ts:33:17)
  at Object.<anonymous> (development/mcp-server/mcp-server-get-compilation-issues.test.ts:73:22)

pnpm test-start test/e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts (job)

  • app dir client cache with parallel routes > prefetch={true} > should prefetch the full page (DD)
  • app dir client cache with parallel routes > prefetch={true} > should re-use the cache for the full page, only for 5 mins (DD)
Expand output

● app dir client cache with parallel routes › prefetch={true} › should prefetch the full page

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:31:5)
  at describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:30:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:7:1)

● app dir client cache with parallel routes › prefetch={true} › should re-use the cache for the full page, only for 5 mins

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:56:5)
  at describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:30:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:7:1)

pnpm test-start test/e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts (job)

  • layout sharing in non-static prefetches > full prefetches should omit layouts that were already prefetched with a full prefetch (DD)
  • layout sharing in non-static prefetches > segment-level prefetch config > does not unnecessarily use a runtime prefetch for sub-pages of runtime-prefetchable layouts (DD)
  • layout sharing in non-static prefetches > segment-level prefetch config > statically prefetches a fully-static page segment if all its runtime-prefetchable parents are available (DD)
  • layout sharing in non-static prefetches > segment-level prefetch config > uses a runtime prefetch for sub-pages of runtime-prefetchable layouts if requested (DD)
Expand output

● layout sharing in non-static prefetches › full prefetches should omit layouts that were already prefetched with a full prefetch

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:121:3)
  at Object.describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:6:1)

● layout sharing in non-static prefetches › segment-level prefetch config › does not unnecessarily use a runtime prefetch for sub-pages of runtime-prefetchable layouts

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:616:5)
  at describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:584:3)
  at Object.describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:6:1)

● layout sharing in non-static prefetches › segment-level prefetch config › statically prefetches a fully-static page segment if all its runtime-prefetchable parents are available

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:649:5)
  at describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:584:3)
  at Object.describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:6:1)

● layout sharing in non-static prefetches › segment-level prefetch config › uses a runtime prefetch for sub-pages of runtime-prefetchable layouts if requested

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:693:5)
  at describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:584:3)
  at Object.describe (e2e/app-dir/segment-cache/prefetch-layout-sharing/prefetch-layout-sharing.test.ts:6:1)

pnpm test-start-turbo test/e2e/app-dir/segment-cache/staleness/segment-cache-per-page-dynamic-stale-time.test.ts (turbopack) (job)

  • segment cache (per-page dynamic stale time) > per-page value overrides global staleTimes.dynamic regardless of direction (DD)
Expand output

● segment cache (per-page dynamic stale time) › per-page value overrides global staleTimes.dynamic regardless of direction

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  50 |       }
  51 |
> 52 |       const result = Reflect.apply(target, thisArg, args)
     |                              ^
  53 |       return typeof result === 'function' ? wrapJestTestFn(result) : result
  54 |     },
  55 |     get(target, prop, receiver) {

  at Object.apply (lib/e2e-utils/index.ts:52:30)
  at it (e2e/app-dir/segment-cache/staleness/segment-cache-per-page-dynamic-stale-time.test.ts:216:3)
  at Object.describe (e2e/app-dir/segment-cache/staleness/segment-cache-per-page-dynamic-stale-time.test.ts:5:1)

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Mar 29, 2026

Merging this PR will degrade performance by 3.41%

⚡ 1 improved benchmark
❌ 1 regressed benchmark
✅ 15 untouched benchmarks
⏩ 3 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation react-dom-client.development.js[full] 408.2 ms 422.6 ms -3.41%
Simulation app-page-turbo.runtime.prod.js[full] 648.8 ms 622.4 ms +4.23%

Comparing sokra/all-compilation-issues (4a69f6c) with canary (db08109)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@nextjs-bot
Copy link
Copy Markdown
Collaborator

Stats from current PR

🟢 3 improvements

Metric Canary PR Change Trend
Turbo Build Time 11.166s 10.466s 🟢 700ms (-6%) ▁▁▁▁▁
Warm (Listen) 1.431s 1.323s 🟢 108ms (-8%) ▁▁▁▁▁
nextDevWarmR..urationTurbo 1.436s 1.336s 🟢 100ms (-7%) ▁▁▁▁▁
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 1.404s 1.392s ▁▁▁▁▁
Cold (Ready in log) 1.403s 1.383s ▁▁▁▁▁
Cold (First Request) 2.941s 3.040s ▂▂▂▂▂
Warm (Listen) 1.431s 1.323s 🟢 108ms (-8%) ▁▁▁▁▁
Warm (Ready in log) 1.436s 1.336s 🟢 100ms (-7%) ▁▁▁▁▁
Warm (First Request) 1.393s 1.467s ▁▁▁▁▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 508ms 509ms ▁▁▁▁▁
Cold (Ready in log) 473ms 472ms ▁▁▁▁▁
Cold (First Request) 2.121s 2.139s ▃▃▁▂▄
Warm (Listen) 508ms 508ms ▁▁▁▁▁
Warm (Ready in log) 468ms 471ms ▁▁▁▁▁
Warm (First Request) 2.146s 2.147s ▃▃▁▂▃

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 11.166s 10.466s 🟢 700ms (-6%) ▁▁▁▁▁
Cached Build 10.966s 11.177s ▁▁▁▁▁
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 16.088s 16.154s ▁▂▁▂▁
Cached Build 16.176s 16.268s ▁▁▁▂▂
node_modules Size 485 MB 485 MB ▆▆▆██
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
02fkg8wfh0iju.js gzip 9.19 kB N/A -
050zwt5xh_0tx.js gzip 10.4 kB N/A -
06rvbj82bhyo0.js gzip 13 kB N/A -
087fzjd-gvlzv.js gzip 450 B N/A -
08kd-8q3-9e-y.js gzip 161 B N/A -
0b0tf-cqc0t_f.js gzip 65.7 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0jilgfx1zucfp.js gzip 160 B N/A -
0jpxfjronl6qa.js gzip 156 B N/A -
0n2w1m-n02s0g.js gzip 155 B N/A -
0ppxcl_z43mad.js gzip 8.52 kB N/A -
19oha6-znmkcv.js gzip 8.55 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1hnuff-wo-6_b.js gzip 153 B N/A -
1k-qd_1qbbsix.js gzip 156 B N/A -
1t1io8vz1iho3.js gzip 156 B N/A -
1yl5jy653a49k.js gzip 13.7 kB N/A -
2_ocvpbol4ay2.js gzip 168 B N/A -
21-onqp0xrnd1.js gzip 157 B N/A -
2524qmz0et54b.js gzip 7.61 kB N/A -
26elcgxnn9zjd.js gzip 8.52 kB N/A -
2900hudr6gvm0.js gzip 2.28 kB N/A -
2c0c3jugbgl8f.js gzip 155 B N/A -
2cb1d0vrcv8ph.js gzip 70.8 kB N/A -
2ihlsvbo2c9e8.js gzip 215 B 215 B
2lv2js3kmdeho.js gzip 8.48 kB N/A -
2r1lapepmxlsw.js gzip 153 B N/A -
2rehygrd36hqv.js gzip 8.58 kB N/A -
2srwswih0m9_h.js gzip 13.3 kB N/A -
3-p9p9mheqhzx.js gzip 8.55 kB N/A -
31030bryqpolg.js gzip 8.53 kB N/A -
31dx5nmrzzuy7.js gzip 225 B N/A -
3ha7h58bte-tq.js gzip 49 kB N/A -
3hv075wnmnp-6.js gzip 156 B N/A -
3iu80eefg23ae.js gzip 9.77 kB N/A -
3k-48b78ys_vy.js gzip 10.1 kB N/A -
3m7-5rfj0avoz.js gzip 12.9 kB N/A -
3uqce_6sa526g.js gzip 8.47 kB N/A -
3ygl996o7b1vm.js gzip 154 B N/A -
3yurjqk-sjs3y.js gzip 1.46 kB N/A -
421vzwdt9j1b_.js gzip 5.62 kB N/A -
turbopack-09..dgrl.js gzip 4.16 kB N/A -
turbopack-0k..qc85.js gzip 4.16 kB N/A -
turbopack-0x..dcuq.js gzip 4.16 kB N/A -
turbopack-10..se-u.js gzip 4.16 kB N/A -
turbopack-10.._bbs.js gzip 4.16 kB N/A -
turbopack-1v..l_xw.js gzip 4.16 kB N/A -
turbopack-1v..ziot.js gzip 4.16 kB N/A -
turbopack-1v..p1k4.js gzip 4.14 kB N/A -
turbopack-23..uhk5.js gzip 4.16 kB N/A -
turbopack-27..an8t.js gzip 4.17 kB N/A -
turbopack-2c..cz4z.js gzip 4.16 kB N/A -
turbopack-36..zit7.js gzip 4.16 kB N/A -
turbopack-3y..ladh.js gzip 4.16 kB N/A -
turbopack-42..or-4.js gzip 4.16 kB N/A -
02hm69y2pdhqz.js gzip N/A 157 B -
03dgzoo-qf3sm.js gzip N/A 9.19 kB -
05qaokgw7ls07.js gzip N/A 162 B -
05tx5f25dlivn.js gzip N/A 8.53 kB -
0c7ez6p2qc57f.js gzip N/A 5.62 kB -
0n95_eeqgrhcd.js gzip N/A 13.7 kB -
0qnwuk92m8i7o.js gzip N/A 10.4 kB -
0r4wrn6n0ue2m.js gzip N/A 8.55 kB -
0rj3ihy82286x.js gzip N/A 70.8 kB -
0rp0fodtbt_6m.js gzip N/A 8.52 kB -
0sfck-km4dl1k.js gzip N/A 8.47 kB -
0x0xuhmxzwkp8.js gzip N/A 8.47 kB -
1-wdvgxnzicj7.js gzip N/A 1.46 kB -
11u6nxujb2eg4.js gzip N/A 450 B -
1gxpcuwuz8sla.js gzip N/A 155 B -
1h2m6kg4-m7d3.js gzip N/A 7.6 kB -
1y_gwpxs0gxrd.js gzip N/A 156 B -
25gmftimanniw.js gzip N/A 155 B -
27suvfgm54aoe.js gzip N/A 155 B -
2k9ax08cjl2id.js gzip N/A 12.9 kB -
2lms6k76q5-6m.js gzip N/A 13.3 kB -
2q3hz-jtbjs52.js gzip N/A 9.77 kB -
2qx4twi9i3xus.js gzip N/A 2.28 kB -
2srnqic6tvxxd.js gzip N/A 8.52 kB -
2tx5ug_nu2fr3.js gzip N/A 157 B -
2vlnbzuebndyi.js gzip N/A 155 B -
2x1lf38j5osyq.js gzip N/A 65.7 kB -
30l7m4nayp73a.js gzip N/A 8.55 kB -
34zoxk4e1s9ew.js gzip N/A 153 B -
37i10x8bxu1gx.js gzip N/A 156 B -
38rr7d3kfutni.js gzip N/A 13 kB -
3axctu0hicx1a.js gzip N/A 49 kB -
3h_ecpiaatwgc.js gzip N/A 10.1 kB -
3ity0aahajapd.js gzip N/A 225 B -
3q2rztpa5g415.js gzip N/A 159 B -
3w1sv0569vk1o.js gzip N/A 153 B -
3xuvmu4xf35h_.js gzip N/A 169 B -
43mlw9dy_8f02.js gzip N/A 8.58 kB -
turbopack-0s..4k3k.js gzip N/A 4.16 kB -
turbopack-1_..etfm.js gzip N/A 4.16 kB -
turbopack-14..27ax.js gzip N/A 4.16 kB -
turbopack-16..y659.js gzip N/A 4.16 kB -
turbopack-1d..b6b9.js gzip N/A 4.16 kB -
turbopack-1p..3f-_.js gzip N/A 4.16 kB -
turbopack-2_..lhs9.js gzip N/A 4.16 kB -
turbopack-2m..6cok.js gzip N/A 4.17 kB -
turbopack-2o..phbv.js gzip N/A 4.16 kB -
turbopack-30..z4a0.js gzip N/A 4.16 kB -
turbopack-32..ry9p.js gzip N/A 4.16 kB -
turbopack-3b..ojiu.js gzip N/A 4.14 kB -
turbopack-3o..uk35.js gzip N/A 4.16 kB -
turbopack-3v..5647.js gzip N/A 4.16 kB -
Total 464 kB 464 kB ⚠️ +9 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 717 B 715 B
Total 717 B 715 B ✅ -2 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 432 B 434 B
Total 432 B 434 B ⚠️ +2 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 60.7 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.59 kB N/A -
e8aec2e4-HASH.js gzip 62.8 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 254 B
main-HASH.js gzip 39.3 kB 39.2 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
262-HASH.js gzip N/A 4.59 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.55 kB -
6948ada0-HASH.js gzip N/A 62.8 kB -
9544-HASH.js gzip N/A 61.4 kB -
Total 235 kB 235 kB ⚠️ +664 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 183 B 180 B 🟢 3 B (-2%)
css-HASH.js gzip 331 B 330 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB
edge-ssr-HASH.js gzip 256 B 256 B
head-HASH.js gzip 351 B 352 B
hooks-HASH.js gzip 384 B 383 B
image-HASH.js gzip 580 B 581 B
index-HASH.js gzip 260 B 260 B
link-HASH.js gzip 2.51 kB 2.51 kB
routerDirect..HASH.js gzip 320 B 319 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.98 kB 7.98 kB ✅ -1 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 125 kB 125 kB
page.js gzip 270 kB 270 kB
Total 395 kB 396 kB ⚠️ +242 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 619 B 614 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 44 kB 43.9 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.6 kB 45.5 kB ✅ -125 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 715 B 718 B
Total 715 B 718 B ⚠️ +3 B
Build Cache
Canary PR Change
0.pack gzip 4.35 MB 4.34 MB 🟢 8.1 kB (0%)
index.pack gzip 109 kB 110 kB
index.pack.old gzip 110 kB 110 kB
Total 4.57 MB 4.56 MB ✅ -7.8 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 335 kB 335 kB
app-page-exp..prod.js gzip 185 kB 185 kB
app-page-tur...dev.js gzip 335 kB 335 kB
app-page-tur..prod.js gzip 185 kB 185 kB
app-page-tur...dev.js gzip 331 kB 331 kB
app-page-tur..prod.js gzip 183 kB 183 kB
app-page.run...dev.js gzip 332 kB 332 kB
app-page.run..prod.js gzip 184 kB 184 kB
app-route-ex...dev.js gzip 76.2 kB 76.2 kB
app-route-ex..prod.js gzip 51.9 kB 51.9 kB
app-route-tu...dev.js gzip 76.3 kB 76.3 kB
app-route-tu..prod.js gzip 51.9 kB 51.9 kB
app-route-tu...dev.js gzip 75.9 kB 75.9 kB
app-route-tu..prod.js gzip 51.6 kB 51.6 kB
app-route.ru...dev.js gzip 75.8 kB 75.8 kB
app-route.ru..prod.js gzip 51.6 kB 51.6 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 43.5 kB 43.5 kB
pages-api-tu..prod.js gzip 33.1 kB 33.1 kB
pages-api.ru...dev.js gzip 43.4 kB 43.4 kB
pages-api.ru..prod.js gzip 33.1 kB 33.1 kB
pages-turbo....dev.js gzip 52.9 kB 52.9 kB
pages-turbo...prod.js gzip 38.7 kB 38.7 kB
pages.runtim...dev.js gzip 52.8 kB 52.8 kB
pages.runtim..prod.js gzip 38.7 kB 38.7 kB
server.runti..prod.js gzip 62.5 kB 62.5 kB
Total 2.98 MB 2.98 MB ✅ -12 B
📝 Changed Files (8 files)

Files with changes:

  • pages-api-tu..ntime.dev.js
  • pages-api-tu..time.prod.js
  • pages-api.runtime.dev.js
  • pages-api.ru..time.prod.js
  • pages-turbo...ntime.dev.js
  • pages-turbo...time.prod.js
  • pages.runtime.dev.js
  • pages.runtime.prod.js
View diffs
pages-api-tu..ntime.dev.js

Diff too large to display

pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-api.ru..time.prod.js

Diff too large to display

pages-turbo...ntime.dev.js

Diff too large to display

pages-turbo...time.prod.js

Diff too large to display

pages.runtime.dev.js

Diff too large to display

pages.runtime.prod.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/5613b13045bab60fc980729d3b9a8f71ebf29cba/next

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

Labels

created-by: Turbopack team PRs by the Turbopack team. tests Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants