Skip to content
Nicolas Chiong· 4 min read

Vite 8 vs Turbopack: a head-to-head for React developers

Next.js 16 made Turbopack the default bundler and Vite 8 went all-in on Rolldown. Five rounds to decide which Rust bundler your React app should be on.

Vite 8 vs Turbopack: a head-to-head for React developers cover

The bundler wars quietly ended this year, and both winners are written in Rust. Next.js 16 made Turbopack the default bundler for new projects, for dev and for production builds, after it passed all 8,302 Next.js integration tests. Then Vite 8 shipped with Rolldown, a single Rust bundler that replaces both esbuild and Rollup in one move. If you write React for a living, one of these two tools now compiles your code whether you picked it or not.

So which one should you actually be on? I went through the announcements, the independent benchmarks, and the counter-benchmarks (yes, there were counter-benchmarks), and scored it round by round.

Round 1: Raw speed

Vercel's headline numbers for Turbopack are 2-5x faster production builds and 5-10x faster Fast Refresh. Note the baseline, though: those comparisons are against webpack, not Vite.

Against Vite the story is much tighter. Independent benchmarks on an 800-component React app clocked Turbopack HMR at roughly 70ms, with leaf-component updates measurably faster than Vite's. Root-component HMR came out roughly equal, a point Evan You made himself with published counter-benchmarks after the initial marketing numbers made the rounds.

Vite 8's Rolldown, meanwhile, builds 10-30x faster than the old Rollup pipeline. That erases the one place Vite used to feel slow, which was production builds on big apps.

Winner: Turbopack, narrowly. The HMR edge on deep component trees is real. But nobody should switch tools over tens of milliseconds.

Evan You's ViteConf 2025 keynote is worth a watch for where all of this is going:

Round 2: The plugin ecosystem

This round is not close. Vite keeps compatibility with the Rollup plugin API, and Rolldown was designed to preserve it. There are hundreds of plugins covering React Fast Refresh, SVG imports, PWA generation, and every niche thing your build will eventually need.

Turbopack supports a subset of webpack loaders, specifically ones that return JavaScript and are configured with plain primitives. It does not support webpack plugins at all. No DefinePlugin, no bundle analyzers, no custom plugins. If your build leans on webpack plugins, Turbopack is not a drop-in replacement, it is a rewrite of your build.

Winner: Vite, by a mile.

Round 3: Portability

Turbopack runs Next.js. That is the whole list. It is not an option for a standalone React SPA, and certainly not for Vue, Svelte, Solid, or Astro.

Vite is the default build tool for nearly everything that is not Next.js: React Router, TanStack Start, Astro, SvelteKit, and the plain react-ts template you reach for when you just want a page on the internet. Here is the entire config for a React SPA on Vite 8:

// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
})

That file has not gotten more complicated in five years, and it now drives a Rust pipeline end to end.

Winner: Vite. Turbopack did not really show up to this round.

Round 4: Production mileage

Vercel has receipts here. Turbopack builds vercel.com, v0.app, and nextjs.org, and Vercel reports over 1.2 billion requests served since that rollout. On Next.js 15.3 and later, more than half of dev sessions and around 20% of production builds were already running Turbopack before it became the default. Passing all 8,302 integration tests was the gate for that promotion, and it is a convincing one.

Rolldown is newer in production terms. VoidZero validated Rolldown-powered Vite against major frameworks and large ecosystem test suites before 8.0 shipped, but a single-bundler architecture this fresh has simply had less time under real traffic.

Winner: Turbopack, on sheer battle-testing.

Round 5: Roadmap

Vite 8 ships integrated devtools, and the bigger play is Vite+, announced at ViteConf 2025: a superset of Vite that folds test running, linting, monorepo support, and build caching into one toolchain built on Rolldown and Oxc.

Turbopack's roadmap runs through Next.js point releases, with persistent caching and steady build-time wins landing in 16.2 and 16.3. Deep, focused, but scoped to one framework by design.

Winner: even. One is going broad, the other is going deep.

The verdict

RoundWinner
Raw speedTurbopack (narrow)
Plugin ecosystemVite
PortabilityVite
Production mileageTurbopack
RoadmapEven

On points, Vite takes it. But the honest verdict is that the choice is made for you by your framework. On Next.js, use Turbopack. It is the default for a reason, and fighting your framework's own bundler buys you nothing. Everywhere else, Vite 8 is the obvious pick, and "everywhere else" is most of the React world.

The interesting part is what stopped mattering. Both tools are Rust, both are fast, and JavaScript-based bundling is effectively finished as a category.

The next fight will not be about who bundles a component tree faster. It will be about caching, monorepos, and CI, where Vite+ and Vercel's build infrastructure are clearly headed for the same territory. That is the head-to-head I expect to be writing about next year.

techreactviteturbopackbuild-tools

References

  1. vite.devVite team
  2. nextjs.orgNext.js team
  3. nextjs.orgNext.js team
  4. voidzero.devVoidZero
  5. kunalganglani.comKunal Ganglani

Related writing

← PreviousA product checklist for agent-ready issues

Let's make something useful.

Start a conversation