Skip to content
•6 min read

Vite 8 and Rolldown: the VoidZero stack that wants to own your build

46 seconds down to 6. That's Linear's production build after migrating to Vite 8. Ramp reports -57% on their builds, Beehiiv -64%. The version that makes that possible shipped on March 12, 2026 and brings the most significant architectural change since Vite 2: Rolldown, a bundler written in Rust, replaces esbuild and Rollup in a single engine. - Source: Vite 8.0 is out!

But the bigger story isn't one release. It's that Vite, Rolldown, Oxc and Vitest now belong to a single team, and that team is now part of Cloudflare. Layer by layer:

Vite 8: one bundler

Until Vite 7, you lived with two engines: esbuild for dev and Rollup for production. Each with its own config, its own behaviors and its output differences. Vite 8 merges them: Rolldown (Rust) runs in both environments and adopts Rollup's plugin API, so most of your plugins keep working untouched. - Source: Vite 8.0 is out!

What else changed:

  • ESM-only. Vite 8 ships only as ES modules, made possible by require(esm) without flags. Node 20.19+ or 22.12+.
  • Built-in Devtools via the devtools option, and resolve.tsconfigPaths: true for tsconfig paths (opt-in, because it costs performance).
  • Native emitDecoratorMetadata. If you come from NestJS or Angular with decorators, goodbye to the external plugin that faked it.
  • server.forwardConsole forwards the browser console to your terminal. It turns itself on when it detects a coding agent. In 2026, the toolchain knows half its users aren't human.
  • +15 MB install size: ~10 MB of lightningcss (now a regular dependency) and ~5 MB of the Rolldown binary. The team published it in plain numbers; I appreciate the honesty.

The numbers, with context

Rolldown's front-page benchmark bundles 19,000 modules (10,000 React components + 9,000 icon JS files) with minification and sourcemaps: Rolldown 1.61s, esbuild 1.70s, rspack 4.07s and Rollup+esbuild 40.10s. - Source: rolldown.rs

Yes: 40 seconds versus 1.6. The official range quoted in the Vite 8 announcements is conservative: 10-30x faster than Rollup. Now, a dose of reality from the benchmarks repo itself: in those same tests, bun 1.4 is faster than Rolldown (822 ms vs 1597 ms), and the team recommends measuring on your own hardware. - Source: rolldown/benchmarks

The real-world cases are the ones that matter: Linear 46s→6s, Ramp -57%, Mercedes-Benz.io -38%, Beehiiv -64%. All measured on production builds during the preview phase. - Source: Vite 8.0 is out!

Vite 8.1: the end of the unbundled era

Vite invented the unbundled dev server: transform each module on demand and let the browser request what it needs. Brilliant with 200 files, a mess with 10,000: thousands of requests per page and a cold start that punishes anyone behind a corporate proxy.

Vite 8.1 (June 23, 2026) ships experimental.bundledDev, which serves bundled files in development, just like production:

// vite.config.js
export default {
  experimental: {
    bundledDev: true,
  },
};

The numbers need careful separation: on the synthetic 10,000-component test, ~15x faster startup and ~10x faster full reload. In real production, Linear's team measured cold start up to 3x faster, full reloads ~40% faster and 10x fewer network requests. - Source: Announcing Vite 8.1

Cloudflare's dashboard already uses Bundled Dev internally, and so does OpenCode desktop. When the people building the tool run it in production, "experimental" gains credibility fast. - Source: What's new in VoidZero, September 2026

Also in 8.1: chunkImportMap (avoids the re-hashing cascade of chunks), ESM Wasm imports (import { add } from './add.wasm') and work with the Lightning CSS team toward making it the default CSS processor.

Oxc: the rest of the stack

The bundler is one piece. Oxc is the sibling project covering parser, transformer, linter, formatter and minifier, all in Rust. Three data points explain why the community is watching:

Babel transforms have a replacement. The hardest proof: @vitejs/plugin-react v6 dropped Babel as a dependency and uses Oxc for React Refresh. - Source: Vite 8.0 is out!

Oxlint runs type-aware linting with tsgo. Since July 22, 2026, typescript-eslint's type-aware rules (59 of 61 covered) run on Microsoft's Go TypeScript, 12-18x faster than ESLint+typescript-eslint, sharing a single TypeScript program for lint and type-check. - Source: Type-aware linting is stable. It's the same native compiler I covered in TypeScript 7 GA.

And the React Compiler too. Oxc integrated it in Rust: over 10x faster than babel-plugin-react-compiler (~100ms down to ~10ms per file), verified against more than 100 repos and 100,000 files. - Source: React Compiler support in Oxc

Oxfmt, the formatter, claims 30x faster than Prettier on JS/TS (the conservative full-suite figure, including JSON/CSS/YAML, is 7x). - Source: oxc.rs / VoidZero update

The VoidZero story: from startup to Cloudflare

Evan You (Vue, Vite) founded VoidZero in 2023 with an explicit mission: a unified toolchain, from dev server to test runner. He raised Seed and Series A led by Accel, experimented with a mixed license on Vite+, regretted it, open-sourced it under MIT... and on June 4, 2026 sold the company to Cloudflare. - Source: VoidZero joins Cloudflare

What was agreed matters more than the price: the projects stay MIT and vendor-agnostic, the team keeps leading Vite/Vitest/Rolldown/Oxc, and Cloudflare committed one million dollars to a Vite ecosystem open source fund. In the first four months after the acquisition: over 80 releases and 1,200 closed issues. - Source: VoidZero update

The ecosystem's scale, for perspective: Vite went from 65 million weekly downloads at the Vite 8 launch (March 2026) to about 129 million in June of the same year. - Source: Vite 8.0, Cloudflare. The figures measure different things (package vs family), but the direction is clear.

The full stack today: Vite (build) + Rolldown (bundler) + Oxc (compiler/linter/formatter) + Vitest (testing) + Vite+ (the unified toolchain, 1.0 in September 2026). One team with full context to optimize across boundaries: Oxc's semantic analysis improves Rolldown's tree-shaking, the same parser serves lint and transform. The bet: the toolchain is one product, not four tools that tolerate each other.

And Angular in all this?

Angular doesn't build on Vite, but the bridges are visible:

Translation: when the Angular compiler on top of TS 7 arrives, Oxc will already be underneath. If that thread interests you, I covered it in Angular and TypeScript 7 (tsgo).

Migration tips

  1. The gradual route: rolldown-vite first. It's the preview package you can install on top of Vite 7 and test without migrating. When your app passes, jump to Vite 8. - Source: Vite 8.0 is out!
  2. Don't rewrite your config: the compatibility layer exists. Vite 8 auto-converts esbuild and rollupOptions settings. Clean up later, not before.
  3. Measure your build, not Linear's. If your build takes 11 seconds, the 10-30x gets you to 4 and nobody's day changes. Where this matters is monorepos and CI.
  4. bundledDev with third-party plugins: take it slow. It's experimental and some plugins don't work yet. Test it on a branch.
  5. Update @vitejs/plugin-react to v6 if you're on React: fewer dependencies and the direct path to the React Compiler via react({ compiler: true }).

Does your production build take more than 30 seconds? That number is negotiable with Vite 8. Tell me in the comments.


> More posts