Drop-in replacement for Next.js. Your existing app/, pages/, and next.config.js work as-is. Builds up to 4.4× faster, 57% smaller bundles. Deploys to Cloudflare Workers in one command.
No changes to application code. vinext shims all next/* imports automatically — no import rewrites needed.
Full App Router support. Nested layouts, loading states, error boundaries, parallel routes, intercepting routes — all working.
Complete Pages Router support including getStaticProps, getServerSideProps, getStaticPaths, _app, and _document.
Via @vitejs/plugin-rsc. "use client" and "use server" directives work correctly across both dev and production builds.
Form submissions, mutations, redirect() inside actions, re-render after mutation. Full FormData support.
Streaming server rendering for both routers. RSC payload streaming with Suspense boundaries.
Incremental Static Regeneration with stale-while-revalidate. Pluggable CacheHandler. "use cache" directive with cacheLife() and cacheTag().
middleware.ts and proxy.ts (Next.js 16). Full matcher patterns: string, array, regex, :param, :path*.
output: "export" generates static HTML/JSON for all routes. No server required.
33 module shims covering every next/* import — next/link, next/image, next/navigation, next/server, next/headers, next/og, and more.
Run npx vinext check to scan for compatibility issues, then npx vinext init to migrate. Non-destructive — your existing Next.js setup keeps working alongside vinext.
Compared against Next.js 16 using a shared 33-route App Router app. TypeScript type checking and ESLint disabled in both to isolate bundler performance.
Benchmarks run on GitHub CI (2-core Ubuntu) on every merge to main. Take as directional, not definitive. View live results →
vinext deploy auto-generates vite.config.ts, wrangler.jsonc, and worker/index.ts if needed, builds your app, and ships it to Cloudflare Workers.
wrangler login once to authenticate in the browser.CLOUDFLARE_API_TOKEN (Edit Cloudflare Workers template) and CLOUDFLARE_ACCOUNT_ID or add account_id to wrangler.jsonc.Access D1, R2, KV, Durable Objects, Workers AI, and other bindings with the recommended import — no custom worker entry or getPlatformProxy() required:
Not on Cloudflare? Add the Nitro Vite plugin alongside vinext to deploy to Vercel, Netlify, AWS Amplify, Deno Deploy, Node.js, and more.
Instead of pre-rendering your entire site at build time, vinext queries Cloudflare zone analytics and pre-renders only the pages that actually get traffic — then caches them to KV.
For a store with 100,000 product pages, the power law means 90% of traffic goes to 50–200 pages. Those render in seconds. Everything else falls back to on-demand SSR and gets cached via ISR after the first request.
All deployed to Cloudflare Workers. Updated on every push to main.
Vercel's official Next.js App Router Playground running on vinext
Full HN clone with App Router and React Server Components
Nextra documentation site with MDX and App Router on Workers
Minimal App Router application deployed to Cloudflare Workers
Minimal Pages Router application deployed to Cloudflare Workers
REST API routes example
Build performance tracking over time, D1-backed data visualization
App Router deployed via Nitro for multi-platform deployment
Built with App Router and D1, deployed to Cloudflare Workers.
Get started
Three ways to migrate. Pick whichever fits your workflow.
The skill handles compatibility checking, dependency installation, config generation, and dev server startup.
init runs check automatically; use check alone to preview issues first.
MIT License · Experimental · Built by Cloudflare with AI