Skip to content

v15.3.0

Latest
Compare
Choose a tag to compare
@ijjk ijjk released this 09 Apr 20:19
· 88 commits to canary since this release

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 [email protected]: #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: #77068
  • Revert "Update rust toolchain to 2025-03-12": #77103
  • perf(turbopack): Merge nodes with same starting point: #76938
  • refactor(actions): Remove turbopack magic comments: #77063
  • Update Turbopack development test manifest: #77108
  • Turbopack: move must_use to actually have an effect: #77111
  • Turbopack: align chunking with graph entries: #76441
  • Turbopack: ChunkGroup in evaluated_chunk_group: #76593
  • Turbopack: charset=utf-8 in data-url source maps: #77112
  • Update bundler production test manifest: #77107
  • Update bundler development test manifest: #77106
  • Update Turbopack production test manifest: #77109
  • docs(scripts): update Script -> beforeInteractive docs: #77136
  • Add doc for instrumentation client hook: #77134
  • docs(scripts): missing 'soon': #77137
  • doc: diff between instrumentation vs instrumentation-client: #77143
  • Alternate bundler: add index.d.ts types to plugin: #77144
  • Alternate bundler: Add react-refresh as a dependency of plugin: #77142
  • build: Update swc_core to v16.6.0: #77155
  • Allow building node-pty in tests: #77187
  • Don't mark ppr-errors Turbopack dev tests as failed: #76951
  • Bump lightningcss: #77132
  • Update Turbopack production test manifest: #77183
  • Turbopack: fix graph layout segment optimization: #77094
  • Turbopack: split up server actions modules for better treeshaking: #76877
  • Turbopack: conditional parse in apply_module_type: #77191
  • build: Update swc_core to v16.6.2: #77194
  • Turbopack: more tracing: #75351
  • Update bundler development test manifest: #77180
  • Better failure tracking for middleware-custom-matchers-i18n: #76974
  • Update bundler production test manifest: #77179
  • fix(test/e2e/prerender): Remove race condition in test: #77222
  • Update Turbopack production test manifest: #77228
  • Update Turbopack development test manifest: #77227
  • [Turbopack] basic production chunking for CSS: #75049
  • docs: optimizing local dev: #77140
  • Update bundler production test manifest: #77225
  • devlow-bench: wait for complete ready for server startup event: #77217
  • fix(CI): Re-enable retries for bundler integration tests: #77265
  • Turbopack: handle non chunkable modules in module batches: #77282
  • Update Turbopack development test manifest: #77276
  • Update Turbopack production test manifest: #77275
  • Turbopack: avoid single css chunks when there is only a single chunk item: #77283
  • Update bundler development test manifest: #77272
  • Update bundler production test manifest: #77273
  • Turbopack: compute ordered entries in module batches: #77294
  • Update Turbopack production test manifest: #77316
  • Update Turbopack development test manifest: #77317
  • Update bundler production test manifest: #77314
  • fix(turbopack): Call .minify() of lightningcss StyleSheet: #77313
  • fix(CI build_and_deploy): Use a larger fetch-depth for build-native job: #77307
  • chore(turbopack): Fix a few syntactic nits: #77310
  • Update bundler development test manifest: #77315
  • Turbopack: refactor CssEmbed to avoid creating a chunk item: #77303
  • fix: Update swc_core and use rayon instead of chili: #77338
  • Fix chakra link: #77280
  • Update Turbopack production test manifest: #77366
  • Update Turbopack development test manifest: #77365
  • Turbopack: ignore static asset imports for Edge: #77382
  • Update bundler development test manifest: #77364
  • docs: clarify middleware use cases: #77438
  • fix(turbopack-bench): Limit copy_dir concurrency to avoid running out of file descriptors: #77468
  • docs: fix typo: #77483
  • Update swc_core to v16.10.0: #77489
  • fix(turbopack): Use strongly consistent reads for sourcemaps in napi FFI boundary: #77511
  • Update mappings in launch.json to improve debugging in VSCode: #76559
  • chore(ci): Configure codspeed: #76884
  • Update bundler production test manifest: #77602
  • Update bundler development test manifest: #77603
  • Update Turbopack development test manifest: #77605
  • Update Turbopack production test manifest: #77604
  • Turbopack build: Fix symbolic-file-links test: #77615
  • Update pnpm swc-build-native's file path: #77623
  • fix: Use standard PostCSS configuration in create-next-app format for ecosystem compatibility: #77376
  • Turbopack build: Fix basepath test: #77630
  • Turbopack: disable pages dir css test cases: #77380
  • Update bundler development test manifest: #77627
  • Update Turbopack development test manifest: #77628
  • Update bundler production test manifest: #77626
  • refactor(turbo-tasks): Make TraceRawVcs a supertrait of TaskInput: #77397
  • refactor(turbo-tasks): Make TraceRawVcs a supertrait of MagicAny: #77596
  • fix(turbopack): Recognize urls starting with // as external: #77526
  • Update CI build caching docs to include bun and other package manager: #77633
  • fix(turbopack): Fix panic while tree shaking optimization: #77492
  • fix(turbopack): Prevent duplicate in tree shaking: #77491
  • Turbopack: Skip ssr processing when next/dynamic ssr: false: #77636
  • Turbopack Build: CSR bailout test skip check for file path: #77639
  • Turbopack: fix side effects optimization bug: #77640
  • Turbopack: add tracing for fetch calls: #77673
  • [test] Update stale snapshots: #77680
  • Turbopack: fix bug in handling of module batches: #77638
  • pack-next: use default --js-build as option instead of --no-js-build: #77686
  • Turbopack: Allow overriding tsconfig path via next-config: #77563
  • Scripts: migrate unpack-next to TypeScript: #77538
  • chore(turbopack): Make TaskInputs use ResolvedVc: #77700
  • Getting Started Docs: Add Metadata and OG images page: #74077
  • Getting Started Docs: Add Upgrade page: #77717
  • Docs IA 2.0: Rename Examples to Guides: #77722
  • build: Update swc_core to v19.0.0: #77669
  • Add Josh to Turbopack team for created-by label: #77738
  • Turbopack: use better ident for worker chunk group: #77731
  • chore(turbo-tasks): Remove redundant ast-grep lint rule: #77701
  • fix(docs): update error type in notFound function description: #77503
  • Update bundler development test manifest: #77706
  • Update Turbopack production test manifest: #77709
  • Turbopack: refactor resolve_url_reference to avoid chunk_path: #77732
  • Update Turbopack development test manifest: #77708
  • Port "app-document" test to e2e: #77748
  • [ci]: skip build-windows job for docs only change: #77743
  • Update bundler production test manifest: #77707
  • chore(turbo-tasks): Audit all remaining uses of Vc in a struct: #77756
  • docs: instrumentation-client follow up: #77752
  • [test] Get rid of unrelated "Invalid hook call" error from tests using styled-components: #77736
  • Turbopack: keep side-effect-full imports: #76545
  • Docs: Recommend inline use server and update examples: #77770
  • Revert "Docs: Recommend inline use server and update examples": #77771
  • doc: useLinkStatus: #77648
  • Update Turbopack production test manifest: #77767
  • Update bundler development test manifest: #77765
  • [docs] fix lint issue in use link status doc: #77785
  • doc: onNavigate: #77647
  • Update bundler production test manifest: #77764
  • doc: useLinkStatus doc follow-up: #77790
  • Update Turbopack development test manifest: #77766
  • [ci] remove needs build-native for lint job: #77787
  • test(examples): update turbopack manifest: #75092
  • [test] fix bad test fixuture for perf test: #77804
  • [test] fix react 19.1 related tests: #77809
  • doc: onNavigate follow-up: #77805
  • fix(turbopack): Apply hygiene if mangling is disabled: #77815
  • Turbopack: omit empty source map when code starts with a new line: #77734
  • [next-lint] test: remove eslint config snapshot testing: #77818
  • Turbopack: avoid deriving css source map path from generated code path: #77735
  • Turbopack: pass asset to chunk_path to allow to use content hash later: #77772
  • Docs IA 2.0: Add Deep Dive section placeholder: #77724
  • Turbopack: use document.currentScript instead of chunk path literal: #77773
  • Turbopack: don't include client-fs assets in NFT: #77799
  • Turbopack: enable content hashing in production: #77775
  • Turbopack: correctly track await import("path") in static analysis: #77811
  • fix(turbopack-cli): Make turbopack_cli::dev::source a persistent (non-transient) task: #77798
  • [test] temporarily disable flaky test for react 18: #77848
  • Update Turbopack production test manifest: #77872
  • Rename process.env.TURBOPACK to process.env.IS_TURBOPACK_TEST for tests: #77892
  • [test] consolidate missing tag dev test: #77896
  • fix(Turbopack): Intermittent CapacityExceeded Error in Persistent Caching: #77691
  • fix: flaky test detection needs to use new turbopack flag: #77908
  • fix: apply Geist fonts correctly on default cna template: #77237
  • Update bundler development test manifest: #77884
  • Update bundler production test manifest: #77885
  • Update Turbopack development test manifest: #77886
  • Update bundler production test manifest: #77914
  • Update bundler development test manifest: #77915
  • fix(turbopack): Apply import_map option of swc_emotion correctly: #71776
  • Turbopack: handle removed routes: #77890
  • build: Update swc_core to v21.0.1: #77918
  • IA 2.0: Review Getting Started Section: #77921
  • test: attempt to de-flake rsc-basic: #77934
  • docs: revert image 15.3 change until live: #77941
  • Turbopack: remove CSS comments when minifying: #77940

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!