cloudflare/vinext v0.0.51
cloudflare/vinext
Captured source
source ↗published May 19, 2026seen 5dcaptured 8hhttp 200method plain
v0.0.51
Repository: cloudflare/vinext
Tag: v0.0.51
Published: 2026-05-19T13:22:25Z
Prerelease: no
Release notes:
What's Changed
New Features
- Implemented assetPrefix config with full Next.js semantics (path-prefix and absolute-URL forms, basePath fallback)
- Added App Router support for app/global-not-found.tsx (Next.js 16 parity)
- Added dev server lock file to prevent concurrent dev sessions
- Added manifest-backed interception topology to the App Router
- Planned App Router navigation from RouteManifest topology
- Promoted intercepted route preservation through the navigation planner
- Recorded App Router render observations in the caching layer
- Classified private and dynamic render downgrades in the cache
- Added static layout proof and variant budget guardrails to the cache
- Added support for declared artifact compatibility sets
- Added /compatibility page backed by D1 + deploy-suite ingest
Bug Fixes
- Matched Next dynamic route semantics for metadata routes
- Applied ancestor templates to title defaults in metadata
- Threaded basePath through metadata, manifest, and redirects
- Emitted streamed redirect and not-found meta tags
- Rendered progressive action not-found HTML on the server
- Threw a typed error for unrecognized server actions
- Modeled RSC redirect and traversal lifecycle
- Hard-navigated stale RSC build payloads
- Hydrated initial root in a transition
- Kept refresh transitions pending until completion
- Refreshed after discarded revalidating actions
- Skipped RSC navigation for hash-only history traversal
- Tracked hash-only traversal metadata
- Guarded stale popstate scroll restoration
- Preserved history metadata for external state updates
- Promoted default slot persistence through route state
- Forwarded searchParams correctly in probePage()
- Matched Next.js RSC Content-Type and 404 plain-text body
- Added x-action-forwarded guard to prevent server action forwarding loops
- Surfaced invalid dynamic usage errors via Flight in dev
- Populated useParams/useSearchParams under the Pages Router
- Included _app module assets in served page HTML
- Shared pages useRouter state through context
- Derived shallow dynamic params from the URL
- Kept next/router import free of popstate side effects
- Supported string paths and missing params in getStaticPaths
- Decoded hash scroll targets
- Threw when App Router context is missing during navigation
- Supported prefetch invalidation callbacks
- Gated intercept matching on Next-URL source pattern
- Aligned visible and intent prefetching for next/link
- Normalised next/link href for trailingSlash config
- Preserved native URI scheme navigation (mailto:, tel:, etc.) in next/link
- Preserved native download clicks in next/link
- Preserved unsafe href click handlers in next/link
- Cleared blur placeholder after image load
- Emitted preload hints for priority images
- Preserved fill positioning for remote images
- Preserved inline styles on remote images
- Excluded ipaddr.js from SSR dep optimizer
- Preloaded sources during SSR via ReactDOM.preload
- Honored async={false} for client scripts
- Deduped concurrent same-src script loads
- Treated draftMode() as non-dynamic; mark dynamic only on enable()/disable()
- Added unstable_catchError, unstable_rethrow, unstable_isUnrecognizedActionError shims
- Matched Next.js font result style semantics
- Attached inner "use cache" call site as cause of nested-dynamic error
- Preserved binary inlined Flight chunks
- Preserved exported client reference subpaths
- Allowed JSX in .js client modules inside node_modules
- Pinned cssTarget so esbuild preserves max-width media-query syntax
- Emitted SSR CSS assets referenced by SSR entry
- Passed sassOptions from next.config to the Vite preprocessor
- Recognized next.config.mts and interop CJS imports in the config loader
- Loaded CJS next.config.js under "type": "module"
- Provided CJS globals when loading next.config.ts
- Parsed route exports with the OXC AST in build report
- Exposed AsyncLocalStorage as a global in the edge runtime
- Cleared browser globals before SSR user modules
- Fixed next build failure for the app-router-playground example
Internal / Chores
- Updated @vitejs/plugin-rsc to 0.5.26
- Bumped Node to 24 in CI for native URLPattern support
- Cached WebKit apt archives and skipped browser install on cache hit
- Added test-path filter input to nextjs-deploy CI
- Defaulted deploy-suite CI to all suites and disabled test retries
- Added basic vinext site
- Updated oxc editor settings
- Added next-env.d.ts to .gitignore
- Clarified middleware.ts deprecation warning is non-fatal
- Deduped push/replace logic in next/router shim
- Consolidated edge globals into installEdgeGlobals() helper
- Shared interception matched-url validation in the router
- Extracted shared static-paths normalization in prerender
- Added regression coverage for next.config runtime value shapes
- Added regression tests for issue #1196 (catch-all route params with basePath + rewrites + middleware)
- Sequenced link.js and importActual to fix link-navigation flake
- Extracted CJS→ESM converter to standalone deploy-suite script
- Handled __dirname, __filename, and require.resolve in CJS→ESM converter
- Injected jiti when deploy-suite test apps use TypeScript config files
- Applied tsconfig.compilerOptions.paths when loading next.config.ts in deploy-suite
- Handled missing optional deps in deploy-suite test fixture configs
- Bumped pinned sass below ^1.70.0 for Vite 8 in deploy-suite
- Created .next/trace before build to avoid ENOENT noise on build failure
- Used correct workers.dev URL for compat ingest
Contributors
- @james-elicx
- @NathanDrake2406
- @Divkix
- @GHX5T-SOL
Excerpt shown — open the source for the full document.
Notability
notability 4.0/10Minor release by Cloudflare, low traction.