Vite 8 replaces esbuild and Rollup with Rolldown, a single Rust bundler
Vite 8.0 was announced as a stable release on March 12. I let a week go by before writing because I wanted to understand the size of the change, and it is big: for the first time, Vite uses a single bundler for both development and production.
One bundler: Rolldown
From the start, Vite lived with two engines. esbuild handled development, and Rollup handled the production build. It worked, but it meant maintaining two pipelines with slightly different behavior. Vite 8 replaces that pair with Rolldown, a bundler written in Rust. In the announcement’s words, the two paths now “resolve into one.”
The main argument is speed. According to the Vite team, Rolldown delivers up to 10-30x faster builds than Rollup, on par with esbuild. The post also cites reports from companies that tested the preview releases: Linear reportedly cut its production build from 46 to 6 seconds, and Ramp, Mercedes-Benz.io and Beehiiv reported reductions of 57%, up to 38% and 64%, respectively. These are numbers from the users and the team, not independent measurements, but the order of magnitude is consistent.
Migration: smoother than it sounds
The natural worry with a bundler swap is broken configs and plugins. Vite 8 ships a compatibility layer that automatically converts existing esbuild and rollupOptions settings into their Rolldown and Oxc equivalents. According to the announcement, Rolldown supports the same plugin API as Rollup and Vite, and most plugins work without changes.
Node requirements did not change from Vite 7: 20.19+ or 22.12+. Those versions support require(esm) without a flag, which lets Vite ship as ESM only. One detail that may matter in lean environments: the package grew by about 15 MB, mostly because of lightningcss, which became a regular dependency, and Rolldown itself.
New features worth a look
Beyond the bundler, the release brings a set of practical improvements:
- Devtools: the
devtoolsoption enables Vite Devtools. - tsconfig aliases: with
resolve.tsconfigPathsset totrue, Vite resolves TypeScript paths without an external plugin. It is off by default because it has a small performance cost. - emitDecoratorMetadata: built-in support, no third-party plugins needed.
- Wasm in SSR:
.wasm?initimports now work in server-side rendering. - Console forwarding:
server.forwardConsolesends browser console logs and errors to the dev server terminal. And here is the detail that caught my eye the most: it turns on by itself when a coding agent is detected. - Full Bundle Mode (experimental): bundles modules during development too. Preliminary results cited by the team mention 3x faster startup, 40% faster full reloads and 10x fewer network requests.
@vitejs/plugin-react reached version 6, using Oxc for the React Refresh transform. Babel is no longer a dependency, which reduces install size. If you want the React Compiler, you opt in explicitly with the reactCompilerPreset helper, through @rolldown/plugin-babel. Version 5 of the plugin still works with Vite 8, so you can upgrade one thing at a time.
Finally, the project launched a plugin registry at registry.vite.dev, a searchable directory of plugins for Vite, Rolldown and Rollup, fed daily with data from npm.
My take
Unifying around Rolldown is the most important structural change to Vite since it appeared. Having the same engine in development and production removes an old source of subtle differences, and the speed comes as a bonus. The compatibility layer shows the team took the migration seriously.
What interests me most, though, is server.forwardConsole switching on automatically for coding agents. It is a small signal, but a telling one: build tools are starting to treat agents as first-class users. An agent that runs the dev server but cannot see the browser console is working blind, and Vite fixed that by default.
My advice for anyone with projects in production is to test the upgrade on a branch, compare the build output and pay attention to the less popular plugins. For new projects, I see no reason to start on any other version.