Skip to content

Releases: cloudflare/vinext

v0.0.33

21 Mar 17:24
4241f5d

Choose a tag to compare

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

@southpolesteve
@gentritbiba
@james-elicx

v0.0.32

20 Mar 10:27
95905ec

Choose a tag to compare

What's Changed

New Features

  • Added support for next/dist/* internal imports with automatic .js shim aliases generation
  • Full next/compat/router support is now available
  • The vinext check command now flags usage of __dirname and __filename and suggests ESM path APIs instead
  • Added basePath and locale properties to NextURL for 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 getStaticProps revalidate parsing to be scoped only to the exported function
  • Improved next/head SSR serializer to validate attribute names
  • Set-Cookie headers are now properly stripped from fetch cache entries
  • Next.js config file loading now throws errors when it fails instead of failing silently
  • Fixed pageExtensions handling in prerender and excluded underscore-prefixed API files
  • Enhanced vinext check scanner to work correctly with shimmed modules

Internal / Chores

  • Switched back to setup-vp@v1 for CI
  • Migrated ssrLoadModule to use moduleRunner.import
  • Marked clientReferenceDedup as experimental and added fumadocs example

Contributors

@southpolesteve
@james-elicx
@Boyeep
@hyoban
@NathanDrake2406

v0.0.31

17 Mar 13:41
a6d6688

Choose a tag to compare

What's Changed

New Features

  • Added support for @vitejs/plugin-react v6 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 revalidatePath with layout type
  • Added revalidateByPathPrefix support to KVCacheHandler
  • Propagated Next.js config serverExternalPackages to 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/headers cookie path semantics to align with Next.js behavior
  • Preserved named capture groups in Next.js config destinations
  • Fixed after() function to use waitUntil properly in Cloudflare Workers
  • Eliminated double middleware execution in hybrid app+pages development mode
  • Added missing ResponseCookies.has() method implementation
  • Fixed use server closure 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.directory to generated wrangler.jsonc configuration
  • Added support for @voidzero-dev/vite-plus-core as Vite alias

Internal / Chores

  • Migrated build system to Vite Plus
  • Moved to pnpm catalogs for dependency management
  • Migrated from Wrangler unstable_dev to unstable_startWorker API
  • 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

13 Mar 12:28
81d0cf1

Choose a tag to compare

What's Changed

New Features

  • Added Pages Router i18n domain routing support

Bug Fixes

  • Fixed next/head key 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 resolveUrl function
  • 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 MemoryCacheHandler creating immediately-stale entries when revalidate: 0 is used
  • Fixed useSelectedLayoutSegment hook in development mode
  • Fixed intercept routes (..) to climb visible route segments instead of filesystem directories
  • Fixed onLoadingComplete callback support in modern next/image shim
  • Fixed parsing of :param(constraint) syntax in middleware matchers
  • Fixed router events hashChangeStart, hashChangeComplete, and beforeHistoryChange emission
  • Fixed route handler Allow header and default export behavior to align with Next.js
  • Fixed missing methods (set, delete, clear, size, toString) in RequestCookies
  • Fixed middleware waitUntil propagation to Workers execution context
  • Fixed per-request i18n locale state using AsyncLocalStorage
  • Updated import checks to support next/{mod}.js file extensions
  • Added missing .js alias variants for next/config and next/amp
  • Improved metadata scanning to ignore @slot and _private directories

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 any and as unknown as type assertions
  • Added missing __vinext globals to global.d.ts and 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

12 Mar 09:37
5909e00

Choose a tag to compare

What's Changed

New Features

  • Added support for Vite 8's resolve.tsconfigPaths option
  • Added Next.js-style route report to vinext build output, 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 Link component's onNavigate URL 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 optimizeDeps entries for better development experience
  • Added headersSent guards to prevent duplicate response headers in error handlers
  • Improved error reporting by properly registering reportRequestError with ctx.waitUntil on 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-assets transform
  • 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() and cookies() in server actions and route handlers
  • Added runtime documentation warning on external rewrites and Content-Disposition sanitization

Contributors

@hyoban
@NathanDrake2406
@JaredStowell
@james-elicx
@Divkix

v0.0.28

11 Mar 11:52
16a14c7

Choose a tag to compare

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/link and next/router
  • Fixed router.push/replace to properly honor the as parameter
  • 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

@JaredStowell
@NathanDrake2406
@Divkix
@james-elicx

v0.0.27

10 Mar 16:05
36f1775

Choose a tag to compare

What's Changed

New Features

  • Added AsyncLocalStorage support for ExecutionContext (ctx) propagation, enabling better context management across async operations
  • Added support for generateBuildId in next.config with runtime build ID injection
  • Added generateSitemaps() support for creating paginated sitemaps

Bug Fixes

  • Fixed handling of single object values for openGraph.images and twitter.images metadata
  • 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.waitUntil on 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

Contributors