Tutorials

Vite 8 and Rolldown Are Stable (This Site Still Runs Vite 5)

· Tutorials

Vite 8 made Rolldown the single Rust bundler. The documented migration facts — Node floor, browser targets, config changes — from a Vite 5 app not yet migrated.

Vite 8 and Rolldown Are Stable (This Site Still Runs Vite 5)

Last updated: September 9, 2026 · 6-minute read

Vite 8.0 went stable on March 12, 2026 with Rolldown as its single, unified, Rust-based bundler. Six months later the stable line sits at 8.2.2, an 8.3 beta landed on September 7 — and this site still runs Vite 5.4.19, deliberately, for now.

That last fact is the honesty anchor for everything below. This site's devDependencies pin vite at ^5.4.19, the lockfile resolves 5.4.19, and no migration branch exists yet — the site is the migration test case, not a finished story. What follows is a verification pass over the official announcement and the migration guide, with every speed number labeled as whose it is.

What Vite 8 actually changed

The change is architectural, and the announcement says so in its own words: Rolldown is "the most significant architectural change since Vite 2". One Rust-based bundler now handles both development and production builds, replacing the old split where esbuild served dev and Rollup built prod. Rolldown comes from the VoidZero team, and the unified toolchain is Vite for the build, Rolldown for bundling, and Oxc for compilation — including Oxc-powered tree-shaking.

The journey to stable ran in documented steps. A rolldown-vite technical preview package carried the experiment through the Vite 6 and 7 era, the Vite 8 beta integrated Rolldown fully in December 2025, and the stable release followed on March 12, 2026. Vite itself is now ESM-only — worth knowing before any legacy config debugging session starts.

Compatibility is the announcement's second promise: Rolldown ships, per the same announcement, while maintaining full plugin compatibility. The migration guide is more cautious in its fine print, and at least one vendor has documented a Rolldown-era import breakage in the wild. Treat full compatibility as a claim to verify per project — the checklist below exists for exactly that reason.

The speed claims, attributed

The announcement's own language claims up to 10–30x faster builds while maintaining full plugin compatibility. Company-reported figures collected by the Vite team back the beta story: Linear dropped from 46 seconds to 6, Ramp reported a 57% reduction, Mercedes-Benz.io up to 38%, and Beehiiv 64%.

The honest reading treats all of it as a bundler team's best case for its own bundler — reported numbers, not measurements from this keyboard. The claims are plausible and consistently attributed; they are also not a reason to skip the pre-flight checks below, because the checklist items are documented facts while the speedups are somebody's stopwatch.

Pre-flight checks before upgrading

Three checks cost less than one broken deploy. All three come from the official migration guide, and all three are dated facts rather than benchmarks.

Step 1: Check the Node floor

Vite 8 requires Node 20.19 or later, or Node 22.12 or later — the same floor as Vite 7, chosen so require(esm) works unflagged. Technically, a Node 20.19+ install passes.

Practically, Node 20 reached end-of-life on April 30, 2026, and pairing a brand-new bundler with an unmaintained runtime is borrowing trouble at both layers at once. The Node 24 upgrade and the Vite 8 upgrade belong in the same week — sequenced, not simultaneous, and not in one commit.

Step 2: Check the browser targets

The default build.target floor moved in Vite 8: Chrome and Edge from 107 to 111, Firefox from 104 to 114, Safari from 16.0 to 16.4. The guide aligns this with Baseline Widely Available status as of January 1, 2026.

That floor is a default, not a decree — an explicit build.target in a config keeps its own value, so the bump only bites configs that inherit the defaults. Accepting the new floor silently still means shipping JavaScript that older browsers cannot parse. Check who actually visits the site before letting a build tool decide browser support.

Step 3: Inventory the plugin chain

Vite's own claim is that most existing plugins work out of the box — most, not all. Real-world Rolldown-era import edge cases have already been documented by vendors, which is exactly the kind of quiet breakage that turns an afternoon upgrade into a week.

Config changes the guide documents

The dependency optimizer switched engines: it now uses Rolldown instead of esbuild, and optimizeDeps.esbuildOptions entries are auto-converted to optimizeDeps.rolldownOptions. Auto-converted is not the same as reviewed — any hand-tuned esbuild optimizer settings deserve a diff read.

Three conveniences moved into the core. resolve.tsconfigPaths is built in, an optional devtools mode arrives behind a devtools option, and emitDecoratorMetadata is supported natively. A new plugin directory at registry.vite.dev catalogs the ecosystem, which is the right place to confirm each plugin's Vite 8 status before upgrading rather than after.

The rolldown-vite intermediate step

The migration guide documents rolldown-vite as a supported intermediate step: the package implements Vite 7 with Rolldown, without the other Vite 8 changes. That separation is the strategic gift — a real app can isolate Rolldown breakage from everything else in the major version.

The sequence for a real codebase writes itself. Run the plugin chain and the build on rolldown-vite first, fix what breaks while the surface area is small, then take the rest of Vite 8 — browser targets, optimizer changes, ESM-only — as a separate, attributable diff.

New projects skip this entire discussion. create-vite 9.2.0, published August 24, 2026, scaffolds straight onto the new line, and its output has no plugin history to defend. The intermediate step exists for codebases that already have one — established plugin chains, hand-tuned optimizer settings, and CI pipelines whose behavior is already known.

This site's honest status

This site still builds on Vite 5.4.19, and nothing here is broken — the migration is scheduled as a test-case exercise, not an emergency. The plan is the one above: rolldown-vite first, plugin chain second, the real flip last, with the prerender step re-verified at each stage. The first move is concrete: swap the dependency on a branch, run the build and the prerender, and let the diff — not optimism — set the pace.

Why bother at all when the current setup works? Two of the facts above carry dates — a Node floor that excludes an end-of-life runtime, and a browser-target floor already aligned with Baseline. The speed claims are negotiable; the floors are not. That is the difference between "upgrade eventually" and "upgrade with a date attached", and the post gets updated when the flip actually happens.

TL;DR

  • Vite 8.0 went stable March 12, 2026 with Rolldown as the single Rust bundler; the stable line is 8.2.2, with 8.3.0-beta.1 out since September 7.
  • The 10–30x build-speed claims are the Vite team's and their partners' own numbers — reported, not independently measured.
  • Pre-flight: Node 20.19+/22.12+ floor (Node 20 is EOL — upgrade it too), browser targets now Chrome/Edge 111, Firefox 114, Safari 16.4, and a plugin-chain inventory before flipping.
  • The dependency optimizer now runs on Rolldown, with esbuild options auto-converted — review any hand-tuned settings.
  • rolldown-vite is the documented intermediate step: test Rolldown on Vite 7 semantics first, then take the rest of Vite 8.

Keep reading

  • Node 24 is the LTS that matters now
  • TypeScript 7 is the default compiler now
  • The Tauri + React stack this site runs on
  • Developer Workflow — the hub for tooling posts

---

Not affiliated with the Vite project, VoidZero, or the OpenJS Foundation. Sources: the Vite 8 announcement and the official migration guide, verified September 9, 2026.

ansaribilal.com — technology, tested in public.