Creuto is now an OpenAI Select Partner Read More
Vinext 1.0 runs Next.js on Vite and deploys it anywhere. The 99% compatibility claim, the 96.0% in its own docs, and who should actually move.

Cloudflare's Vinext 1.0 runs Next.js on Vite and deploys the build to Cloudflare Workers, a standalone Node server, or through Nitro to Vercel, Netlify, AWS, Deno Deploy and Azure. Cloudflare puts compatibility above 99%. Vinext's own dashboard puts it at 96.0%. Both figures are honest, and the gap between them is the entire decision.
What follows is which of those numbers applies to your application, what Vinext still leaves out, and why we are telling most clients already on Vercel to stay where they are for now.
Vinext replaces the toolchain, not the framework. Your app/ or pages/ routes, your components, your public assets and most next/* imports stay exactly where they are, while Vite 8 takes over development and production builds in place of the Next.js compiler.
App Router, Pages Router, React Server Components, Server Actions, middleware, route handlers, static generation and ISR are all implemented. Cloudflare describes 1.0 as production-ready and says customers already run it for high-traffic, dynamic applications.
Adoption is deliberately reversible, which is the most underrated thing about the release. vinext init is non-destructive: it leaves your existing Next.js scripts in place and adds parallel *:vinext scripts, so next dev and the Vite server run side by side while you compare routes. A vinext check scanner reports unsupported configuration, imports and project patterns before you commit to anything.
Cloudflare's post says test compatibility now surpasses 99%, excluding cache components. The live compatibility dashboard is more precise. Its run of 29 September 2026, against Next.js v16.2.6 across 799 test files, reports three separate figures.
| Figure | Value | What it measures |
|---|---|---|
| Supported pass rate | 99.7% | Tests passing within the surface Vinext claims to support |
| Supported surface coverage | 93.9% | How much of the Next.js test surface that claim covers |
| Overall pass rate | 96.0% | What you get when nothing is excluded |
By router, the same dashboard reports App Router at 99.8% supported and 94.7% overall, Pages Router at 99.7% and 97.9%, and mixed applications at 100% and 96.8%. Pages Router, the older model, is the better supported one.
None of this is a criticism of Cloudflare's figure. It is the supported-surface number and they label it as such. It is a criticism of how that figure will be repeated in your planning meeting, stripped of the qualifier, as though 99% of your application is covered.
The launch post does not say. The documentation does: Vinext targets the stable Next.js 16 API surface, explicitly not undocumented Vercel behaviour or every experimental feature. The compatibility suite runs against Next.js v16.2.6, and installation requires Node.js 22 or newer.
If you are on Next.js 14 or 15, Vinext is not a migration you can evaluate this quarter. It is a framework upgrade first and a toolchain change second, and those are two separate risk budgets that should not be spent in the same sprint. Staying current on the framework matters more anyway: Next.js 16.3.6 fixed a critical next/og RCE, and being a version behind on Next.js is a worse position than being on its default build tooling.
Cache Components and Partial Prerendering remain incomplete, per the differences page, and build-time image and font optimisation do not yet reproduce the full Next.js pipeline. Cloudflare frames the limited use cache support as a prioritisation call: most teams it surveyed were not asking for the directive.
That framing is reasonable today and uncomfortable over two years. Cache Components is where the App Router caching model is heading. Adopting a toolchain that is openly behind on the part of the framework most likely to change is a bet that you will not need it — a fine bet, provided you can name the date you would revisit it.
Two smaller gaps matter in practice. Webpack plugins do not carry over, so any build step that reaches into the Next.js compiler needs a Vite equivalent. And route config values such as runtime and preferredRegion no longer choose where code runs, because placement now belongs to the deployment adapter you picked.
This is the part worth reading twice. Vinext decides at request time whether a render is dynamic, rather than classifying the route at build time. A client-side navigation requests only the RSC payload, and that render does not run client components — so it cannot see a "use client" page reading searchParams, or a useSearchParams() call with no <Suspense> boundary above it.
On an otherwise static route, Vinext can then store that RSC payload, where Next.js would treat the route as dynamic or fail the build outright. The payload does not carry the query string, but server-rendered data on the route can stay stale through client navigations until something revalidates it.
The remedies are documented: export dynamic = "force-dynamic" from the route's layout.tsx, or read searchParams in a server component and pass the values down, and wrap useSearchParams() in a <Suspense> boundary as Next.js already requires. The difficulty is that nothing fails. A green test suite and a page quietly serving a stale view look identical from the outside, which is why a migration audit has to target caching behaviour specifically rather than trusting the build.
| Your situation | Verdict | Why |
|---|---|---|
| On Vercel, Next.js 16, no portability requirement | Stay | You pay a real migration and caching-audit cost for an option you are not exercising |
| Already on Cloudflare Workers, or heading there | Move | Workers is the primary native target, with direct bindings, caching and one-command deploys |
| Portability is contractual — residency, a client's cloud, an exit clause | Evaluate now | The check scanner and parallel scripts let you price the move without committing to it |
| On Next.js 14 or 15 | Not yet | Vinext targets the stable Next.js 16 API surface |
| Dependent on Cache Components or PPR | Not yet | Both are explicitly incomplete |
One caveat on the second row: moving onto Workers brings its own set of production issues worth learning early, and they are not the failures a Node host teaches you. Budget for that learning rather than assuming the adapter hides it.
For most of the web application work we do, the honest position at the end of September 2026 is that portability is an option with a price, not a free upgrade. The teams who should move already know why — an existing Workers footprint, a residency rule, a customer contract that names the host. If your reason is that you might want to leave Vercel one day, buy the cheaper version of that option instead: keep host-specific code behind a thin boundary, know what your deployment retention actually is before you need a rollback, and run the compatibility scanner once a quarter so the cost of leaving is a number you already have.
Yes. Vinext 1.0, released by Cloudflare in September 2026, runs a Next.js application on Vite 8 and implements App Router, Pages Router, React Server Components, Server Actions, middleware, route handlers, static generation and ISR. Vinext targets the stable Next.js 16 API surface and requires Node.js 22 or newer.
Cloudflare describes Vinext 1.0 as production-ready and says customers run it for high-traffic, dynamic applications. Its own compatibility dashboard reports a 99.7% supported pass rate but 96.0% overall against Next.js v16.2.6, so treat the difference between those figures as the scope of your own testing.
Vinext builds a Next.js application with Vite and deploys it to Cloudflare Workers through a native integration, to a standalone Node server using standalone output, or through Nitro's Vite plugin to presets covering Vercel, Netlify, AWS, Deno Deploy and Azure. Workers is the primary native target.
Vinext has only limited support for the use cache directive. Cloudflare says most teams it surveyed were not prioritising the feature, and the Vinext documentation states that Cache Components and Partial Prerendering remain incomplete. If your application depends on either, Vinext is not yet a replacement for the default Next.js toolchain.
Vinext targets the stable Next.js 16 API surface rather than every experimental feature, and its public compatibility suite runs against Next.js v16.2.6. Applications still on Next.js 14 or 15 need a framework upgrade before a toolchain change can even be measured, and installation requires Node.js 22 or newer.
Ready to take the first step towards unlocking opportunities, realizing goals, and embracing innovation? We're here and eager to connect.
11th Floor, O-Hub, Chandaka Industrial Estate, Infocity, Bhubaneswar, Odisha 751024
Level 4, 11 York Street Sydney Startup Hub Sydney, NSW – 2000
30 N. Đinh Nghệ, Phước Mỹ Sơn Trà, Đà Nẵng / Da Nang City – 550000
Level 25, AIDP Business Tower, Dubai Marina, United Arab Emirates
50 Beauchamp Street, Wellington, WGN 5028, New Zealand