What's Changed
New Features
- Added support for file metadata routes in App Router head output
- Added
unstable_io shim for next/cache to handle asynchronous operations during prerendering
- Added
next/offline shim with useOffline() hook
- Added
next/root-params shim for accessing root-level parameters
- Added
ForbiddenBoundary and UnauthorizedBoundary components for HTTP access fallback recovery
Bug Fixes
- Fixed
next/image component to only fire onError callback once per source per mount
- Fixed App Router to avoid unnecessary reloads when colocated files change during development
- Fixed import paths by replacing relative shim imports with bare specifier
vinext/shims/X
- Fixed stream error handling in ISR cache to prevent incomplete data by re-throwing errors in pumpReader
- Fixed error boundaries in App Router to properly preserve falsy thrown values
- Fixed
unstable_io() to no longer return hanging promises during prerendering
- Fixed support for
enablePrerenderSourceMaps config (defaults to true)
- Fixed support for
experimental.outputHashSalt config and NEXT_HASH_SALT environment variable
- Fixed client-side navigation errors to properly forward invalid dynamic usage errors in development
- Fixed draft mode cookie attributes to align with Next.js behavior
- Fixed optional catch-all route parameters to omit empty params
- Fixed stale server actions to return "action-not-found" response
- Fixed support for
experimental.swcEnvOptions config
- Fixed route-level boundary nesting order to match Next.js behavior
- Fixed metadata route suffix exemption list to align with Next.js
- Fixed cache handler config to support
file:// URLs
- Fixed ISR background revalidation errors to be reported via
onRequestError
- Fixed static metadata URL resolver (
fillStaticMetadataSegment)
- Fixed
next/font/google runtime registrations for better stability
- Fixed cache request leaks in App Router
- Fixed middleware cookie handling and external rewrites alignment
- Fixed layout parameter scoping and error boundary handling
- Fixed cached pages to be properly tagged by route pattern
- Fixed cookie precedence preservation in App Routes
- Fixed SSR render and head collection serialization in Pages Router
- Fixed symlink path resolution in standalone package copy
- Fixed static pages to return 405 status for non-action mutations
- Fixed route handlers to reject middleware control responses
- Fixed server-inserted HTML flushing during SSR streaming
- Fixed invalid app route discovery conflicts to be properly rejected
- Fixed RSC client shims to be excluded from dependency optimization
Performance
- Optimized RSC stream processing by reducing allocations from 3 to 2 tees
Internal / Chores
- Refactored metadata route pattern helpers for better code sharing
- Extracted app page dispatch logic for better organization
- Extracted RSC runtime primitives for improved modularity
- Extracted early request pipeline helpers
- Shared config support list across compatibility checks
- Extracted app prerender endpoints
- Extracted app route handler dispatch
- Extracted server action RSC flow
- Extracted app RSC manifest construction
- Delegated RSC preload hint normalization
- Delegated RSC route matching
Contributors
@NathanDrake2406
@Divkix
@james-elicx