Fragment scroll enabled by default; experimental TypeScript CLI backend added
v16.3.0-preview.6
3 features20 enhancements15 fixesThis release3 featuresNew capabilities20 enhancementsImprovements to existing features15 fixesBug fixesAI-tallied from the release notes
From the original release noteView original ↗
Core Changes
- Enhance ESLint rule
no-location-assign-relative-destination: #93057
Misc Changes
- Turbopack: order CSS modules by chunk-group co-occurrence in linearize: #95579
- [test] Disable i18n-api-support deploy test for Turbopack with adapters: #95739
- Fork navigation-testing-lock module: #95611
- docs: runtime prefetching update: #95564
- request insights: add agent diagnosis access (4/5): #93977
- Fix Pages router 404 runtime rendering with Adapter: #95264
- Fix duplicate static files in adapter: #95681
- Update font data: #95725
- [test] Disable middleware-rewrites deploy test for Turbopack with adapters: #95680
- request insights: expose dev snapshots to tools and HMR (3/5): #93976
- request insights: derive request history and fetch data (2/5): #93975
- request insights: record local framework spans (1/5): #93974
- Turbopack tests: remove assertions that duplicate webpack results: #95688
- Fix support for
custom-media-queriesin LightningCSS: #95689 - Clarify AI-assisted contribution policy in PR template and AGENTS.md: #95629
- docs: add Building guide: #94999
- docs: add incremental adoption path to Cache Components migration guide: #95325
- [PPF] Sync IO is only allowed in the dynamic stage: #95384
- refactor: remove unnecessary switches from StagedRenderingController: #95383
- Keep the request body a plain Readable after middleware so Readable.toWeb() doesn't hang: #95607
- docs: note default error/not-found UI follows OS color scheme, not app theme: #95673
- test: skip redbox check in "static prefetch - missing suspense around search params": #95670
- test: allow-runtime breaks Link's Server component child detection: #95596
- docs: Immutable static assets: #95348
- [turbopack] Simplify service worker e2e tests: #95672
- [docs] Update "Handling a Custom
Service Worker" in the CRA migration docs: #95434 - [docs] Update progressive web apps documentation for new service worker syntax: #95431
- (TypeScript 7 Support) Add experimental TypeScript CLI backend: #95639
- [turbopack] Compile service workers registered from pages router pages: #95583
- [turbopack] Output service workers to
/_next/static/: #95554 - Reduce the size of OperationVc from 8 bytes to 4: #95614
- Upgrade React from
df4bd1b4-20260708to5123b063-20260708: #95642 - Add attribute rendering benchmark: #95621
- docs(opengraph-image): load assets at module scope to keep route static under Cache Components: #95246
- Convert agent-041's blocking-data check to the agentic LLM judge: #95630
- Upgrade React from
12a4baec-20260707todf4bd1b4-20260708: #95612 - Make the agent-rules block verifiable and self-upgrading: #95467
- Refresh outdated agent-rules blocks on next dev and codemod upgrade: #95470
- [ci] Split up large instant-validation tests: #95627
- [ci] Split up large rsc-build-errors development test: #95624
- [ci] split up large cache-components-errors tests: #95623
- docs: update MCP guides for the thin next-devtools-mcp: #94859
- Normalize and validate
expireandrevalidatevalues to handle Infinity and surface mistakes early: #95493 - [ci] Bump PR stats job timeout to 35 minutes: #95592
- [ci] Pin typescript version in tests: #95619
- fix(create-next-app): render filenames in Geist Mono so the preloaded font is used: #95471
- [turbopack] print Turbopack warnings after SSG: #95430
- fix(create-next-app): pin both axes on Tailwind template logos to silence aspect-ratio warning: #95609
- Turbopack: enable
import with {type: 'text'}by default: #95606 - Consistently gate navigation-testing-lock API on flag: #95582
- test: Fix immutable static asset deployment tests for real: #95600
- Upgrade React from
23def8fd-20260706to12a4baec-20260707: #95581 - Split remaining "client-node"-only modules into .browser variants: #95366
- [turbopack] Don't evict when there is little memory to save: #95213
- align dev and build output: #94916
- [turbopack] Don't persist if there is little work to do: #95137
- fix: log "Partial Prefetching enabled" during next build: #95593
- [PP] Surface URL data during prefetching as an Instant insight with rule page: #95365
- [turbopack] Rename
rscEndpointtorscHmrEndpoint: #95538 - [ci] Split up large create-next-app/templates/matrix test: #95555
- Turbopack: add more context to persistence file errors: #95318
- [ci] Split up large cache-components-dev-warmup test suite: #95553
- Cancel a superseded Server Components HMR refresh's server-side work: #95486
- test: Fix immutable static asset deployment tests: #95550
- [ci] Migrate webpack tests back to arm runners: #95549
- docs: Fix testing-adapters variable name: #95575
- test: Use Turbopack for 'Test new and changed tests when deployed': #95552
- test: Disable service worker deploy tests for now: #95570
- Fix/next info experimental analyze with graph css chunking: #95542
- ci: Bump withgraphite/graphite-ci-action: #95562
- Run instrumentation for Node.js Middleware without Adapter: #95547
- Propagate maxDuration to edge adapter outputs: #95118
- [ci] Skip apt-installed dependencies in playwright install step: #95535
- test: Fix service worker error test: #95548
- Upgrade to swc 72 and rust-react-compiler: #95536
- [skills] Update gh-stack skill: #95541
- docs: updates to Cache Components Caching: #95452
- docs: remove incorrect statement that force-cache is the default for …: #95235
- Turbopack: add all keys to dynamic exports before sealing the object: #93334
- Disable
supportsImmutableAssetswithconfig.output: #95521 - turbo-persistence: skip directory fsync on Windows: #95497
- Abort superseded Server Components HMR requests on the client: #95463
- [ci] Add stats comment with partial stats: #95401
- [fragment-scroll] Enable new scroll handler by default: #95378
- Upgrade React from
3508aee6-20260702to23def8fd-20260706: #95532 - fix(dev-overlay): increase fix card grid row gap to clear floating Copy prompt button: #95526
- evals: fix false-negative regex checks with the agentic LLM judge: #95440
- trace-viewer: Support string span ids in nextjs trace backend: #95515
- [turbopack] Add E2E tests for service workers: #94924
- otel: Use correct parent span for Node.js middleware: #95306
- Fix instrumentation hook awaiting for middleware with adapters: #95357
- [test] Unflake
cache-components-dev-streamingtest suite: #95466 - Also rewrite requires in page templates with Webpack: #95446
- Add
serverComponentsHmrCancellationexperimental flag: #95462 - Avoid unnecessary rendering for validation in dev: #95394
- fix: work around SWC compress bug: #95457
- docs: Update FormEvent to SubmitEvent in form handling example (deprecated in React 19.2.10+): #95453
- Update font data: #95441
- Ignore-list internal frames whose source maps chain to original sources: #95448
- Type resolved
cacheLifeprofiles, dropping runtime asserts: #95428 - Split typeof-window server requires into .browser variants: #95201
- Collect modules with browser variants statically: #95200
- Fix navigation getting reverted when a Server Action is in flight: #95391
- Fix false-positive nested-cache error for a short default profile: #95373
- Skip saving
expire: 0values in the default cache handler in prod: #95363 - [ci] Disable mid-stack PR optimization for native PR stacks: #95427
- Fix history push getting treated like replace when followed by refresh: #95392
- Upgrade React from
ec0fca31-20260701to3508aee6-20260702: #95410 - fix(config): correctly validate cacheHandlers names: #95358
- [ci] Actually migrate Turbopack jobs back to ARM: #95386
- Recover from blocking routes under Instant Navigation lock when deployed: #95227
- Make Instant Navigation Testing full-page loads work when deployed: #95222
- Clear a resurrected instant cookie on unlock so a hard reload recovers: #95398
- fix: handle prototype-colliding segment names in segment explorer trie: #95403
- Prefetch links nearest the top of the document first: #95393
- Fix metadata title dropped on soft navigation with Cache Components: #95315
- Cache short-
expire'use cache'values across dev reloads: #95362 - [cd] Replace the release package with our own GitHub release creation: #95352
- [test] Enable deploy tests for the Instant Navigation Testing API suite: #95236
- Await reused in-flight prefetch entries under Instant Navigation lock: #95301
- [test] Park the blocking-fallback segment on a withheld param: #95300
- Make
instant()resilient to a leaked navigation-testing cookie: #95375 - [ci] Avoid running full CI mid-stack for GH-native stacks, same as we do for Graphite: #95218
- Remove 'silence this warning' from instant validation fix output: #95187
- fix(turbopack): allow
#/prefixed subpath import specifiers: #94461 - [ci] Migrate Turbopack build_and_test jobs back to arm64, leave webpack jobs as x86-64: #95374
- Rename
DYNAMIC_EXPIREandDYNAMIC_STALEto describe what they gate: #95361 - Upgrade React from
92f4fda3-20260629toec0fca31-20260701: #95368 - Re-query deploy-test build logs until id markers appear: #95243
- Fix early OTel proxy tracers in Cache Components prerenders: #95317
- gitignore .next-profiles: #95256
- Fix Navigation Inspector in Safari: #95329
- Rename Copy as prompt to Copy prompt, convert FixOption to FixCard: #95309
- codemod: bump eslint alongside eslint-config-next: #95314
- docs: recommend explicit cacheLife and clarify overriding built-in cache profiles: #95311
- test: Improve immutable static asset tests: #95349
- Instant Navs guide: Highlights fixes and Client Component Page option: #95313
- docs: Activity bfcacheId and :has caveats: #95275
- [ci] Migrate some CI jobs back to x86-64, build both arm and x86-64 native binaries, include both os and architecture in native artifact names: #95341
- [ci] Add optimize-ci, changes, and fetch-test-timings jobs to the needs list for the tests-pass job: #95339
- [PP] Instant validation - error for unguarded static params: #94595
- Revert "[ci] Move some test suites back to x86-64 runners to reduce pressure on our currently-limited pool of arm runners (#95332)": #95336
- refactor: split out validateStaticShell: #95106
- [ci] Move some test suites back to x86-64 runners to reduce pressure on our currently-limited pool of arm runners: #95332
- [PP] Validate Shell prefetches (except gSP): #95151
- Upgrade React from
68631c04-20260626to92f4fda3-20260629: #95282 - codemod: non-interactive upgrade for agents and CI: #95312
- Fix workers on thread to not crash with napi-rs: #95281
- [ci] Add support for auth based preview build registries: #95204
- [ci] Migrate build_and_test and pull_request_stats to use arm64 runners: #94870
- Turbopack: compute code hash per
use cachefunction: #94234 - [test] Retry the
.nextdeletion to fix anENOTEMPTYflake: #95307 - [test] Make
build-output-prerendererror ordering deterministic: #95308 - fix: params/searchParams in client page crashing dev instant validation: #95289
- [test] Unskip more Turbopack NFT unit tests: #95297
- [test] Recover from a leftover build process on test retry in
build(): #95304 - [test] Give webpack server-action-period-hash tests a larger timeout: #95303
- Render a code frame for build errors thrown collecting page data: #95270
- Surface empty
generateStaticParamsas a redbox with a real stack: #95269 - Turbopack: constant evaluate
x in y: #95286 - docs: remove unnecessary async from rewrites/headers/redirects examples: #95148
- Log content-free diagnostics when a postponed state fails to parse: #95216
- log config evaluation time: #94811
- Turbopack: This bool could've been an enum: #95288
- Increase the code frame width used when logging to a file.: #95283
- [ci] update relay-compiler to 21.0.1: #95217
- [turbopack] Discover service workers in the Turbopack analyzer: #94923
- [turbopack] Use experimental chunking heuristics: #95026
- [turbopack] Set
chunking_heuristicson eachChunkGroupInfo: #95021 - [turbopack] Thread
chunkingHeuristicsthrough to chunk groups: #95020 - [turbopack] Add an experimental
chunkingHeuristicstonext.config.js: #95019 - test: fork select tests on partialPrefetching: #95279
- Add docs for
experimental.turbopackRustReactCompiler: #95280 - Fix: Update the URL when a client navigation redirects to a rewritten route: #95207
- Turbopack: replace cssChunking graph
moduleFactorCostwithweightDistribution: #95088 - Upgrade React from
247fbb45-20260622to68631c04-20260626: #95211 - skills(cc-adoption): tighten requires, sequencing, terminology: #95225
- Avoid bundling client-nodemodules used by
unstable_rethrowin client-browser modules: #95196 - fix(turbopack): dedupe filename/exportedName in server-reference-manifest worker entries: #95242
- [ci] Display correct test commands when Cache Component test fail: #95267
- fix: preserve repeated search params in client page segment cache keys: #94863
- Improve typing of
decodeReply: #95263 - Turbopack: make hash_xxh3_hash128 return u128: #95232
- [turbopack] Support undoable modifications for many field types on TaskStorage: #95180
- Record size metrics to our compaction and persistence spans: #94977
- Don't track modifications to transient data stored in tasks: #95133
- fix: preserve middleware rewrite query in Pages API routes: #94905
- Return APP_PAGE instead of PAGES for production Instant Navigation tests: #95184
- [ci] skip Datadog git metadata upload on junit upload: #95210
- next-dev-loop: require agent-browser >= 0.31.1: #95209
- Bump Rust toolchain: #95205
- docs(errors): reorder blocking-prerender-dynamic fixes to Stream, Cache, Block: #95198
- Hard-navigate to app routes shadowed by a pages dynamic route: #95185
- [dev overlay]: restructure Copy-as-prompt body into a step-by-step checklist: #95186
- docs(insights): restructure error pages and link to preview docs: #95193
- docs: fix preview message typo: #95050
- Revert "[turbopack] Use
final_read_hintin top level turbo tasks (#94712)": #95178 - docs: update instant navs guide: #95173
- [next-dev-loop] Fix cookies: #95177
- Restore canary version 16.3.0-canary.67 after v16.3.0-preview.5 preview release
Credits
Huge thanks to @sokra, @eps1lon, @icyJoseph, @feedthejim, @mischnic, @vercel-release-bot, @wbinnssmith, @sampoder, @bgw, @aurorascharff, @lubieowoce, @timneutkens, @lukesandberg, @gaojude, @gaearon, @unstubbable, @Pranav18M, @andrewimm, @chippleh1392, @M4cM4rco, @Partha-Shankar, @acdlite, @sleitor, @devjiwonchoi, @samselikoff, @jimmyhmiller, @thsid, @SukkaW, @TariqulislamTuhin, and @niketchandivade for helping!
Fetched July 13, 2026
