Releases: cloudflare/vinext
Releases · cloudflare/vinext
v0.0.33
What's Changed
New Features
- Optimize barrel imports for RSC-incompatible packages to improve performance and compatibility
Bug Fixes
- Skip page RSC ISR caching for dynamic requests to prevent incorrect cache behavior
Performance
- Improved App Router runtime performance through code restructuring and optimization
Internal / Chores
- Refactored App Router virtual entries into typed runtime modules for better maintainability
- Extracted app page and route handler logic into dedicated helper modules
- Updated nitro dependency to address h3 security vulnerability
- Upgraded vitest to v4 with agent reporter enabled
Contributors
v0.0.32
What's Changed
New Features
- Added support for
next/dist/*internal imports with automatic .js shim aliases generation - Full
next/compat/routersupport is now available - The
vinext checkcommand now flags usage of__dirnameand__filenameand suggests ESM path APIs instead - Added
basePathandlocaleproperties toNextURLfor better compatibility
Bug Fixes
- Fixed serving of public directory files after middleware execution in production builds
- Page extensions are now properly used for middleware files
- Fixed
getStaticPropsrevalidate parsing to be scoped only to the exported function - Improved
next/headSSR serializer to validate attribute names Set-Cookieheaders are now properly stripped from fetch cache entries- Next.js config file loading now throws errors when it fails instead of failing silently
- Fixed
pageExtensionshandling in prerender and excluded underscore-prefixed API files - Enhanced
vinext checkscanner to work correctly with shimmed modules
Internal / Chores
- Switched back to
setup-vp@v1for CI - Migrated
ssrLoadModuleto usemoduleRunner.import - Marked
clientReferenceDedupas experimental and added fumadocs example
Contributors
@southpolesteve
@james-elicx
@Boyeep
@hyoban
@NathanDrake2406
v0.0.31
What's Changed
New Features
- Added support for
@vitejs/plugin-reactv6 as a peer dependency - Implemented production prerender pipeline for static site generation
- Added ISR caching support for App Router route handlers
- Implemented prefix-based cache invalidation for
revalidatePathwith layout type - Added
revalidateByPathPrefixsupport to KVCacheHandler - Propagated Next.js config
serverExternalPackagesto build configuration
Bug Fixes
- Fixed Flight HL stylesheet hints rewriting during client-side navigation
- Hardened origin validation and proxy request handling for improved security
- Fixed
next/headerscookie path semantics to align with Next.js behavior - Preserved named capture groups in Next.js config destinations
- Fixed
after()function to usewaitUntilproperly in Cloudflare Workers - Eliminated double middleware execution in hybrid app+pages development mode
- Added missing
ResponseCookies.has()method implementation - Fixed
use serverclosure variable collision with local declarations - Resolved concurrent SSR isolation issues for pages router head/router state
- Fixed parallel slot resolution to use closest ancestor instead of farthest
- Prevented user searchParams from leaking into ISR cache
- Fixed SSR preloading of client reference modules before first render
- Merged top-level optimizeDeps with per-environment Vite configuration
- Added
assets.directoryto generatedwrangler.jsoncconfiguration - Added support for
@voidzero-dev/vite-plus-coreas Vite alias
Internal / Chores
- Migrated build system to Vite Plus
- Moved to pnpm catalogs for dependency management
- Migrated from Wrangler
unstable_devtounstable_startWorkerAPI - Enabled TypeScript type-aware checking and validation
- Updated benchmarks to include
@vitejs/plugin-react
Contributors
@aidantrabs
@gagipro
@hyoban
@james-elicx
@Jbithell
@mhart
@NathanDrake2406
@southpolesteve
v0.0.30
What's Changed
New Features
- Added Pages Router i18n domain routing support
Bug Fixes
- Fixed
next/headkey deduplication to properly handle duplicate meta tags - Fixed image optimizer fallback stream reuse issues
- Fixed metadata routes not serving properly in dynamic segments
- Fixed URL object handling in metadata
resolveUrlfunction - Fixed XML special character escaping in sitemap generation
- Fixed query parameter preservation on middleware rewrites in App Router
- Fixed stale background refetch deduplication in fetch cache
- Fixed
MemoryCacheHandlercreating immediately-stale entries whenrevalidate: 0is used - Fixed
useSelectedLayoutSegmenthook in development mode - Fixed intercept routes (..) to climb visible route segments instead of filesystem directories
- Fixed
onLoadingCompletecallback support in modernnext/imageshim - Fixed parsing of
:param(constraint)syntax in middleware matchers - Fixed router events
hashChangeStart,hashChangeComplete, andbeforeHistoryChangeemission - Fixed route handler
Allowheader and default export behavior to align with Next.js - Fixed missing methods (
set,delete,clear,size,toString) inRequestCookies - Fixed middleware
waitUntilpropagation to Workers execution context - Fixed per-request i18n locale state using
AsyncLocalStorage - Updated import checks to support
next/{mod}.jsfile extensions - Added missing
.jsalias variants fornext/configandnext/amp - Improved metadata scanning to ignore
@slotand_privatedirectories
Performance
- Unified per-request AsyncLocalStorage into shared request context
- Shared ISR deduplication maps across RSC/SSR environments using
Symbol.for()
Internal / Chores
- Upgraded Vitest to v4.1
- Eliminated
as anyandas unknown astype assertions - Added missing
__vinextglobals toglobal.d.tsand removed unsafe casts - Excluded benchmarks/nextjs from pnpm workspace to prevent dependency hoisting
- Updated Vite beta usage to v8
Contributors
@benfavre
@Dayifour
@Divkix
@hyoban
@james-elicx
@JaredStowell
@NathanDrake2406
v0.0.29
What's Changed
New Features
- Added support for Vite 8's
resolve.tsconfigPathsoption - Added Next.js-style route report to
vinext buildoutput, showing discovered routes and their types - Enhanced metadata support with parity for
appLinks,iTunes, and Twitter player/app cards
Bug Fixes
- Fixed
useParams()to be reactive during client-side navigation in App Router - Fixed Pages Router ISR background regeneration incorrectly re-rendering HTML
- Fixed middleware custom responses corrupting binary bodies in development mode
- Fixed App Router route discovery incorrectly including private folders (those with
_prefix) - Fixed
Linkcomponent'sonNavigateURL resolution for relative hrefs - Fixed synthetic slot sub-routes being processed without parent default fallback
- Fixed request headers proxy missing iterator method bindings
- Fixed Pages API body parser handling of invalid JSON and repeated form keys
- Fixed App Router route-group and slot collision detection
- Fixed TPR zone resolution for domains with multi-part TLDs (e.g.,
.co.uk) - Fixed encoded path delimiters being corrupted during route discovery and matching
- Added missing client-side
optimizeDepsentries for better development experience - Added
headersSentguards to prevent duplicate response headers in error handlers - Improved error reporting by properly registering
reportRequestErrorwithctx.waitUntilon Cloudflare Workers - Added Next.js shim JavaScript variants for better compatibility
Performance
- Replaced O(n) linear route matching with radix trie for faster routing
- Added async I/O and caching for
og-inline-fetch-assetstransform - Implemented TTL-based eviction sweep for prefetch cache
- Applied various startup and cache micro-optimizations
Internal / Chores
- Pinned Rollup to patched version addressing CVE-2026-27606
- Added comprehensive tests for
headers()andcookies()in server actions and route handlers - Added runtime documentation warning on external rewrites and Content-Disposition sanitization
Contributors
v0.0.28
What's Changed
New Features
- Added ISR (Incremental Static Regeneration) caching support for App Router in production environments with stale-while-revalidate strategy
- Added Node execution context handling for improved compatibility
Bug Fixes
- Fixed Pages production config headers and redirects handling after middleware rewrites
- Fixed Pages API body parsing and
res.send(Buffer)behavior to align with Next.js - Fixed router.pathname to return route pattern instead of resolved path
- Fixed object-form query array serialization in
next/linkandnext/router - Fixed router.push/replace to properly honor the
asparameter - Fixed Link component to skip locale prefix for absolute and protocol-relative hrefs
- Fixed App Router ISR invalidation to match Next.js behavior for fetch and path tags
- Fixed next/form submitter overrides and query-string GET URLs handling
- Fixed useSearchParams to return ReadonlyURLSearchParams as expected
- Fixed sitemap XML namespaces, video entries, and alternate-language links generation
- Fixed useRouter to honor beforePopState callback when component is mounted
- Fixed route rewrites and redirects to preserve repeated route and query parameters
- Fixed dynamic route discovery to reject conflicting dynamic route siblings
- Fixed Pages Router query arrays and hash preservation in asPath
- Fixed catch-all routes validation to reject non-terminal catch-all routes in both Pages and App routers
- Fixed RSC client references deduplication to prevent module duplication in development
- Fixed next/headers to implement proper readonly semantics and legacy sync compatibility
- Fixed RequestCookie behavior and getAll(name) method implementation
- Fixed middleware object matcher semantics to match Next.js i18n behavior
- Fixed Pages Router production hydration for inlined page modules
Performance
- Added local tag cache for KV operations to reduce round-trips on cache hits
- Improved fetch cache to register stale-while-revalidate refetch with waitUntil() for better performance
- Fixed ISR cache handler to properly await KV put operations and prevent perpetual STALE status
- Added cache key namespacing by buildId for better ISR cache management
Internal / Chores
- Refactored ExecutionContext AsyncLocalStorage to be the single source of truth
- Updated ISR implementation to use getRequestExecutionContext() from ALS in background regeneration
Contributors
v0.0.27
What's Changed
New Features
- Added AsyncLocalStorage support for ExecutionContext (ctx) propagation, enabling better context management across async operations
- Added support for
generateBuildIdin next.config with runtime build ID injection - Added
generateSitemaps()support for creating paginated sitemaps
Bug Fixes
- Fixed handling of single object values for
openGraph.imagesandtwitter.imagesmetadata - Fixed middleware request header deletions to be properly preserved
- Fixed basePath stripping and redirect prefixing to enforce proper segment boundaries
- Fixed background KV operations and ISR regeneration to register with
ctx.waitUntilon Cloudflare Workers - Fixed dynamic GET handlers to avoid shared cache headers
- Fixed dev-mode middleware runner to preserve
x-middleware-request-*headers - Moved optional dependencies to peerDependencies to resolve dependency management issues
Performance
- Improved route matching performance by pre-splitting route patterns and hoisting URL split operations out of match loops
- Added regex caching in middleware matcher for better performance
- Implemented O(1) locale-static redirect indexing
- Added caching for compiled regex patterns in
matchConfigPattern - Optimized header handling by lazy-initializing mutable Headers copy in
headersContextFromRequest
Internal / Chores
- Added oxfmt formatter for code formatting
- Added automated draft GitHub release creation with AI-generated notes