Sourced from next's releases.
v15.4.1
[!TIP]
Check out our Next v15.4 Blog Post to learn more about this release.Core Changes
- [next-server] fix params duplicate in query after rewrite: #77939
- [next-server] preserve rsc query for rsc redirects: #77963
- Turbopack: fix a bug where marking a task a completed causes a panic when reading the output: #77922
- Turbopack warning spelling fix: #77999
- Allow URL schemes that include
+,-or.: #77932- [dev-overlay] Remove unused hydration error related code: #77929
- [dev-overlay] Unify error deduplication logic: #78017
- fix: use the match result after matching using the matched path header: #77994
- Upgrade React from
3fbfb9ba-20250409toc44e4a25-20250409: #78031- Move unhandled rejection handling to shared path: #77997
- fix: ensure app router not found works when deployed with pages i18n config: #77905
- Uninstall existing uncaughtException listeners to prevent the process from crashing: #78042
- Experimental bfcache: Restore state w/ : #77992
- Add graceful error fallback for bots requests: #77916
- Upgrade React from
c44e4a25-20250409to1d6c8168-20250411: #78067- [next-server] remove unnecessary query shallow copy: #78003
- [dev-overlay] disable copy button when clipboard is not available: #78101
- [dev-overlay] Stop stashing React error details on error instances: #77975
- [dynamicIO] Model invalid dynamic on empty shells: #77270
- fix: bump
image-size@1.2.1: #78149- Handle graceful fallback for custom error boundaries: #78121
- [dev-overlay] Stop squashing hydration related errors in App Router: #78140
- [test] Enable
strictNullChecksin test utils: #78142- Document Turbopack trace viewer: #78184
- [dev-overlay] Fix error dialog resizing logic: #78144
- Include types in published
eslint-plugin-next: #78109- [dev-overlay] Stop appending wrong Owner Stacks to SSR-only shell errors: #77302
- [dev-overlay] Add dedicated label for recoverable errors: #78186
- [chore] remove unused __NEXT_PRIVATE_RUNTIME_TYPE: #78230
- Preserve slashes when custom URL schemes are used in redirects: #78176
- ignore-list published sources if they have a sourcemap: #78242
- Upgrade React from
1d6c8168-20250411to39cad7af-20250411: #78152- Turbopack: add test case for persistent caching: #77030
- Upgrade React from
39cad7af-20250411tob04254fd-20250415: #78253- fix: alternate bundler support for dropping client pages in AMP: #77601
- [errors] refactor default global-error into a separate file: #78182
- [metadata] render streaming metadata on the top level: #77620
- [metadata] skip head cache in default slot: #78206
- chore: Backport SWC-based RC optimization (#78260)
- fix: bump image-size@1.2.1 (#78164)
@next/mdx: Use stable turbopack config options: #78261- Upgrade React from
b04254fd-20250415to4a36d3ea-20250416: #78297- Add graceful error boundary for bots requests: #78298
- make sure eslint-plugin-next is built when running 'pnpm dev': #78305
... (truncated)
079c06d
v15.4.17ad4674
v15.4.0c1fa79b
v15.4.0-canary.13027a271b
[turbopack] Rename traverse_edges_from_entries_topological
to `traverse_edg...a1339ec
Turbopack: Clean up some of the logic in visit_assign_expr (#81636)d48daff
fix(next/image): bump sharp to 0.34.3 (#81556)de52c00
Turbopack: Fix turbopack-swc-ast-explorer with multi-line inputs (#81635)b5f2517
[segment explorer] fix boundary trigger state (#81623)d04d65b
[segment explorer] fix route url is missing cases (#81622)1758c3c
docs: onInvalidate router.prefetch (#81609)