Core Changes
- [dev-overlay] Customize
<select> styling for consistency: #76973
- Upgrade React from
029e8bd6-20250306 to 0ca3deeb-20250311: #76989
- [metadata]: add pinterest meta tag: #76988
- [dev-overlay] ensure stripping overlay bundle in prod build: #76976
- Apply env inlining during generate build mode: #76990
- Turbopack: Implement deploymentId: #76904
- track persistent caching usage: #76996
- [metadata] re-insert icons to head for streamed metadata: #76915
- Upgrade React from
0ca3deeb-20250311 to 6aa8254b-20250312: #77033
- Move static-env imports: #77035
- [dev-overlay] Add
size setting to preferences: #77027
- Add config for only generating static env: #77038
- chore(HMR clients): Clean up and share code between app and pages router: #76960
- Add dev warning for cross-origin and stabilize allowedDevOrigins: #77044
- unify allowed origin detection handling: #77053
- Handle hash change in all files for static env: #77058
- [dev-overlay] highlight errored code line for runtime errors: #77078
- NFT: Ignore all of Webpack: #77081
- Add experimental build mode flag for env: #77089
- (feat) support client-side instrumentation: #76916
- Fix JSDoc comment for
'seconds' cache life profile: #77084
- refactor(HMR clients): Encapsulate some of the turbopack state tracking into a shared TurbopackHmr class: #76994
- Slightly improve error handling for unknown server actions: #77135
- Fix output standalone for alternative bundler: #76971
- Add alternate bundler plugin information to
next info: #77059
- [metadata] remove the default segement check for metadata rendering: #77119
- [dev-overlay] Fix stacking order of highlighted line: #77189
- Upgrade React from
6aa8254b-20250312 to 5398b711-20250314: #77129
- fix(styled-jsx): Pass
useLightningcss option to styled-jsx correctly: #77008
- log the instrumentation-client execution time: #77121
- Turbopack: canary-gate production builds: #77146
- [dev-overlay] remove special handling for missing tag error : #77147
- chore(react-dev-overlay): Remove confusingly underscored variables in
useErrorOverlayReducer: #77205
- Update middleware request header: #77201
- Update default allowed origins list: #77212
- Ensure deploymentId is used for CSS preloads: #77210
- chore(HMR clients): Fix a bunch of typescript errors by including the appropriate webpack type declarations: #77207
- Update cache handler interface: #76687
- Turbopack: don't include AMP optimizer in NFT: #77242
- Server actions should not read stale data after calling
revalidate*: #76885
- [dev-overlay] Blur fader for scrollable container: #77196
- Make
revalidate* work when followed by a redirect in a route handler: #77090
- feat: onNavigate for link: #77209
- fix: pass telemetry plugin rspack tests: #77257
- feat(eslint-plugin): add minimal built-in flat presets: #73873
- [perf] skip loading client manifest for static metadata routes: #77260
- Upgrade React from
5398b711-20250314 to c69a5fc5-20250318: #77249
- [ppr] Handle failed resume data cache entries: #77258
- Bypass
"use cache" caches when Draft Mode is enabled: #77141
- chore(HMR clients): Clean up tryApplyUpdates, reduce differences between app/pages versions: #77219
- Upgrade React from
c69a5fc5-20250318 to db7dfe05-20250319: #77295
- Turbopack: layout segment optimization for Pages: #74815
- [dev-overlay] Make footer sticky without side effects: #77327
- Alternate bundler: show state in app info message: #77259
- Revert "Turbopack: layout segment optimization for Pages": #77339
- [metadata] add Yeti to html limited bots: #77335
- [dev-overlay] Remove unused code from pages: #77325
- [metadata] remove dead code of metadata routes handling: #77336
- Alternate bundler: pass more tests and update to 1.3.0-beta: #77269
- [metadata] fix the metadata route like pages and refactor utils: #77264
- fix: absolute assetPrefix url with path: #77256
- clean up useReducer code re dev indicator: #77354
- test: ensure that router identity stays stable when navigating: #77356
- [dev-overlay] Remove unused fields from hydration error state: #77332
- Turbopack: implement optimized css production chunking: #77284
- only log when instrumentation client takes too long: #77378
- switch development origin verification to be opt-in rather than opt-out: #77395
- remove direct ip/port bypass in dev origin check: #77414
- ensure /__next middleware URLs are included in the origin check: #77416
- exclude images and static media from dev origin check: #77417
- Refactor metadata and viewport preloading: #77400
- [dev-overlay] Remove unused fields from unhandled error action event: #77333
- Turbopack: Add --turbopack for next start: #77442
- Update README: #77464
- Remove unnecessary indirections around dispatch-related methods: #77423
- Lift public router instance to module level : #77426
- directly import param resolver in metadata: #77401
- [metadata] always serve streaming metadata in build: #77437
- directly import search param resolver in metadata: #77402
- Remove forwardRef from Link in App Router: #77471
- Match subrequest handling for edge and node: #77474
- Add deprecation warning for legacyBehavior prop: #77473
- feat: useLinkStatus: #77300
- [dynamicIO] Avoid memory leak warning for hanging promises: #77480
- [dev-overlay] Remove "Unhandled Runtime Error" label: #77484
- Upgrade React from
db7dfe05-20250319 to 740a4f7a-20250325: #77507
- Upgrade React from
740a4f7a-20250325 to 313332d1-20250326: #77527
- Do not call
expireTags/getExpiration unnecessarily: #77570
- fix(jest): stricter regex for 'server-only' in default config: #77588
- Fix: RESTORE_ACTION should not be thenable: #77582
- Use
NEXT_PRIVATE_DEBUG_CACHE env variable for cache handler debug logs: #77585
- fix: make sure body can be read using
nodejs runtime in middleware: #77553
- Update alternate bundler and pass more tests : #77579
- Refactor build scripts and rewrite pack-next in TypeScript: #77536
- fix isCsrfOriginAllowed handling for localhost: #77594
- Turbopack build: fix deterministic build test: #77618
- Turbopack build: Fix urlencoding test: #77622
- [og] fix vercel og build issue on windows: #77650
- [Segment Cache] Add "client-only" option: #77655
- Remove useSyncExternalStore from useIsDevRendering: #77651
- Track navigation timestamp on CacheNode: #77251
- Upgrade @playwright/test and cleanup internal APIs: #77659
- Refactor: move
"use cache" revalidation logic out of incremental cache: #77577
- Remove obsolete update of implicit tags expiration after server action: #77595
- Revert "Remove useSyncExternalStore from useIsDevRendering (#77651)": #77672
- Upgrade React from
313332d1-20250326 to 63779030-20250328: #77643
- Turbopack build: Add marker for when a build used Turbopack: #77674
- feat(images): use experimental
isrFlushToDisk option to prevent writing optimized images to cache: #70645
- doc: instrumentation-client: #77649
- Alternate bundler: use equivalent native plugins for built-in plugins: #77355
- Resolve Viewport separately from Metadata: #77427
- fix(turbopack): Suppress logging for short no-op turbopack HMRs: #76924
- Turbopack build: Fix node-file-trace test: #77641
- Turbopack build: Implement error when using next start without --turbopack: #77678
- legacyBehavior deprecation error should only trigger once: #77687
- Pass only required props to NonIndex: #77685
- Revert "fix: make sure body can be read using
nodejs runtime in middleware": #77690
- [dev-overlay] Harden types when handling hydration mismatches: #77334
- [dev-overlay] Fix ref warning when Pages Router with React 18 is used: #77726
- add support for cssmodules-pure-no-check to allow global CSS features like View Transitions: #77321
- [dev-overlay] Only warn once per invalid sourcemap: #77444
- [dynamicIO] only abort once per prerender: #77747
- Turbopack build: Move Turbopack marker to SERVER_FILES_MANIFEST: #77711
- Reapply "Turbopack: layout segment optimization for Pages" (#77339): #77696
- feat(next/image): support
new URL() for images.remotePatterns: #77692
- [dev-overlay] remove text wrap for terminal: #76953
- Upgrade React from
63779030-20250328 to 040f8286-20250402: #77742
- Optimize server runtime bundles: #77723
- Turbopack Build: Remove cases of process.env.TURBOPACK: #77757
- [dev-overlay] Fix unactionable
useLayoutEffect warning if React 18 is used: #77737
- [dev-tools] Fix flashing of disabled state on indicator: #77727
- Webpack build: Add compiled in x seconds in missing places: #77751
- Ignore an existing HMR refresh hash cookie with
next start: #77714
- Turbopack build: Replace process.env.TURBOPACK usage: #77783
- Client instrumentation: onRouterTransitionStart: #77791
- Turbopack: log telemetry events when
TurbopackInternalErrors occur: #77660
- Rename alternate bundler package name: #77793
- Turbopack: fix
sideEffects matching for non-relative globs: #77693
- Revert "Upgrade @playwright/test and cleanup internal APIs": #77814
- [next-ts-plugin] fix: language service crashes / metadata plugin not working: #77213
- [dev-overlay] always display bundler name on version info: #77739
- [dev-overlay] sync horizontal scrollbar style: #77769
- [dev-overlay] Read
issueCount from non-async errors array: #77821
- [dev-overlay] Fix error dialog resizing logic: #77830
- Turbopack Build: Optimize instrumentation hook generation: #77832
- [next-server] skip setting vary header for basic routes: #77797
- Lazily call
refreshTags and getExpiration: #77779
- Add debug logging to default cache handler and
"use cache" wrapper: #77827
- [ts-next-plugin] fix: properly exit when failed to initialize: #77842
- Alternate bundler: correctly inject react refresh loader: #77713
- [dynamicIO] Fix dev warmup: #77829
- fix: don't reset the prefetch segment data routes on loop: #77845
- Ensure
searchParams access in "use cache" triggers error when caught: #77838
- Revert "[dev-overlay] Fix error dialog resizing logic": #77849
- fix: add cache tags to segment prefetch responses: #77846
- Avoid microtaskiness when lazily fetching from cache handlers: #77843
- [Experiment] : #77866
- [dev-overlay] disable font ligatures: #77865
- Enable process.env.TURBOPACK when process.env.IS_TURBOPACK_TEST is set: #77894
- [ts-next-plugin] fix: use
getSourceFile instead of fileExists to check file existence: #77863
- fix: only set request phase to "action" when actually running an action: #76993
- Alternate bundler: fix react refresh and adjust sourcemap: #77875
- Upgrade React from
040f8286-20250402 to 33661467-20250407: #77899
- refactor: rename isAction to isPossibleServerAction: #77011
- [logging] improve logging of port retry: #77868
- Remove canary-gate and add experimental warning for alternate bundler: #77806
- fix(next/image): bump sharp@0.34.1: #77839
- Turbopack builds: Remove canary-gate and add experimental warning: #77808
- feat: Disable char frequency analysis for mangler: #77887
- Set Turbopack env var for internal modules: #77902
- Don't externalize various new
next/* entrypoints: #77844
- Revert "Fix: RESTORE_ACTION should not be thenable": #77909
- Fix resolve alternate bundler in monorepo: #77913
- Output server.mjs for standalone with type: module: #77944
Example Changes
- with-polyfills example: only link to specific browsers: #77211
- Add example for alternate bundler: #77057
- chore(examples): remove examples that can be v0'd: #77349
- Alternate bundler example: use
canary version: #77754
- Fix Wasm example: #77924
Misc Changes
- [test] consolidate hmr test for react 18.3: #76975
- docs: update API example: #76987
- docs: add Pinterest Rich Pins metadata example: #77025
- fix(CI): Correctly call test/update-bundler-manifest.js script: #77000
- Update bundler development test manifest: #77040
- Update bundler production test manifest: #77043
- Update Turbopack development test manifest: #77041
- chore(github): remove /examples from contribution guidelines, remove examples issue template: #77050
- Turbopack: when reading a non yet existing cell from a in progress tasks, wait for the computation to finish: #77029
- Turbopack: wait before reading cells when the task is scheduled: #77031
- Turbopack: don't call individual() again: #77048
- Turbopack: create module graph strongly consistent: #77051
- Turbopack: Vc stability of ModuleGraph: #77052
- Turbopack: fix corrected time calcuation for trace server: #77080
- Turbopack: fewer manifests for static metadata: #77087
- Update Turbopack development test manifest: #77071
- Update bundler production test manifest: #77069
- Update bundler development test manifest:
Credits
Huge thanks to @raunofreiberg, @huozhi, @ijjk, @timneutkens, @gaojude, @leerob, @mezotv, @bgw, @samcx, @ztanner, @sokra, @mischnic, @wbinnssmith, @kdy1, @unstubbable, @ahabhgk, @ScriptedAlchemy, @SukkaW, @wyattjoh, @eps1lon, @Amirroid, @Netail, @lubieowoce, @gnoff, @jackwilson323, @acdlite, @sbougerel, @kevva, @kasperpeulen, @Cy-Tek, @dvoytenko, @husseinraoouf, @isBatak, @iamkd, @delbaoliveira, @jantimon, @padmaia, @Bernardoow, @styfle, @devjiwonchoi, @JamBalaya56562, and @Marukome0743 for helping!