Vinext 1.0: run Next.js apps anywhere — a practical look
By Arash Latifi
Cloudflare graduated Vinext to 1.0 in September 2026: a Vite-powered Next.js-compatible framework that deploys to Workers, Netlify, AWS Lambda, or plain Node. What it actually supports, how to test compatibility, and when it makes sense to switch.
TL;DR — Vinext 1.0 (Cloudflare, September 2026) is a Next.js-compatible framework built on Vite: it runs App Router and Pages Router apps with over 99% test compatibility on customer-requested features, and deploys to Cloudflare Workers (even the free plan), Netlify, AWS Lambda, or Node. Check yours with
npx vinext check, migrate withnpx vinext init.
Why a Next.js "clone" exists at all
Next.js is deeply coupled to its own runtime. On Vercel it's fantastic; anywhere else — especially edge runtimes like Cloudflare Workers — you historically fought with adapters, missing APIs, and caching behavior that didn't quite match. Vinext started in February 2026 as a week-long AI-driven experiment to replicate Next.js on top of Vite. Seven months later, Cloudflare says customers run it in production for high-traffic, dynamic applications — which is why it just hit 1.0.
The stated goal is portability: take any Next.js app, whether built for Pages or App Router, and deploy it to any web platform — Workers, Netlify, AWS Lambda, or self-hosted Node.
What 1.0 actually supports
From the Cloudflare announcement:
- Both routers, including hybrids — App Router and Pages Router, React Server Components, Server Actions, API routes, route handlers, middleware, and client-side navigation.
- The full page lifecycle — server rendering, build-time pre-rendering, static export, and page-level ISR, with background and on-demand revalidation working across all output modes.
- Caching — a shared set of caching functions across both routers and runtimes, plus support for Cloudflare Workers Cache.
- Test compatibility above 99% — excluding cache components, for the features customers actually asked for. Cloudflare also runs the Next.js end-to-end test suite against Vinext nightly to catch regressions the moment Next.js changes something.
The team's own hardest lesson is worth quoting in spirit: matching the API names is easy (revalidatePath etc.); the hard part is making the behavior identical — the same rendered pages, cache entries, and subsequent requests.
Try it on your codebase in two commands
check scans your app and reports which features you use and whether Vinext supports them. Only commit to a migration after that report is clean for the features you depend on — especially if you use the newest additions like cache components, which are explicitly out of the 99% compatibility figure.
Where it fits (and where it doesn't)
| Situation | Recommendation |
| --- | --- |
| Already on Vercel, happy, using latest features | Stay on Next.js — Vinext adds nothing here |
| Self-hosting or paying for Vercel only for infra reasons | Run npx vinext check; Workers free plan or Lambda may cut costs |
| App depends on brand-new Next.js features (e.g. cache components) | Wait — compatibility explicitly excludes them |
| Pages Router app stuck mid-migration | Interesting fit: Vinext supports both routers, including hybrid apps |
| Edge/Workers requirement (low latency, no cold-start servers) | Strong fit — this is Vinext's home turf |
Caveats before you switch
- Behavioral parity ≠ instant. 99% compatibility means the remaining 1% might be your feature. Test your critical paths (checkout, auth, revalidation) before migrating.
- Caching semantics differ per runtime. The announcement highlights Workers Cache support; verify ISR and on-demand revalidation behave identically on your target platform.
- Version drift is a real risk. When Next.js ships a change, Vinext must chase it — nightly e2e runs mitigate but don't eliminate lag. Pin your Next.js version during migration.
The realistic framing: Vinext is a portability layer, not a Next.js replacement. If your app is portable, you gain freedom to deploy anywhere. If it leans on the newest Next.js-only features, you'll be the compatibility gap.
Q: Is Vinext just for Cloudflare?
No. The 1.0 announcement positions it as deploy-anywhere: Cloudflare Workers (including the free plan), Netlify, AWS Lambda, and standard Node. Cloudflare maintains it, but you're not locked to their platform.
Q: Does it support the Pages Router?
Yes — that was a deliberate 1.0 focus. Cloudflare says many customers are longtime Pages Router users with large, complex apps that are hard to migrate, so Vinext supports both routers and hybrid applications.
Q: How do I know if my app is compatible?
Run npx vinext check on your real codebase. It reports feature-level compatibility. Treat anything in the excluded categories (notably cache components) as unsupported until stated otherwise.