
Vite 8 replaced both esbuild and Rollup with Rolldown. Here's what that means for your Vue project in practice.
Reza Baar
May 27, 2026
Vite 8 shipped in March 2026 with the biggest architectural change since Vite 2. Rolldown, a Rust-based bundler, now replaces both esbuild (which handled dev transforms) and Rollup (which handled production builds). If you're running a Vue project on Vite, this affects your dev server, your production builds, and the gap between them. In this post, we'll walk through what actually changed and what you need to do about it.
You can read the official announcement on voidzero.dev.
Before Vite 8, the build pipeline used two separate tools:
This worked well, but the two tools had different behaviors. Code that worked in dev could break in production because the bundlers handled edge cases differently. Module interop, code splitting boundaries, and import resolution could all behave slightly differently between the two.
Rolldown replaces both. One bundler for dev, one bundler for production. The same Rust-based tool handles pre-bundling, transforms, and the final build.
The production build is where the difference is most visible. Rolldown is 10-30x faster than Rollup, and the gap widens with project size. Some real numbers from companies that adopted it early: Linear cut builds from 46 seconds to 6 seconds. Ramp saw a 57% reduction. Beehiiv saw 64%.
For a typical Vue app with 50-100 components, you're looking at builds that used to take 8-12 seconds finishing in 1-3 seconds.
Dependency pre-bundling (the step where Vite processes your node_modules into ES modules) is faster too. Rolldown handles this instead of esbuild now, and since it shares the same module graph with the rest of the pipeline, there's less duplicate work.
On a fresh npm run dev with a mid-size Vue project, you'll see the pre-bundling step complete noticeably faster. Subsequent starts (where the cache is warm) were already fast and stay fast.
Rolldown ships with dead code elimination and smart constant inlining enabled by default. Your production bundles should be smaller without any config changes. The DCE is more aggressive than Rollup's because Rolldown can analyze the full module graph in a single pass.
If your project is on Vite 7, upgrading to Vite 8 is straightforward:
npm install vite@latest @vitejs/plugin-vue@latest
Your vite.config.ts doesn't need changes. The Vue plugin works the same way:
// vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
plugins: [vue()],
});
Rolldown is now the default. There's no opt-in flag.
Rolldown supports the same plugin API as Rollup. If your project uses Rollup plugins, they should work without changes. The most common Vue-related plugins are compatible:
// vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
plugins: [
vue(),
Components(),
AutoImport({
imports: ['vue', 'vue-router'],
}),
],
});
If you have a custom Rollup plugin that uses standard hooks (resolveId, load, transform, renderChunk), it should work as-is. Plugins that rely on internal Rollup APIs or undocumented behavior may need updates, but this is rare.
This is the change that matters most day-to-day, even if it's the least visible. Before Vite 8, you could write code that worked in dev but broke in production because esbuild and Rollup resolved modules differently or handled edge cases in import chains differently.
With Rolldown handling both, the module resolution, code splitting, and transform pipeline are identical in dev and production. If it works in dev, it works in production. This eliminates an entire category of "works on my machine" bugs.
Rolldown is part of a larger effort. It's built on Oxc, a Rust-based JavaScript parser and transformer. The same foundation powers:
All of these share one parser, one resolver, and one module interop layer. This means they don't conflict with each other the way separate tools (ESLint + Prettier + webpack) sometimes do.
VoidZero also announced Vite+, which combines Vite, Vitest, tsdown, Oxlint, and Oxfmt into a single CLI. For Vue projects, this means your entire toolchain (dev server, tests, build, linting, formatting) could run on a shared Rust core. It's early, but worth watching.
If you're using Nuxt, you get Rolldown automatically. Nuxt uses Vite under the hood, so upgrading Nuxt to a version that depends on Vite 8 gives you the same benefits. Nitro (the server engine) also benefits from faster builds.
Check your Nuxt version's Vite dependency to confirm you're on Vite 8:
npx nuxi info
Rolldown 1.0 is stable as of May 2026, but a few things are still evolving:
npm install vite@latest with no config changes neededThe move to Rolldown is the kind of infrastructure change that mostly just makes things faster and more predictable. You don't need to learn a new API or rewrite config. The biggest win is something you'll stop noticing: builds that used to make you wait, and dev/prod differences that used to make you debug.
I hope this post has been helpful. Happy coding!
Get the latest news and updates on developer certifications. Content is updated regularly, so please make sure to bookmark this page or sign up to get the latest content directly in your inbox.

Rolldown and Vite 8: What Changed
Vite 8 replaced both esbuild and Rollup with Rolldown. Here's what that means for your Vue project in practice.
Reza Baar
May 27, 2026

Closures Explained: How Functions Remember Their Scope
A function in JavaScript remembers the scope it was created in, even after that scope has finished executing. Learn what closures are, why the loop bug happens, and how to use them in practice.
Martin Ferret
May 26, 2026

Writing Custom Hooks in React: Patterns, Pitfalls, and When to Reach for One
A practical guide to writing custom React Hooks: the patterns they replaced, the rules they must follow, when to extract one, and libraries that cover the rest.
Aurora Scharff
May 21, 2026