Vite 8 Beta: Rolldown Replaces esbuild and Rollup

Vite 8 beta moves to Rolldown as its single bundler. Here is why the switch happened, what it means for build speed and plugins, and how to try the beta safely in an existing project.
The first beta of Vite 8 is out, and its headline change sits deep in the build pipeline: Vite no longer combines esbuild and Rollup. Both jobs now go to Rolldown, a Rust-based bundler built by the VoidZero team specifically for Vite. The practical result is much faster production builds, more consistent behavior between development and production, and a foundation for features that were hard to build on the old setup.
To try it, bump vite to 8.0.0-beta.0 and read the official migration guide before rolling it out widely.
Why Two Bundlers Became a Problem
Since its early days, Vite has split the work between two tools. esbuild handled fast transforms during development, while Rollup took care of bundling, chunking and optimizing for production. That division let Vite concentrate on developer experience instead of reinventing parsing and bundling.
The trade-off was complexity. Two pipelines meant two transformation paths, two plugin models and a growing layer of glue code whose only job was to keep dev and production output aligned. Edge cases where something worked in vite dev but behaved differently after vite build were a familiar annoyance.
Rolldown was designed to remove that split without asking the ecosystem to start over. Its goals can be summarized in three points:
- Speed. Written in Rust and running natively, it performs in the same league as esbuild and is reported to be 10 to 30 times faster than Rollup.
- Plugin compatibility. It implements the same plugin API as Rollup and Vite, so most existing Vite plugins work unchanged.
- Room to grow. It enables capabilities such as a full bundle mode, finer control over chunk splitting, persistent module-level caching and Module Federation.
One Team, One Toolchain
Bundlers rely on parsers, resolvers, transformers and minifiers. Rolldown gets these from Oxc, another VoidZero project. That gives Vite a vertically aligned stack maintained by a single team:
1. Vite as the build tool and dev server 2. Rolldown as the bundler 3. Oxc as the compiler layer
Owning every layer has concrete benefits. Behavior stays consistent across the stack, new JavaScript syntax can be supported quickly, and optimizations can cross boundaries that used to be separate projects. One example: Rolldown can use Oxc's semantic analysis to tree-shake more aggressively than before.
How the Switch Was De-risked
Replacing the bundler of a tool this widely used is not something to do in one leap, and the rollout reflected that. First came a separate rolldown-vite package published as a technical preview, so early adopters could test it without touching stable Vite. Reported results from those teams were striking: Linear's production builds reportedly went from 46 seconds to 6, Beehiiv cut build time by 64%, and Mercedes-Benz.io saw reductions of up to 38%.
Next, a CI suite was set up to run important plugins and frameworks against rolldown-vite. Checking projects like SvelteKit, React Router and Storybook this way surfaced regressions early. Finally, a compatibility layer was added that maps existing Rollup and esbuild options to their Rolldown counterparts, smoothing the path for configuration-heavy projects.
Trying the Beta in Your Project
Because the change affects core build behavior, the team deliberately kept the configuration API and plugin hooks stable. There are two sensible ways to upgrade:
Vite 8.0 Released: Up to 30x Faster Development with Rolldown
Tailwind CSS v4 with Angular in an Nx Monorepo: Setup and Lean CSS
1. Straight to Vite 8. Update the vite version in package.json and run your usual dev and build commands.
2. In two steps. Move from Vite 7 to rolldown-vite first, then to Vite 8. This isolates Rolldown-specific issues from other Vite 8 changes and is the safer choice for large or complex codebases.
Things to Watch Out For
Projects that pass specific Rollup or esbuild options may need config adjustments; the migration guide lists the mappings. As with any pre-release major version, test thoroughly after upgrading.
If Vite arrives through a framework or tool such as Astro, Nuxt or Vitest, you will need to force the beta version through your package manager's override mechanism. A minimal npm-style example:
{
"overrides": {
"vite": "8.0.0-beta.0"
}
}
Yarn and pnpm use their own resolutions or pnpm.overrides fields for the same purpose. After adding the override, reinstall dependencies and run the project as usual.
Smaller Additions in Vite 8
Beyond the bundler, two smaller features stand out:
- Built-in tsconfig paths. Setting
resolve.tsconfigPaths: truelets Vite resolve TypeScript path aliases without an extra plugin. It is off by default because it carries a small performance cost. emitDecoratorMetadata. Vite now supports this TypeScript option automatically, which matters for decorator-heavy frameworks and dependency injection libraries.
What Comes Next
Speed has always been Vite's selling point, and moving to Rolldown and Oxc lets JavaScript developers benefit from Rust performance simply by upgrading. The next step is a full bundle mode for the dev server, aimed at large projects where serving thousands of unbundled modules becomes the bottleneck. Early numbers point to roughly 3x faster startup, about 40% faster full reloads and around 10x fewer network requests.
The plugin ecosystem is the other pillar. The plan is for plugins to remain authored in JavaScript while the heavy lifting happens in Rust, and VoidZero is working on reducing the overhead of calling JavaScript plugins from the Rust core. If that succeeds, Vite users get native speed without giving up the extensibility that made the tool popular.
This week’s posts, in your inbox every Monday
A short summary of the posts published that week on AI, Claude Code, MCP and web development. No new posts, no email.
- One email a week
- No ads
- One-click unsubscribe








