Skip to content
chornous.dev

Type two or more letters. Esc closes.

Index of sheets
Theme

Sheet 03 · Writing

All notes

Vite 8 runs on one bundler now: what the build numbers say

Vite 8 replaced the esbuild-plus-Rollup pair with Rolldown, a single Rust bundler, and kept most plugins working. Build times from Linear, Ramp, Beehiiv and Mercedes-Benz.io, and a two-step migration path.

Pl. 80 · pipeline drawing generated from the slug “vite-8-rolldown-single-bundler”

Since its first release, Vite has run two bundlers. esbuild handled development because it was fast, and Rollup handled production because its output was good. Most of the time you didn't notice. Now and then a bug appeared in one and not the other, and you learned that your dev server and your build were different programs.

Vite 8, released on March 12, 2026, ends that split. It ships with Rolldown, a Rust bundler from the VoidZero team, as its "single, unified" bundler for both modes, and the team promises "up to 10-30x faster builds while maintaining full plugin compatibility."

Before and after

Toolchain changes from the Vite 8 announcement
Vite 7Vite 8
Dev transformsesbuildOxc, through Rolldown
Production bundleRollupRolldown
CSS minificationesbuild by default, lightningcss optionalLightning CSS built in
Node.js20.19+, 22.12+20.19+, 22.12+

Vendor numbers

The announcement quotes production build times from companies that tested the Rolldown integration early:

Linear, production build
46s → 6s
Beehiiv build time
−64%
Ramp build time
−57%
Mercedes-Benz.io build time
up to −38%

Linear's build got about eight times faster, and Mercedes-Benz.io cut its build time by up to 38%. The bundler is one part of a build. Type checking, image processing and custom plugins keep their own cost, and a plugin written in JavaScript still runs at JavaScript speed. Time your own build on Vite 7 before you upgrade, so you have a number to compare against.

Plugins and config

"Most existing Vite plugins work out of the box with Vite 8," the team writes, and @vitejs/plugin-react v5 stays compatible. A compatibility layer converts existing esbuild and rollupOptions settings, but both keys are on their way out: the migration guide renames build.rollupOptions to build.rolldownOptions and deprecates the esbuild option.

// vite.config.ts on Vite 8
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [react()],
  build: {
    // was build.rollupOptions; the old key still maps through, deprecated
    rolldownOptions: {
      output: { entryFileNames: "assets/[name]-[hash].js" },
    },
  },
});

Still moving

At the Vite 8 launch the Rolldown project itself was still labeled a release candidate and its minifier was in alpha, so check their current status before you lean on either. On the roadmap, an experimental Full Bundle Mode targets "3x faster dev server startup" by bundling in development too, which would close the remaining gap between dev and production.

For a team on Vite 7 with an ordinary plugin list, I'd run the two-step path on a branch, rename rollupOptions, compare the bundle output with a visualizer, and ship once the diff holds no surprises.

Sources

Volodymyr Chornous