Core Changes
- Use and enforce exhaustive switch statements for work unit store: #81577
- Enable
@typescript-eslint/switch-exhaustiveness-check rule: #81583
- [dynamicIO] use RSC dynamicness to control partial vs complete PPR result: #81627
- [dynamicIO] Do not use
React.unstable_postpone(): #81652
- feat: new detachable panel UI: #81483
- Turbopack: content-hash PageLoaderAsset: #81450
- [segment explorer] fix content overflow styling: #81649
- Improve reliability of owner stacks for async I/O errors: #81501
- fix(router): Prevent redirect loop on root data requests with basePath: #81096
- Ensure custom NextServer config is honored: #81681
- Fix before interactive incorrectly render css: #81146
- perf: memorize exclude function in webpack config: #81525
- Also enforce experimental features when there's no next config file: #81679
- feat(next/image): warn when
images.qualities is undefined: #81690
- feat(build): optimize filterUniqueParamsCombinations to generate sub-combinations: #81321
- Update NextAdapter type and re-export: #81692
- upgrade to path-to-regexp@6.3.0: #80123
- [metadata] replace for initial body icon case: #81688
- [segment explorer] remove dev panel ui flag: #81670
- Simplify running test apps locally with
ppr or dynamicIO enabled: #81668
- [turbopack] Return cached Promise from
__turbopack_load_by_url__ : #81663
- Upgrade React from
97cdd5d3-20250710 to 2f0e7e57-20250715: #81678
- Delete unused
renderToString function: #81707
- Discard prerendered route handler data from FS cache after revalidation: #81611
- Upgrade React from
2f0e7e57-20250715 to d85ec5f5-20250716: #81708
- Ignore pending revalidations during prerendering: #81621
- [turbopack] Clear chunk cache on HMR instead of creating new
next-server VM: #81664
- fix: rootParams should throw in client when fallbackParams are not present: #81711
- perf(build): optimize buildAppStaticPaths performance and add helper function: #81386
- Turbopack: Support string without options for @next/mdx: #81713
- [Segment Cache] Support dynamic head prefetching: #81677
- [sourcemaps] Consistent cursor columns: #81375
- fix: revert client segment route changes for sub shell generation: #81731
- fix: pages router metadata bugs with React 19: #81733
- Improve error handling for
headers/cookies/draftMode in 'use cache': #81716
- [devtool] fix duplicate rendered indicator on server: #81729
- [devtool] enable segment explorer by default: #81737
- [turbopack] Stop exposing globals from Turbopack runtime: #81727
- Remove unnecessary await: #81761
- [chore] bump zod to latest v3: #81757
- feat(turbopack): Log anonymized internal error (panic) information to telemetry: #81272
- fix: revert client segment route changes for sub shell generation: #81740
- bugfix: static resources staleTime should be renewed once refetched: #81771
- [devtool] move font styling to global.css: #81782
- [devtool] copy decoded info of error details: #81735
- fix(build): add sourcePage context for PPR dynamic route lambda creation: #81781
- refactor: rename experimental.dynamicIO to experimental.cacheComponents: #81562
- Properly handle hanging promise rejections during prerendering: #81754
- Upgrade React from
d85ec5f5-20250716 to dffacc7b-20250717: #81767
- Refactor: Get rid of overly generic
getExpectedRequestStore function: #81791
- [devtool] migrate css reset to global.css: #81783
- [dev-tools] Robust shortcut detection: #81756
- [segment explorer] hide for pages router: #81813
- [devtool] fix scrollbar styling: #81814
- fix(ppr): ensure fallback route params trigger dynamic resume: #81812
- [devtools] restart server pending state: #80858
- Turbopack: fix dist dir on Windows: #81758
- fix: remove boundary sentinel from RSC responses: #81857
- [sourcemaps] Try VM for retrieving source maps first: #81869
- [devtools] save user config inside
.next/cache: #81807
- Server: Remove unused code: #81886
- refactor: encapsulate content type within RenderResult: #81861
- refactor: handle null RenderResult responses gracefully: #81895
- Upgrade React from
dffacc7b-20250717 to e9638c33-20250721: #81899
- chore(devtools): sync todos to linear: #81901
- Introduce
'use cache: private': #81816
- chore(deps): update
browserslist: #81851
- Remove web-server from edge-ssr-app: #81389
- Stabilize node middleware support: #81907
- Add
run-turbopack-compiler trace span: #81917
- fix: support calling onClose multiple times in edge-ssr-app: #81911
- fix: logging the correct process for listened port: #81903
- Build: Include rewrites in manifest generation: #81894
- Routing: Clean up some code: #81932
- [sourcemaps] Ensure codeframe when calling Client Functions from Server: #81918
- [segment explorer] missing file suggestion: #81617
- [turbopack] Always print trace labels in headers: #81728
- Revert "[metadata] use https protocol for schema urls": #81934
- Upgrade React from
e9638c33-20250721 to 7513996f-20250722: #81940
- Upgrade to swc v33: #81750
- Remove extra base-server code: #81944
- Turbopack: flatten sourceInfo to avoid objects, reorder args, compress node.js entry: #81545
- Fix dynamicParams false layout case in dev: #81990
- Initial MCP implementation: #81770
- Fix: Unresolved param in x-nextjs-rewritten-query: #81991
- Turbopack: Add an option to use system TLS certificates (fixes #79060, fixes #79059): #81818
- Turbopack: Remove unused proxy option in turbo-tasks-fetch, lightly document HTTP_PROXY/HTTPS_PROXY environment variables: #81905
- Upgrade React from
7513996f-20250722 to edac0dde-20250723: #81984
- [devtools] Cleanup folder structure: #82012
- [devtools] Fix "open in editor" for locations in stackframes: #82013
- [Segment Cache] Fix: Key by rewritten search: #81986
- Upgrade vercel og and remove yoga type patching: #81937
- [perf] cache load config results: #80570
- Turbopack: use prototype for turbopack context for better runtime performance: #81547
- [reactcompiler] Test with latest RC: #82002
- [devtools] Fix various
exhaustive-deps violations: #82010
- [devtools] Apply React Compiler to Next.js DevTools source: #82004
- Upgrade React from
edac0dde-20250723 to 3d14fcf0-20250724: #82020
- Adjusted the warning message to be more descriptive: #82054
- Track fallback params on workUnitStore: #82003
- Fix API stripping JSON incorrectly: #82061
- Upgrade React from
3d14fcf0-20250724 to 19baee81-20250725: #82063
- use FetchStrategy to control prefetching behavior everywhere: #82032
- [Segment Cache] set fetchStrategy on segments from a dynamic request: #82059
- Revert "Upgrade vercel og and remove yoga type patching (#81937)": #82066
- Optimize segment data routes: #82033
- Turbopack: write tasks doesn't need to be session dependent, as effects will restore: #78727
- [sourcemaps] Fully sourcemap stacks on the Server: #81904
- fix(Rspack): use loaderContext.utils.contextify to replace ModuleFilenameHelpers.createFilename: #82104
- next/root-params: #80255
- fix(next/image): fix image-optimizer.ts headers: #82114
- Upgrade React from
19baee81-20250725 to eaee5308-20250728: #82120
- Fix validateRSCRequestHeaders incorrect redirect: #82119
- fix(next/image): improve and simplify detect-content-type: #82118
- [CacheComponents] Use fallback params when validating dynamic routes in dev: #82069
- Extract getDynamicParam to a shared module: #82137
- Fix i18n fallback: false collision: #82136
- [segment explorer] normalize path when running inside monorepo: #82146
- [segment explorer] windows compatibility: #82147
- Upgrade React from
eaee5308-20250728 to 9be531cd-20250729: #82159
- Ensure setAssetPrefix updates config instance: #82160
- Revert "Fix tracing of server actions imported by client components (#78968): #82161
- Remove useMDXComponents argument: #80871
- Fix RSC hash validation for middleware external rewrites: #82176
@next/codemod: update docs url in README: #82135
@next/codemod: Add experimental.turbo to turbopack codemod for Next.js configs: #82134
- refactor: lowercase app router header values: #82169
- Strip internals from
NextRequest types: #82172
- allow root params access in private caches: #82125
- [devtool] bump base-ui to 1.0.0-beta.2: #82206
- Upgrade @vercel og: #82201
- Upgrade React from
9be531cd-20250729 to 9784cb37-20250730: #82207
- Fix: the unexpected clearing of symbolic link directories: #82191
- [next-dev] Set
TURBOPACK env before loading config: #82162
- fix: display multiple lockfile warn if neither
outputFileTracingRoot or turbopack.root option is provided: #82164
- Revert "Initial MCP implementation (#81770)": #82217
- Revert "Upgrade @vercel og (#82201)": #82219
- Fix: Don't bail out of prefetch if head is missing: #82216
- Upgrade React from
9784cb37-20250730 to c260b38d-20250731: #82247
- [Cache Components] Runtime prefetching: #81088
- Parse dynamic params on the client: #82185
- Mark bun builtin modules as external (fixes #75220): #77616
- Turbopack: Compact only at the end for short sessions: #82224
- feat: add fallback root params support for prefetch segment data routes: #82282
- feat: add route context to prerender error messages: #82283
- feat: automatically generate route types: #81396
- [Cache Components] Reset PrerenderStore after generating RSC payload: #82286
- Include
eslint-plugin-react-hooks in React sync: #82294
- [devtools] Remove unnecessary cascading update: #82295
- Turbopack: name the module factory function: #73553
- Update font data: #82292
- fix: next/root-params erroring when rerendering after action: #82326
- Remove params from segment path: #82249
- Upgrade React from
c260b38d-20250731 to be11cb5c-20250804: #82339
- fix: OTel root span should indicate error status on exceptions: #82212
- [Cache Components] Allow span creation while prerendering: #82350
- feat(turbopack): improve compile-time define value to support more data types and expr evaluation: #81042
- [Pages] fix:
_error page's req.url can be overwritten to dynamic param on minimal mode: #82347
- [Pages] fix: use
asPath for query-only navigation with useRouter: #82236
- loader tree: add special segment name to virtual parallel route segments: #82383
- fix: add
?dpl to fonts in /_next/static/media: #82384
- Upgrade React from
be11cb5c-20250804 to 7deda941-20250804: #82373
- [devtools] Make state read-only in types: #82396
- Add experimental clientParamParsing feature flag: #82393
- add unstable_isUnrecognizedActionError: #78933
- [Cache Components] give the "seconds" profile a 30s staleTime: #82332
- Represent "virtual" segments like route groups: #82422
- [Segment Cache]: fix infinite prefetching when staleTime is 0: #82388
- Remove param values from static route tree: #82376
- [Cache Components] Only validate the shell on SSR render: #82381
- fix: static not-found missing in prerender manifest: #82199
- Turbopack: Share entrypoint template logic between Turbopack/webpack: #82385
- Add
path to Image documentation: #82329
- [errors] revamp graceful degrade error boundary: #82474
- Fix: Do not force BLOCKING_STATIC_RENDER for DOM bots: #82427
- Update build-complete for adapter API: #82452
- fix: swc tracing: #82470
- Upgrade React from
7deda941-20250804 to 3958d5d8-20250807: #82447
- Delete abandoned segment parsing code: #82458
- Upgrade React from
3958d5d8-20250807 to f1e70b5e-20250811: #82534
- Upgrade React from
f1e70b5e-20250811 to ac7820a9-20250811: #82543
- fix(next/image): use
image-size pkg as additional format detector: #82538
- fix: add
?dpl to fonts in /_next/static/media part 2: #82488
- Fix: Disambiguate Mediapartners-Google user agent: #82536
- Fix: Allow dynamic rendering when root layout is wrapped in Suspense: #82378
- wrap devtools stories in context providers: #82345
- [devtools] Remove unused
componentStackFrames field: #82395
- [Deprecation Warnings]: add amp deprecation warning: #82551
- fix(next/image): handle empty buffer and experimental flag for
skipMetadata: #82569
- fix: amp deprecation warning should assert on user config: #82572
- fix: Prevent duplicate file entries in modulesCode: #82550
- feat: Turbopack typed links: #81528
- Upgrade React from
ac7820a9-20250811 to 1dc3bdea-20250812: #82575
- [Runtime prefetch] resolve runtime APIs in a separate task: #82475
- Clean up unused code in restart server button: #82409
- chore: Update babel types and do some light cleanup of babel loader: #82486
- [Cache Components] Avoid cache misses when resuming a cached page: #82578
- chore: Remove unused
Map support from next/dynamic transform: #82487
- [Deprecation Warnings]: add unstable_rootParams deprecation warning: #82582
- Turbopack: set
window.next.turbopack instead: #82580
- fix router handling when setting a location response header: #82588
- Fix: Resolve PPR resume mismatch by search params: #82587
- Upgrade React from
1dc3bdea-20250812 to f1222f76-20250812: #82595
- [devtools] Move ShadowRoot into context: #82296
- Remove React 17 logic from Pages Router static generation: #82604
- [Segment Cache] Optimistic prefetch for search params: #82586
- Handle badged console calls when dimming console output: #81889
- run config deprecation checks only on user-provided configuration: #82613
- [devtools] Remove unused code: #82299
- [turbopack] Update Turbopack build warning message : #82591
- [Cache Components] Disallow sync access of cookies & headers at runtime: #82564
- feat: type guard file generation: #81400
- fix: find root dir on fs root: #82590
- fix: use in operator to check dev indicator option when its obj: #82629
- Upgrade React from
f1222f76-20250812 to 379a083b-20250813: #82642
- feat(next/image): warn when images.localPatterns is undefined and src has query: #82627
- Turbopack: add
turbo_tasks::spawn: #82634
- Fix fetch logging after revalidation via server action: #82643
- Fix request type in typed route validator: #82644
- fix: use .js extension for relative imports: #82669
- feat: add RouteContext type for app router route handlers: #82670
- Add additional handling for build-complete: #82671
- fix: Combine the hrtime tuple to get a better seconds representation: #82687
- test: migrate manifest tests to snapshot testing with normalizeManifest utility: #82675
- perf(router): replace LRU cache with optimized doubly-linked list implementation: #82633
- Turbopack: use a source content regexp for the react compiler: #82631
- Upgrade React from
379a083b-20250813 to a96a0f39-20250815: #82691
- fix: memory leak from cloneResponse: #82678
- Turbopack: Fix logic in HMR logging code that could emit a NaN build time: #82389
- fix: use
turbopack.root value for outputFileTracingRoot to have consistent tracing root: #82653
- fix: return plain text 404 for invalid static asset paths: #75111
- Turbopack: show timing event for database compaction: #82369
- chore(test): update sharp api test: #82740
- [type] dynamic skip generating unused types: #82755
Example Changes
- Add Prisma ORM example to Next.js examples: #75290
- chore: Update
with-supabase example to use getClaims(): #81383
- docs: Improve Content Security Policy documentation: #80580
Misc Changes
- Update Rspack development test manifest: #81603
- Allow
beforePageLoad to be async: #81650
- Docs: POC: #81419
- chore(bot): update comment: #81672
- Fix build-native.ts on Windows: #81673
- Update Rspack development test manifest: #81660
- Update Rspack production test manifest: #81661
- Add create release branch workflow: #81687
- fix patch-next by adding missing script: #81430
- Turbopack: Generalize
ImportedBinding effect creation to avoid as much special-casing of SimpleAssignTarget: #81653
- docs: Update redirects i18n documentation for App Router: #81347
- Include
use-cache test suite in the Cache Components tests: #81610
- Improve error message for sync server functions: #81705
- [lint] keep lint-stage use faster linting: #81710
- [test] Fix
app-static deploy test: #81712
- Fix: createRouterAct "reject" config: #81720
- Update Rspack development test manifest: #81702
- Update Rspack production test manifest: #81701
Credits
Huge thanks to @unstubbable, @gnoff, @RobPruzan, @mischnic, @huozhi, @delbaoliveira, @styfle, @ankur-arch, @skt-t1-byungi, @ijjk, @Han5991, @SyMind, @Anas-github-acc, @hf, @bgw, @wyattjoh, @ztanner, @prateekkish, @eps1lon, @lubieowoce, @timneutkens, @acdlite, @lukesandberg, @bgub, @Cy-Tek, @padmaia, @raunofreiberg, @devjiwonchoi, @sokra, @MidnightDesign, @stephenliang, @allenzhou101, @icyJoseph, @gaojude, @remcohaszing, @wesjune, @wbinnssmith, @m1abdullahh, @Sayakie, @startracex, @chadfennell, @dlehmhus, @Jarred-Sumner, @candymask0712, @stepan662, @PuppyOne, @huperniketes, @xusd320, @MichalMoravik, @fireairforce, @kitfoster, @feedthejim, @r34son, @guoci, @JamBalaya56562, @adkile, @snyamathi, and @kachkaev for helping!