Skip to content

Bump TypeScript to 6.0#91257

Merged
eps1lon merged 6 commits into
canaryfrom
sebbie/ts6-rc-baseline
Apr 14, 2026
Merged

Bump TypeScript to 6.0#91257
eps1lon merged 6 commits into
canaryfrom
sebbie/ts6-rc-baseline

Conversation

@eps1lon
Copy link
Copy Markdown
Member

@eps1lon eps1lon commented Mar 12, 2026

Ignoring all deprecations for now which will be handled in follow-ups.

@nextjs-bot nextjs-bot added create-next-app Related to our CLI tool for quickly starting a new Next.js application. created-by: Next.js team PRs by the Next.js team. tests Turbopack Related to Turbopack with Next.js. type: next labels Mar 12, 2026
Copy link
Copy Markdown
Member Author

eps1lon commented Mar 12, 2026

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Mar 12, 2026

Merging this PR will degrade performance by 3.26%

❌ 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 packages-bundle.js[full] 988.7 ms 1,022 ms -3.26%

Comparing sebbie/ts6-rc-baseline (ee84135) with canary (26b8758)

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.

@eps1lon eps1lon changed the base branch from sebbie/03-12-_test_bump_playwright_to_1.58.2 to graphite-base/91257 March 12, 2026 14:24
@eps1lon eps1lon force-pushed the graphite-base/91257 branch from d643cea to d0cfb0e Compare March 13, 2026 20:13
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 4764e97 to 03f1fd0 Compare March 13, 2026 20:13
@nextjs-bot
Copy link
Copy Markdown
Contributor

nextjs-bot commented Mar 13, 2026

Tests Passed

@nextjs-bot
Copy link
Copy Markdown
Contributor

nextjs-bot commented Mar 13, 2026

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) 456ms 456ms ▁▁██▁
Cold (Ready in log) 444ms 445ms ▅█▅▂▅
Cold (First Request) 1.142s 1.171s █▁▁██
Warm (Listen) 456ms 457ms █▁▁▁█
Warm (Ready in log) 444ms 445ms ▇▄▂▄▇
Warm (First Request) 347ms 347ms █▅▃▅▇
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 456ms 455ms █▁▅▅▁
Cold (Ready in log) 438ms 438ms ▁▆▅▃▄
Cold (First Request) 1.947s 1.942s ▁▄▄▂▂
Warm (Listen) 456ms 456ms ▃▃▃▁█
Warm (Ready in log) 436ms 437ms ▁█▅▃▆
Warm (First Request) 1.940s 1.953s ▁▇▆▅▄

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 3.888s 4.027s ▂▆▆▃▅
Cached Build 3.972s 3.926s ▄▇▅▂▂
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.514s 14.417s ▂▅▅▄▂
Cached Build 14.560s 14.554s ▁▇▅▁▃
node_modules Size 493 MB 493 MB █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
003q3zf-_j90o.js gzip 154 B N/A -
053b9v5j96uu_.js gzip 8.56 kB N/A -
07rxhp_1_g4mu.js gzip 13.1 kB N/A -
096aa2uod0_wa.js gzip 9.82 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0ea8vo2o6kp_s.js gzip 13.3 kB N/A -
0egovw6-5i1e3.js gzip 8.57 kB N/A -
0ek_k55_6bo3v.js gzip 156 B N/A -
0fli3_wppnim5.js gzip 12.9 kB N/A -
0i-rrmz-wd2gx.js gzip 156 B N/A -
0k09jwjeb-tki.js gzip 13.8 kB N/A -
0kb7_ep3r1z0_.js gzip 10.1 kB N/A -
0kmgih16pb2zy.js gzip 9.24 kB N/A -
0wxpyd8r-vipl.js gzip 1.47 kB N/A -
16lhqjoqbznyg.js gzip 220 B 220 B
16vepdkipri3r.js gzip 8.51 kB N/A -
17n96uu6y1pxq.js gzip 8.6 kB N/A -
1cml77k0cjco9.js gzip 168 B N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1ldzw5bsf3-0l.js gzip 158 B N/A -
1rk604e6mevef.js gzip 158 B N/A -
1wj60c-jqsx-n.js gzip 65.5 kB N/A -
1xz7fhgdco-x_.js gzip 8.59 kB N/A -
2__-e_ym8n788.js gzip 450 B N/A -
22o6xd9_ywdu6.js gzip 233 B N/A -
298segop7mz8t.js gzip 155 B N/A -
2k1q_gre6hp0-.js gzip 8.56 kB N/A -
2kvj8yrfznmwx.js gzip 5.69 kB N/A -
2rw6naw2b83yz.js gzip 155 B N/A -
2sgqisp4604si.js gzip 8.51 kB N/A -
2w6v6x0pu6b9t.js gzip 152 B N/A -
3-gysh_p9nr43.js gzip 154 B N/A -
32vddve-rleg-.js gzip 155 B N/A -
342ijzvrpe53h.js gzip 2.29 kB N/A -
3r9j-437x-6se.js gzip 70.8 kB N/A -
3u413wiqvqf_u.js gzip 49.1 kB N/A -
3v9s-fz24f8oo.js gzip 10.4 kB N/A -
3yexkdj8m6t6w.js gzip 156 B N/A -
420pn_b9x-3ir.js gzip 8.62 kB N/A -
44un3--wmqiyh.js gzip 7.61 kB N/A -
45b-gnabw9j10.js gzip 159 B N/A -
turbopack-03..-ma2.js gzip 4.19 kB N/A -
turbopack-13..kpmz.js gzip 4.19 kB N/A -
turbopack-1e..mq-a.js gzip 4.19 kB N/A -
turbopack-1m..v-xx.js gzip 4.19 kB N/A -
turbopack-1p..9plq.js gzip 4.19 kB N/A -
turbopack-2g..vuez.js gzip 4.19 kB N/A -
turbopack-2h..9hvz.js gzip 4.19 kB N/A -
turbopack-2z..x-oe.js gzip 4.19 kB N/A -
turbopack-2z.._2cn.js gzip 4.19 kB N/A -
turbopack-30..5pgu.js gzip 4.19 kB N/A -
turbopack-3c..zka7.js gzip 4.17 kB N/A -
turbopack-3q..w87f.js gzip 4.19 kB N/A -
turbopack-41..k4t0.js gzip 4.19 kB N/A -
turbopack-43..kpg1.js gzip 4.2 kB N/A -
089687r99-5_3.js gzip N/A 70.8 kB -
0arkbdqpxc37i.js gzip N/A 8.6 kB -
0ioow_tmvzxbf.js gzip N/A 160 B -
0tvekitj587fh.js gzip N/A 8.51 kB -
0z83a1om5rvtt.js gzip N/A 7.61 kB -
1-jqyfc89tixo.js gzip N/A 1.46 kB -
14t1kneseb8th.js gzip N/A 2.3 kB -
186o_9v4q6wvo.js gzip N/A 156 B -
192q2suy7rwb_.js gzip N/A 8.56 kB -
1ab2xruymo-oj.js gzip N/A 449 B -
1g64old_av12i.js gzip N/A 162 B -
1v0q1fw7v3roh.js gzip N/A 49.1 kB -
1wzrm0xjjbzn5.js gzip N/A 10.1 kB -
1xz2r9l20e-3a.js gzip N/A 154 B -
1z-ehckjr27om.js gzip N/A 156 B -
2368ic2ozqvf4.js gzip N/A 152 B -
25a1yz7zua29z.js gzip N/A 13.8 kB -
2f2bp_kexa37v.js gzip N/A 13.3 kB -
2i5v1taq97gql.js gzip N/A 8.59 kB -
2k_lzeilnqipg.js gzip N/A 158 B -
2k_ngfk54igk6.js gzip N/A 153 B -
2n3vh0w0tnb_2.js gzip N/A 8.52 kB -
2u_rpxq3tzytl.js gzip N/A 233 B -
2wfbykz1avdns.js gzip N/A 8.56 kB -
2xzzk6an46wqn.js gzip N/A 156 B -
32sifemopndov.js gzip N/A 10.4 kB -
368lim5wq0o0r.js gzip N/A 12.9 kB -
37eq851j9q6mo.js gzip N/A 154 B -
3de283pazbu99.js gzip N/A 9.81 kB -
3do8sy38i_qxd.js gzip N/A 158 B -
3drqjohogojbw.js gzip N/A 5.69 kB -
3dy48ip094dzs.js gzip N/A 65.5 kB -
3g8l1m2-o-ewi.js gzip N/A 13.1 kB -
3gp2o_v7jcw6s.js gzip N/A 8.57 kB -
3hqx7mbe-0y88.js gzip N/A 156 B -
3q6ng103a6hrv.js gzip N/A 167 B -
3qu7g1q2l_x2n.js gzip N/A 9.24 kB -
43j6fjudq0a3_.js gzip N/A 8.62 kB -
turbopack-02..3z3o.js gzip N/A 4.19 kB -
turbopack-06..dwwx.js gzip N/A 4.17 kB -
turbopack-0a..ouyp.js gzip N/A 4.19 kB -
turbopack-0g..wffw.js gzip N/A 4.19 kB -
turbopack-0j..oeej.js gzip N/A 4.19 kB -
turbopack-0l..0uik.js gzip N/A 4.2 kB -
turbopack-1g..agy-.js gzip N/A 4.19 kB -
turbopack-1n.._k1i.js gzip N/A 4.19 kB -
turbopack-1s..731r.js gzip N/A 4.19 kB -
turbopack-26..d_-r.js gzip N/A 4.19 kB -
turbopack-2u..rxmd.js gzip N/A 4.19 kB -
turbopack-3h..f3i2.js gzip N/A 4.19 kB -
turbopack-3m..ykcb.js gzip N/A 4.19 kB -
turbopack-44..-s4x.js gzip N/A 4.19 kB -
Total 465 kB 465 kB ⚠️ +55 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 716 B 721 B
Total 716 B 721 B ⚠️ +5 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 435 B 434 B
Total 435 B 434 B ✅ -1 B

📦 Webpack

Client

Main Bundles
Canary PR Change
2637-HASH.js gzip 4.63 kB N/A -
7724.HASH.js gzip 169 B N/A -
8274-HASH.js gzip 61.3 kB N/A -
8817-HASH.js gzip 5.59 kB N/A -
c3500254-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 255 B
main-HASH.js gzip 39.4 kB 39.4 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
5887-HASH.js gzip N/A 5.61 kB -
6522-HASH.js gzip N/A 60.7 kB -
6779-HASH.js gzip N/A 4.63 kB -
8854.HASH.js gzip N/A 169 B -
eab920f9-HASH.js gzip N/A 62.8 kB -
Total 235 kB 235 kB ✅ -620 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 193 B 193 B
_error-HASH.js gzip 182 B 182 B
css-HASH.js gzip 333 B 334 B
dynamic-HASH.js gzip 1.81 kB 1.8 kB
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 353 B 349 B 🟢 4 B (-1%)
hooks-HASH.js gzip 384 B 382 B
image-HASH.js gzip 581 B 581 B
index-HASH.js gzip 260 B 259 B
link-HASH.js gzip 2.51 kB 2.51 kB
routerDirect..HASH.js gzip 316 B 318 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 313 B 314 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.98 kB 7.97 kB ✅ -10 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 126 kB 126 kB
page.js gzip 273 kB 272 kB
Total 398 kB 398 kB ✅ -352 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 619 B 616 B
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 43.9 kB 44.2 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.5 kB 45.8 kB ⚠️ +258 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 721 B 720 B
Total 721 B 720 B ✅ -1 B
Build Cache
Canary PR Change
0.pack gzip 4.37 MB 4.37 MB
index.pack gzip 115 kB 113 kB 🟢 2.11 kB (-2%)
index.pack.old gzip 113 kB 115 kB 🔴 +1.76 kB (+2%)
Total 4.6 MB 4.6 MB ✅ -3.43 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 346 kB 346 kB
app-page-exp..prod.js gzip 192 kB 192 kB
app-page-tur...dev.js gzip 346 kB 346 kB
app-page-tur..prod.js gzip 191 kB 191 kB
app-page-tur...dev.js gzip 342 kB 342 kB
app-page-tur..prod.js gzip 189 kB 189 kB
app-page.run...dev.js gzip 343 kB 343 kB
app-page.run..prod.js gzip 190 kB 190 kB
app-route-ex...dev.js gzip 77 kB 77 kB
app-route-ex..prod.js gzip 52.5 kB 52.5 kB
app-route-tu...dev.js gzip 77.1 kB 77.1 kB
app-route-tu..prod.js gzip 52.5 kB 52.5 kB
app-route-tu...dev.js gzip 76.6 kB 76.6 kB
app-route-tu..prod.js gzip 52.3 kB 52.3 kB
app-route.ru...dev.js gzip 76.6 kB 76.6 kB
app-route.ru..prod.js gzip 52.2 kB 52.2 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.9 kB 43.9 kB
pages-api-tu..prod.js gzip 33.5 kB 33.5 kB
pages-api.ru...dev.js gzip 43.9 kB 43.9 kB
pages-api.ru..prod.js gzip 33.5 kB 33.5 kB
pages-turbo....dev.js gzip 53.3 kB 53.3 kB
pages-turbo...prod.js gzip 39.1 kB 39.1 kB
pages.runtim...dev.js gzip 53.3 kB 53.3 kB
pages.runtim..prod.js gzip 39.1 kB 39.1 kB
server.runti..prod.js gzip 62.8 kB 62.8 kB
Total 3.06 MB 3.06 MB ⚠️ +1 B
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/ee84135b444db88622624552dcfbca42370dca92/next

@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 03f1fd0 to 61f4c86 Compare March 23, 2026 17:23
@nextjs-bot nextjs-bot added Documentation Related to Next.js' official documentation. Font (next/font) Related to Next.js Font Optimization. labels Mar 23, 2026
@eps1lon eps1lon changed the base branch from graphite-base/91257 to canary March 23, 2026 17:30
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 61f4c86 to ca17fff Compare March 23, 2026 17:31
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch 2 times, most recently from ded77df to 6d884a6 Compare April 7, 2026 13:06
@eps1lon eps1lon changed the base branch from canary to graphite-base/91257 April 7, 2026 13:41
@eps1lon eps1lon force-pushed the graphite-base/91257 branch from 98330e3 to b2389d1 Compare April 7, 2026 13:41
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 6d884a6 to 1f2f200 Compare April 7, 2026 13:41
@eps1lon eps1lon added the CI Bypass Graphite Optimization Ignore Graphite CI optimizations, run the full CI suite. https://graphite.dev/docs/stacking-and-ci label Apr 12, 2026
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from adfdf40 to 53a0c3f Compare April 12, 2026 09:31
@eps1lon eps1lon force-pushed the sebbie/04-07-_test_run_alias_suites_with_and_without_baseurl_in_tsconfig.json_ branch 2 times, most recently from d8462d7 to 3a648f4 Compare April 12, 2026 10:50
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 53a0c3f to d669c5a Compare April 12, 2026 11:32
@mischnic mischnic changed the base branch from sebbie/04-07-_test_run_alias_suites_with_and_without_baseurl_in_tsconfig.json_ to graphite-base/91257 April 13, 2026 08:52
@mischnic mischnic force-pushed the graphite-base/91257 branch from 3a648f4 to d6000df Compare April 13, 2026 08:52
@mischnic mischnic force-pushed the sebbie/ts6-rc-baseline branch from d669c5a to 98a9a07 Compare April 13, 2026 08:52
@graphite-app graphite-app Bot changed the base branch from graphite-base/91257 to canary April 13, 2026 08:53
@mischnic mischnic force-pushed the sebbie/ts6-rc-baseline branch from 98a9a07 to 43fdf8d Compare April 13, 2026 08:53
@eps1lon eps1lon force-pushed the sebbie/ts6-rc-baseline branch from 43fdf8d to ee84135 Compare April 14, 2026 06:08
@eps1lon eps1lon marked this pull request as ready for review April 14, 2026 09:16
@eps1lon eps1lon requested a review from mischnic April 14, 2026 09:17
@eps1lon eps1lon merged commit d141874 into canary Apr 14, 2026
335 of 340 checks passed
@eps1lon eps1lon deleted the sebbie/ts6-rc-baseline branch April 14, 2026 10:22
lukesandberg added a commit that referenced this pull request Apr 21, 2026
### What?

Adopt pnpm [catalogs](https://pnpm.io/catalogs) for shared hoisted devDependencies: `typescript`, `jest`, `eslint`, and `prettier`. Each is pinned once in `pnpm-workspace.yaml` and referenced as `"<name>": "catalog:"` by every consumer.

Also adds the missing `dom.iterable` lib to `@next/routing`'s tsconfig, required by `URLSearchParams.entries()` in TypeScript 6.

### Why?

Several packages invoke these binaries in their build, test, or lint scripts but do not declare them in their own `devDependencies` — they rely on the hoisted root install.

This breaks Turborepo's cache invalidation: without a declared dep, a package has no lockfile edge to the tool, so bumping its version (e.g. #91257's TypeScript 5 → 6 upgrade) does not invalidate that package's task hash. `@next/routing`'s `types` task has been a remote-cache hit on canary since the TS 6 bump, even though it now fails locally on a cold cache — CI is replaying a stale pre-bump success.

The same latent hazard exists for `jest` (`@next/codemod`), `eslint` (`@next/bundle-analyzer-ui`), and `prettier` (`create-next-app`).

### How?

- `pnpm-workspace.yaml` defines `catalog:` entries for each tool.
- Consumer packages declare `"<name>": "catalog:"`. pnpm still hoists one copy, but each consumer now has a real lockfile edge to the resolved version.
- Root `package.json` migrates each pin to `"catalog:"` so the workspace file is the single source of truth.

Turborepo needs no changes — its existing per-package hashing picks up lockfile edge changes automatically. Future catalog bumps will invalidate every consumer's cache.

`@types/node` is a deliberate omission from this round: several packages intentionally pin different majors (`^22`, `^20`, `20.14.2`), so migrating it needs per-package intent review rather than bulk conversion.

<!-- NEXT_JS_LLM_PR -->
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Apr 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

CI Bypass Graphite Optimization Ignore Graphite CI optimizations, run the full CI suite. https://graphite.dev/docs/stacking-and-ci create-next-app Related to our CLI tool for quickly starting a new Next.js application. created-by: Next.js team PRs by the Next.js team. Documentation Related to Next.js' official documentation. Font (next/font) Related to Next.js Font Optimization. locked tests Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants