Skip to content

Remove webpack stats generation from Turbopack#91515

Merged
wbinnssmith merged 1 commit intocanaryfrom
sokra/webpack-stats-in-turbopack
Mar 17, 2026
Merged

Remove webpack stats generation from Turbopack#91515
wbinnssmith merged 1 commit intocanaryfrom
sokra/webpack-stats-in-turbopack

Conversation

@sokra
Copy link
Member

@sokra sokra commented Mar 17, 2026

What?

Remove the TURBOPACK_STATS feature that generated webpack-compatible webpack-stats.json files from Turbopack's output.

Deleted:

  • crates/next-api/src/webpack_stats.rs — the entire 305-line Rust implementation that built webpack-format stats (assets, chunks, modules, entrypoints) from Turbopack's module graph

Rust changes:

  • crates/next-api/src/lib.rs — removed mod webpack_stats;
  • crates/next-api/src/project.rs — removed should_create_webpack_stats() which read the TURBOPACK_STATS env var
  • crates/next-api/src/pages.rs — removed generate_webpack_stats import and stats output emission
  • crates/next-api/src/app.rs — same

TypeScript changes:

  • packages/next/src/shared/lib/constants.ts — removed WEBPACK_STATS = 'webpack-stats.json' constant
  • packages/next/src/shared/lib/turbopack/manifest-loader.ts — removed loadWebpackStats(), writeWebpackStats(), mergeWebpackStats(), the webpackStats field, webpack type imports, and the TURBOPACK_STATS env guard in writeManifests()
  • packages/next/src/server/dev/turbopack-utils.ts — removed shouldCreateWebpackStats flag and two loadWebpackStats() call sites
  • packages/next/src/build/handle-entrypoints.ts — same

Why?

This feature is no longer needed and adds dead complexity. It was opt-in via TURBOPACK_STATS=1 but nothing in the current codebase or tooling depends on it.

How?

Pure deletion — no behavior change for any existing user, as the feature was opt-in via an environment variable that is no longer checked.

Intentionally left untouched:

  • Webpack's own stats.json generation (non-Turbopack path)
  • The Turbopack bundle analyzer / analyze feature
  • route-bundle-stats.json in .next/diagnostics/

The TURBOPACK_STATS feature generated webpack-compatible stats.json files
from Turbopack's output, but it is no longer needed. Remove the entire
feature: the Rust implementation (webpack_stats.rs), all call sites in
app.rs and pages.rs, the project flag, and all TypeScript manifest loading,
merging, and writing code.

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

nextjs-bot commented Mar 17, 2026

Tests Passed

@nextjs-bot
Copy link
Collaborator

Stats from current PR

✅ No significant changes detected

📊 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) 507ms 506ms ▁▁▁▁█
Cold (Ready in log) 462ms 463ms ▁▁▁▁█
Cold (First Request) 1.204s 1.221s ▃▁▃▃▇
Warm (Listen) 509ms 507ms ▁▁▁▁▇
Warm (Ready in log) 470ms 470ms ▁▁▁▁█
Warm (First Request) 342ms 349ms ▁▁▁▁█
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 456ms 456ms ▁▁█▅▁
Cold (Ready in log) 439ms 439ms ▁▃█▂▄
Cold (First Request) 1.878s 1.880s ▁▂█▄▃
Warm (Listen) 456ms 457ms ▁▁█▅▁
Warm (Ready in log) 440ms 439ms ▁▃█▂▄
Warm (First Request) 1.884s 1.901s ▁▂█▄▃

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 4.234s 4.156s ▁▁▁▁█
Cached Build 4.153s 4.141s ▁▁▁▁▇
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.291s 14.303s ▁▁█▅▃
Cached Build 14.479s 14.488s ▁▁█▅▃
node_modules Size 483 MB 483 MB █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
0_9s6iwj6k~rx.js gzip 164 B N/A -
0.aneqbzty2y~.js gzip 155 B N/A -
0~lwfcrlb4v_9.css gzip 115 B 115 B
00h0nz7r436~l.js gzip 13.3 kB N/A -
019g6dx8~tg3j.js gzip 12.9 kB N/A -
02ku7edzc_wf7.js gzip 450 B N/A -
03~yq9q893hmn.js gzip 39.4 kB 39.4 kB
08r-0b6qc7o_s.js gzip 163 B N/A -
092lcb3fqrrf9.js gzip 8.52 kB N/A -
09smvgt.j8lqk.js gzip 158 B N/A -
0aj~xs1l1g8tg.js gzip 8.53 kB N/A -
0al442x9i7k8y.js gzip 157 B N/A -
0c2g.labu7dli.js gzip 65.7 kB N/A -
0e9ag~d9m7paf.js gzip 48.5 kB N/A -
0eg78sqvyqa0_.js gzip 13.7 kB N/A -
0fn2sqti3knsv.js gzip 158 B N/A -
0g9v2.jawbmzg.js gzip 159 B N/A -
0h35gmp9u328z.js gzip 8.54 kB N/A -
0h6fkavebp.iz.js gzip 8.47 kB N/A -
0ino_yf1k3h6k.js gzip 10.4 kB N/A -
0j_v.bmk6mt~t.js gzip 169 B N/A -
0js9pqs~wxj61.js gzip 157 B N/A -
0lpm0ynr-5028.js gzip 7.61 kB N/A -
0moy~uao4dl.m.js gzip 9.19 kB N/A -
0q50rtpusjy90.js gzip 2.28 kB N/A -
0smgy2grrrlka.js gzip 8.58 kB N/A -
0t1dzhdfh0txh.js gzip 215 B 215 B
0vadx5e5wcx6e.js gzip 160 B N/A -
0vt7pofxnk8in.js gzip 10.1 kB N/A -
0ya.4ltkyn.f6.js gzip 157 B N/A -
0zid7o0-vupvp.js gzip 225 B N/A -
0zmcxx2g36e31.js gzip 156 B N/A -
11yo3xfd6b147.js gzip 12.9 kB N/A -
12pz54pfp78.js gzip 70.8 kB N/A -
13.84hqxl_1p7.js gzip 9.76 kB N/A -
13c7ilxu5y4u7.js gzip 156 B N/A -
1554wr-t7p6z-.js gzip 8.55 kB N/A -
15tjst79~qy3_.js gzip 1.46 kB N/A -
15z_v00ne4ud0.js gzip 8.47 kB N/A -
17d_m3p4j9w6r.js gzip 5.62 kB N/A -
17yu~3yiu7d2m.js gzip 8.52 kB N/A -
turbopack-0_..c11g.js gzip 4.16 kB N/A -
turbopack-00..ag6r.js gzip 4.17 kB N/A -
turbopack-01..lvav.js gzip 4.16 kB N/A -
turbopack-06..i1bm.js gzip 4.16 kB N/A -
turbopack-07..rk7h.js gzip 4.16 kB N/A -
turbopack-09..fln6.js gzip 4.16 kB N/A -
turbopack-09..jsr..js gzip 4.16 kB N/A -
turbopack-0a..-0x1.js gzip 4.16 kB N/A -
turbopack-0b..pgqz.js gzip 4.16 kB N/A -
turbopack-0c..l8f-.js gzip 4.16 kB N/A -
turbopack-0g..o_r8.js gzip 4.16 kB N/A -
turbopack-0n..a~rr.js gzip 4.14 kB N/A -
turbopack-0t..hi_v.js gzip 4.16 kB N/A -
turbopack-17..hse~.js gzip 4.16 kB N/A -
03t__~.5lvgeu.js gzip N/A 5.62 kB -
04d6ll75jqx3r.js gzip N/A 9.19 kB -
0583exyh-yhc7.js gzip N/A 9.76 kB -
072lv63r8dcz~.js gzip N/A 8.58 kB -
07k6dcww5s4pu.js gzip N/A 13.7 kB -
09fs3xq.8u0vg.js gzip N/A 157 B -
0ar1~bwpezfgw.js gzip N/A 13.3 kB -
0c99mq1ez2bke.js gzip N/A 450 B -
0cq-cmde_ws6u.js gzip N/A 8.47 kB -
0f64.051rn5u5.js gzip N/A 65.7 kB -
0fwf102w10o9~.js gzip N/A 8.52 kB -
0g7-8-8ioc2s_.js gzip N/A 150 B -
0gtmn.q_j1v5r.js gzip N/A 10.4 kB -
0h5~v-tahitcf.js gzip N/A 10.1 kB -
0lhjxqgqknr7y.js gzip N/A 159 B -
0nclq9z6yzzm5.js gzip N/A 1.46 kB -
0ns80tsa~6zk7.js gzip N/A 157 B -
0nzumcogektg7.js gzip N/A 8.55 kB -
0s.c-cn5eebrx.js gzip N/A 8.47 kB -
0s6.ndj~wg5qp.js gzip N/A 70.8 kB -
0tbah4wl_800n.js gzip N/A 158 B -
0tna7lg6q4zne.js gzip N/A 12.9 kB -
0tp4qw0-lj2vv.js gzip N/A 155 B -
0u223d8mldrfl.js gzip N/A 155 B -
0vlx53zesz789.js gzip N/A 169 B -
0votdfxr5fb5u.js gzip N/A 2.28 kB -
0wriacxymcafc.js gzip N/A 155 B -
0ykl9bs_qj.5..js gzip N/A 8.52 kB -
0zfen0tnxp4gh.js gzip N/A 8.55 kB -
0zjm8qnb56ozp.js gzip N/A 48.4 kB -
0zr11l~bnlq_..js gzip N/A 155 B -
10wkq1h9jzkg..js gzip N/A 225 B -
149ndfh8zfcaz.js gzip N/A 8.53 kB -
15_hff.h10~qk.js gzip N/A 156 B -
15gkb_10omqgr.js gzip N/A 13 kB -
15lw9yxqlxeb8.js gzip N/A 156 B -
168xlbkju2cj0.js gzip N/A 7.6 kB -
17gud40iexr4x.js gzip N/A 161 B -
turbopack-0~..ogsp.js gzip N/A 4.16 kB -
turbopack-0~..._2h.js gzip N/A 4.16 kB -
turbopack-05..v~wt.js gzip N/A 4.16 kB -
turbopack-0i..a.9y.js gzip N/A 4.16 kB -
turbopack-0i..s42d.js gzip N/A 4.16 kB -
turbopack-0q.._sa2.js gzip N/A 4.16 kB -
turbopack-0r..207t.js gzip N/A 4.16 kB -
turbopack-0r..m_os.js gzip N/A 4.17 kB -
turbopack-0u..j-ey.js gzip N/A 4.16 kB -
turbopack-0w..ejig.js gzip N/A 4.16 kB -
turbopack-0w..o.e6.js gzip N/A 4.16 kB -
turbopack-0w..61nb.js gzip N/A 4.16 kB -
turbopack-11..qdil.js gzip N/A 4.14 kB -
turbopack-16..noxz.js gzip N/A 4.16 kB -
Total 463 kB 463 kB ✅ -78 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 711 B 710 B
Total 711 B 710 B ✅ -1 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 426 B 428 B
Total 426 B 428 B ⚠️ +2 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 60.3 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.7 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 256 B 254 B
main-HASH.js gzip 39.2 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.7 kB -
9544-HASH.js gzip N/A 60.9 kB -
Total 234 kB 235 kB ⚠️ +636 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 269 kB 268 kB
Total 394 kB 393 kB ✅ -353 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 619 B 613 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.6 kB 44 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.2 kB 45.6 kB ⚠️ +405 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.26 MB 4.26 MB 🟢 5.02 kB (0%)
index.pack gzip 110 kB 111 kB
index.pack.old gzip 110 kB 110 kB
Total 4.48 MB 4.48 MB ✅ -4.72 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 333 kB 333 kB
app-page-exp..prod.js gzip 181 kB 181 kB
app-page-tur...dev.js gzip 333 kB 333 kB
app-page-tur..prod.js gzip 181 kB 181 kB
app-page-tur...dev.js gzip 329 kB 329 kB
app-page-tur..prod.js gzip 179 kB 179 kB
app-page.run...dev.js gzip 329 kB 329 kB
app-page.run..prod.js gzip 179 kB 179 kB
app-route-ex...dev.js gzip 76 kB 76 kB
app-route-ex..prod.js gzip 51.7 kB 51.7 kB
app-route-tu...dev.js gzip 76 kB 76 kB
app-route-tu..prod.js gzip 51.7 kB 51.7 kB
app-route-tu...dev.js gzip 75.6 kB 75.6 kB
app-route-tu..prod.js gzip 51.5 kB 51.5 kB
app-route.ru...dev.js gzip 75.6 kB 75.6 kB
app-route.ru..prod.js gzip 51.5 kB 51.5 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.4 kB 43.4 kB
pages-api-tu..prod.js gzip 33 kB 33 kB
pages-api.ru...dev.js gzip 43.3 kB 43.3 kB
pages-api.ru..prod.js gzip 33 kB 33 kB
pages-turbo....dev.js gzip 52.7 kB 52.7 kB
pages-turbo...prod.js gzip 38.6 kB 38.6 kB
pages.runtim...dev.js gzip 52.7 kB 52.7 kB
pages.runtim..prod.js gzip 38.6 kB 38.6 kB
server.runti..prod.js gzip 62.4 kB 62.4 kB
Total 2.95 MB 2.95 MB ⚠️ +3 B
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/32267a0bc7f6be96811e03faab0fd5731aab516c/next

@codspeed-hq
Copy link

codspeed-hq bot commented Mar 17, 2026

Merging this PR will degrade performance by 3.99%

❌ 1 regressed benchmark
✅ 16 untouched benchmarks
⏩ 3 skipped benchmarks1

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

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation build[framer-motion-single] 1.8 s 1.9 s -3.99%

Comparing sokra/webpack-stats-in-turbopack (e21e50c) with canary (891adaa)

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.

@sokra sokra requested review from mischnic and wbinnssmith March 17, 2026 18:02
@sokra sokra marked this pull request as ready for review March 17, 2026 19:12
@wbinnssmith wbinnssmith merged commit ee1f9d7 into canary Mar 17, 2026
372 of 410 checks passed
@wbinnssmith wbinnssmith deleted the sokra/webpack-stats-in-turbopack branch March 17, 2026 20:58
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. Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants