Releases: cloudflare/vinext
Releases · cloudflare/vinext
v0.0.49
What's Changed
Bug Fixes
- Fixed route parameter resolution to correctly prioritize Pages Router route params over query parameters with the same key
- Updated React Server Components initialization to align with React 19.2.6 compatibility requirements
Contributors
v0.0.48
What's Changed
New Features
- Added concurrency control flag for prerendering operations
- Added route graph manifest read model for better routing introspection
- Added artifact compatibility metadata for App Router deployments
- Added navigation trace reason-code system for debugging client-side routing
- Added semantic route graph identifiers for improved routing analysis
- Added visible commit version tracking for browser state management
- Added disabled cache proof model for server-side caching scenarios
- Server startup logging is now displayed during prerendering
Bug Fixes
- Fixed ISR app cache regeneration to be variant-safe, preventing cache inconsistencies
- Fixed SSR external module handling (
ssr.external: true) in App Router configurations - Fixed middleware execution by properly stripping internal headers
- Fixed route refresh and traversal outcomes with proper gating logic
- Fixed
generateStaticParamsvalidation errors to propagate correctly - Fixed server action argument decoding with proper size limits
- Fixed App RSC route-match path canonicalization
- Fixed stale server action commits from being processed
- Fixed Windows deployment issues with wrangler .CMD shim resolution
- Fixed parallel slot route rendering for layout-only configurations
- Fixed dynamic segment name parsing to accept any non-
]characters (Next.js parity) - Fixed metadata merge behavior and Twitter card inheritance to match Next.js
- Fixed nested parallel slot sub-route discovery from layout-only parents
- Fixed
redirect()andnotFound()handling underloading.tsxcomponents - Fixed well-known property protection in thenable params implementation
- Fixed URL parameter decoding using
decodeURIComponent - Fixed invalid HTTP method handling in App route handlers (now returns 400)
- Fixed RSC cache-busting parameter validation
- Fixed
revalidate = falsesupport for App route segment configuration - Fixed non-standard robots directive support via
otherfield - Fixed
generateStaticParamserror handling to catch errors per-source rather than per-loop - Fixed internal Next.js header filtering from inbound requests
Performance
- Improved ISR performance by caching misses from streamed renders
- Optimized client reference preloads by coalescing multiple requests
Internal / Chores
- Updated Next.js dependency version
- Updated React dependency version
- Extensive internal refactoring to dedupe common patterns and utilities across the codebase
- Removed unused deprecated exports from shims
- Enhanced test coverage for App Router navigation lifecycle and root-layout behavior
Contributors
v0.0.47
What's Changed
New Features
- Added React-based runtime error overlay for better development experience
Bug Fixes
- Fixed layout segment configuration not being properly applied to pages in App Router
- Fixed routing issues where inherited slot parameters were incorrectly matched against request URL instead of route path
- Fixed parallel slots not being properly mirrored to descendant sub-pages
- Fixed CLI validation to properly reject missing or malformed
--portand--hostnamevalues - Fixed Google Fonts to be self-hosted in development mode instead of making external requests
- Fixed hydration errors in
next/imagecomponent by adding proper error replay handling - Fixed navigation to properly fall back to hard navigation when render errors tear down the component tree
- Fixed HMR to trigger full page reload when render errors destroy the browser root
- Fixed HMR timing issues by ensuring router state is ready before dispatching RSC updates
- Fixed ISR to properly honor route expiration ceilings
Performance
- Moved private Next.js instrumentation client out of Vite's dependency optimization for faster dev builds
Internal / Chores
- Refactored App RSC request lifecycle into typed handler for better maintainability
- Extracted response finalization logic into dedicated server module
- Extracted request normalization into separate typed server module
- Refactored browser navigation lifecycle controller for better separation of concerns
- Extracted page element building logic into typed helper modules
- Extracted app fallback renderer factory for better code organization
- Moved instrumentation lazy initialization to dedicated server module
- Extracted App Router route graph builder into separate module
- Moved route classification injection behind typed planner interface
- Added code review guidelines for AI agent
- Updated project README
- Added test coverage reporting for integration tests
- Removed obsolete code assertion tests and snapshots
- Fixed various linting issues
Contributors
v0.0.46
What's Changed
New Features
- Added support for file metadata routes in App Router head output
- Added
unstable_ioshim fornext/cacheto handle asynchronous operations during prerendering - Added
next/offlineshim withuseOffline()hook - Added
next/root-paramsshim for accessing root-level parameters - Added
ForbiddenBoundaryandUnauthorizedBoundarycomponents for HTTP access fallback recovery
Bug Fixes
- Fixed
next/imagecomponent to only fireonErrorcallback 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
enablePrerenderSourceMapsconfig (defaults to true) - Fixed support for
experimental.outputHashSaltconfig andNEXT_HASH_SALTenvironment 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.swcEnvOptionsconfig - 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/googleruntime 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
v0.0.45
What's Changed
New Features
- Implemented complete Next.js Google Fonts support with proper metadata and URL pipeline
Bug Fixes
- Fixed hash anchors not being restored during browser history navigation
- Fixed stale cache entries not being served properly for
unstable_cache - Fixed cache entries not being properly scoped by build ID
- Fixed
NextRequest.urlnormalization issues throughnextUrl - Fixed action redirects not working correctly in App Router
- Fixed parallel slot routing issues for layouts before the root
- Fixed ownerless URL commits incorrectly releasing snapshots
- Fixed
revalidatePathnot properly expiring route-scoped fetch cache reads - Fixed dev server crashes from socket errors when clients disconnect unexpectedly
- Fixed middleware headers not being preserved on app boundary responses
- Fixed router accepting dangerous
javascript:URLs in push/replace/prefetch operations - Fixed incorrect layout segment selection for named slots
- Fixed Google Fonts axis range validation and build-time option checking
- Enhanced dev server error output to surface
Error.causefor better debugging
Internal / Chores
- Updated PostCSS from 8.5.3 to 8.5.10
- Fixed Knip configuration issues
- Various CI improvements and dependency updates
Contributors
v0.0.44
What's Changed
Bug Fixes
- Fixed protocol-relative URL handling to properly guard against percent-encoded delimiters
- Fixed
usePathnamehydration snapshot issues in codex - Fixed hard navigation to browser URL when RSC fetch returns non-ok response in app router
- Fixed
isPendingstate to remain true across RSC-level redirects in app router
New Features
- Added support for rendering intercept route layouts inside App Router slots
Internal / Chores
- Added knip for dead code elimination
- Updated bonk to opus 4.7
- Bumped opencode version
Contributors
v0.0.43
What's Changed
Bug Fixes
- Fixed App Router navigation to properly maintain loading states during programmatic navigation with
router.push() - Fixed routing issues with sibling intercepted routes in App Router applications
- Fixed cache headers for route handlers with
revalidate: 0to properly emitno-storeCache-Control directive
Contributors
v0.0.42
What's Changed
New Features
- Static and dynamic layout detection for skip-header optimization to improve performance
- Layout classification system with build-time wiring into RSC entry points
- Per-layout flags now emitted in RSC payload for better rendering control
- Flat keyed payload system for App Router layout persistence
- Enhanced interception context encoding in App Router payload IDs and caches
- Support for tracking previous URL state for intercepted App Router entries
- Self-hosted Google Font assets now emit proper served URLs
Bug Fixes
- Fixed race condition in navigation by tracking pending pathname to resolve
isSameRouteissues during rapid navigation - Preserved intercepted app-router state across server actions
- Fixed console output preservation for caught app errors in development
- Corrected handling of React hooks used without proper directives, now returns appropriate errors
- Fixed import issues with local navigation module in error boundaries
- Resolved stale parallel slots clearing on traversal in
mergeElements - Fixed cached headers/cookies snapshot invalidation in
applyMiddlewareRequestHeaders - Middleware request-header overrides now properly applied before App->Pages fallback and to App Route request objects
- Stripped internal prerender auth header from external rewrites for security
- Parallel slot persistence and cache variants now working correctly
- Fixed
searchParamspassing to layoutgenerateMetadatafunction - Resolved Windows backslash normalization in CSS URL paths
- Fixed CSRF origin wildcard patterns to use segment-based domain matching
- Excluded
@tailwindcss/oxidefrom dependency optimization to prevent build issues - Improved
runWith*return type narrowing when callback is async
Internal / Chores
- Extracted various internal components to separate files for better code organization
- Removed internal re-exports from entry points
- Removed 'use server' collision workaround plugin (no longer needed)
- Classification reasons sidecar now behind
VINEXT_DEBUG_CLASSIFICATIONflag - Centralized request-derived page inputs in app-rsc-entry
- Updated documentation to remove stale information about layout segments
Contributors
@fengmk2
@NathanDrake2406
@lyzno1
@james-elicx
@467469274
@hyoban
@erezrokah
@Divkix
@Shorebirdmgmt
@southpolesteve
v0.0.41
What's Changed
New Features
- Added Content Security Policy (CSP) support for enhanced security
Bug Fixes
- Fixed font call range tracking during plugin transformations
- Fixed RequestCookies validation to prevent invalid Cookie header mutations
- Fixed URL scheme detection to properly handle control characters
- Fixed app router to reject cyclic Flight payloads in server actions, preventing infinite loops
- Fixed middleware header merging to use proper override semantics in app routes
- Fixed parallel slot parameter handling to correctly apply override params to segment maps
- Fixed middleware header merging for HTML responses to use override semantics
- Silenced unnecessary IMPORT_IS_UNDEFINED warnings for proxy.ts files
Internal / Chores
- Updated @clerk/nextjs compatibility status from unsupported to partial
- Rebuilt lockfile for dependency consistency
Contributors
@hyoban
@james-elicx
@Divkix
@Shorebirdmgmt
@southpolesteve
@NathanDrake2406
v0.0.40
What's Changed
New Features
- Add client primitives for layout persistence (Slot, Children, mergeElementsPromise) to improve navigation experience
Bug Fixes
- Fix URL/content mismatch during rapid Pages Router navigation
- Fix NotFoundBoundary positioning by moving it inside Template in per-segment wiring
- Fix template and layout interleaving at each segment level
- Fix URL parameter extraction for intercepting route source routes
- Fix parallel route segment population in LayoutSegmentProvider
- Fix Cache-Control header to emit no-store for pages with revalidate = 0
- Fix redirect() to default to "push" behavior in Server Action context
- Fix server action re-render path by awaiting buildPageElement
- Fix public file serving in production builds
- Fix ResponseCookies to deduplicate Set-Cookie headers and add missing API surface
- Fix middleware header application to intercept route and server action responses
- Fix thenable params and searchParams handling in probePage()
- Fix request context cleanup on stream errors in deferUntilStreamConsumed
- Fix redirect status code validation in NextResponse.redirect()
- Fix multi-valued Set-Cookie header preservation in route handler ISR cache
- Fix standalone dependency resolution issues
- Fix Vite 8 treeshake.preset warning during build
Internal / Chores
- Extract route wiring from generated entry into typed runtime module
- Remove unused rsc-html-stream dependency
- Address security audit findings
- Bump vulnerable dependencies