Vite 8 + Rolldown: The Unified Rust Bundler That Changes JavaScript Builds

Posted on: 4/27/2026 8:13:19 AM

In March 2026, Vite 8.0 officially shipped with a landmark change: Rolldown — a Rust-written bundler — completely replaces the esbuild + Rollup duo that powered Vite since its inception. This isn't a routine update — it's the unification of the entire build pipeline into a single engine, ushering in a new era for JavaScript build performance.

10-30x Faster than Rollup in production builds
46s → 6s Real-world build time at Linear
64% Build time reduction at Beehiiv
0 config Migration for React/Vue/Svelte projects

The Problem with Vite Before Version 8

Since its creation, Vite used a dual-bundler architecture: esbuild for development (dependency pre-bundling, TypeScript transpilation) and Rollup for production builds. This strategy had reasoning: esbuild is blazingly fast for dev but has weak tree-shaking, while Rollup excels at tree-shaking but is significantly slower.

graph LR
    A[Source Code] --> B{Vite 7 and earlier}
    B -->|Development| C[esbuild
Go-based] B -->|Production| D[Rollup
JavaScript-based] C --> E[Dev Server] D --> F[Production Bundle] style A fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style B fill:#e94560,stroke:#fff,color:#fff style C fill:#2c3e50,stroke:#fff,color:#fff style D fill:#2c3e50,stroke:#fff,color:#fff style E fill:#4CAF50,stroke:#fff,color:#fff style F fill:#4CAF50,stroke:#fff,color:#fff

Vite's dual-bundler architecture before version 8

Consequences of this architecture:

  • Dev/prod inconsistency: Two different engines processing code leads to bugs that only appear in production builds, making debugging painful.
  • Plugin fragmentation: Vite plugins must handle both pipelines, increasing complexity for plugin authors.
  • Maintenance burden: The Vite core team had to maintain glue code synchronizing two fundamentally different systems.
  • Slow production builds: Rollup is written in JavaScript and cannot compete with native-code performance.

What Is Rolldown?

Rolldown is a JavaScript/TypeScript bundler written in Rust, developed by VoidZero (the team behind Vite, led by Evan You). Design goals:

  • Native Rust performance, matching or exceeding esbuild
  • Full API compatibility with Rollup — the plugin ecosystem remains intact
  • High-quality tree-shaking using Rollup's proven algorithm
  • Native ESM and CommonJS interoperability

Why Rust?

Rust provides zero-cost abstractions, memory safety without a garbage collector, and true parallelism. This is why Rolldown, SWC, Oxc, and Rspack all chose Rust over Go (esbuild) or JavaScript. For large projects (19,000+ modules), Rust's parallel processing advantage becomes dramatic: Rolldown is up to 25x faster than Rollup.

Vite 8 Architecture: The Unified Trio

Vite 8 doesn't just swap bundlers — it unifies the entire toolchain into a trio maintained by the same team:

graph TB
    V[Vite 8
Build Tool] --> R[Rolldown
Rust Bundler] V --> O[Oxc
Rust Compiler/Parser] R --> O R --> F1[Dev Server] R --> F2[Production Build] R --> F3[Dependency Pre-bundling] O --> P1[TypeScript Transform] O --> P2[JSX Transform] O --> P3[Minification] style V fill:#e94560,stroke:#fff,color:#fff style R fill:#2c3e50,stroke:#fff,color:#fff style O fill:#2c3e50,stroke:#fff,color:#fff style F1 fill:#4CAF50,stroke:#fff,color:#fff style F2 fill:#4CAF50,stroke:#fff,color:#fff style F3 fill:#4CAF50,stroke:#fff,color:#fff style P1 fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style P2 fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style P3 fill:#f8f9fa,stroke:#e94560,color:#2c3e50

Unified Vite 8 + Rolldown + Oxc architecture

  • Vite: Orchestrator — configuration, plugin system, dev server
  • Rolldown: Bundler — module resolution, code splitting, tree-shaking, HMR
  • Oxc: Compiler — parsing, TypeScript/JSX transforms, minification, linting (replacing esbuild transpiler + terser minifier)

The key benefit: a single pipeline for both dev and prod. Code flows through the same processing path, completely eliminating the inconsistency problem.

Real-World Benchmarks

Below are benchmark results from actual production projects, not synthetic tests:

Project Old Build (Rollup) New Build (Rolldown) Improvement
Linear (Large SaaS) 46 seconds 6 seconds 87% faster
Ramp (Fintech) ~60 seconds ~26 seconds 57% faster
Mercedes-Benz.io ~50 seconds ~31 seconds 38% faster
Beehiiv (Media) ~45 seconds ~16 seconds 64% faster

Benchmarks by Module Scale

Module Count Rolldown esbuild Rollup
100 0.18s 0.09s 0.41s
1,000 0.52s 0.31s 3.8s
19,000 1.61s 1.44s 40s+

Key Takeaway

For small projects (< 500 modules), esbuild is still slightly faster. But as scale increases to 1,000+ modules, Rolldown approaches esbuild's speed while delivering significantly better tree-shaking. In real tests, Rolldown produced 31KB output versus esbuild's 48KB for the same library — thanks to more effective elimination of unused exports.

Tree-Shaking: The Key to Optimized Bundle Size

Rolldown inherits the proven tree-shaking algorithm from Rollup, accelerated by Rust. Compared to esbuild, Rolldown handles complex cases better:

  • Re-export chains: export { foo } from './bar' through multiple layers — Rolldown traces and eliminates precisely
  • Side-effect analysis: Deeper analysis of whether modules have side effects, enabling safer code elimination
  • Semantic tree-shaking: Through Oxc integration, Rolldown understands TypeScript type information for more accurate dead code elimination

New Features in Vite 8

1. Built-in tsconfig paths support

// vite.config.ts
export default defineConfig({
  resolve: {
    tsconfigPaths: true // Automatically reads paths from tsconfig.json
  }
})

No more need for the vite-tsconfig-paths plugin. Vite 8 reads compilerOptions.paths directly from tsconfig.

2. Decorator metadata support

Oxc supports emitDecoratorMetadata automatically — crucial for frameworks using decorators like NestJS, Angular, or TypeORM.

3. Full Bundle Mode (Experimental)

An experimental mode that bundles all dependencies in dev instead of using native ESM unbundled:

3x Faster dev server startup
40% Faster full reloads
10x Fewer network requests

Full Bundle Mode is especially useful for large projects with thousands of modules — where Vite's unbundled ESM model causes too many HTTP requests during cold start.

4. Stable Plugin API

Rolldown maintains Rollup's plugin API. Most existing Rollup and Vite plugins work without modification:

// Existing Rollup plugins → work with Rolldown
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    // Current Vite/Rollup plugins still work
    vue(),
    legacy(),
    pwa()
  ]
})

Migration Guide: Vite 7 to Vite 8

Option 1: Direct Upgrade

# npm
npm install vite@latest

# pnpm
pnpm add vite@latest

# yarn
yarn add vite@latest

For standard React, Vue, or Svelte projects — just upgrade the version, no config changes needed.

Option 2: Gradual Migration via rolldown-vite

# Step 1: Try rolldown-vite (Vite fork with Rolldown)
npm install rolldown-vite

# Step 2: Change import in vite.config.ts
// import { defineConfig } from 'vite'
import { defineConfig } from 'rolldown-vite'

# Step 3: Test thoroughly → if OK, upgrade to official Vite 8

Framework-specific Overrides

If you use a meta-framework (Nuxt, Astro, SvelteKit), you need to override the Vite version:

// package.json — Nuxt
{
  "overrides": {
    "vite": "^8.0.0"
  }
}

// package.json — using pnpm
{
  "pnpm": {
    "overrides": {
      "vite": "^8.0.0"
    }
  }
}

Migration Notes

Some plugins using esbuild's internal API or Rollup-specific options may need updates. Check each plugin's changelog before upgrading. In particular, plugins calling esbuild.transform() directly will need to migrate to the Oxc transform API.

Rolldown vs Other Bundlers

Criteria Rolldown esbuild Rspack Turbopack
Language Rust Go Rust Rust
API Compatibility Rollup Custom Webpack Webpack (subset)
Tree-shaking Excellent Basic Good Good
Code Splitting Advanced (manual chunks) Basic Webpack-level Webpack-level
Vite Integration Native (default) Legacy None None (Next.js only)
HMR Built-in No Yes Yes
CSS Bundling Experimental Yes Yes Yes

Vite+ — The Road Ahead

Alongside Vite 8, VoidZero is developing Vite+ — a superset of Vite integrating:

  • vite test — Unit testing with Vitest (built-in)
  • vite lint — Linting with Oxlint (Rust-based, 50-100x faster than ESLint)
  • vite fmt — Formatting with Oxfmt
  • vite lib — Dedicated library bundling
  • vite run — Monorepo task runner

The vision: a single vite command replacing the entire current JavaScript toolchain (Webpack + Babel + ESLint + Prettier + Jest).

graph TB
    subgraph "Today — Fragmented"
    W[Webpack/Vite] ~~~ B[Babel/SWC]
    E[ESLint] ~~~ P[Prettier]
    J[Jest/Vitest] ~~~ T[TypeScript]
    end

    subgraph "Tomorrow — Vite+"
    VP[vite build
Rolldown] ~~~ VT[vite test
Vitest] VL[vite lint
Oxlint] ~~~ VF[vite fmt
Oxfmt] end style W fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style B fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style E fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style P fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style J fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style T fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50 style VP fill:#e94560,stroke:#fff,color:#fff style VT fill:#e94560,stroke:#fff,color:#fff style VL fill:#e94560,stroke:#fff,color:#fff style VF fill:#e94560,stroke:#fff,color:#fff

From a fragmented toolchain to unified Vite+

When Should You Upgrade?

Upgrade Now
New projects, or existing projects using Vite 6/7 with standard setup (Vue, React, Svelte). Migration is near zero-effort.
Upgrade After Testing
Projects with many custom plugins or direct esbuild API usage. Run rolldown-vite in parallel to validate first.
Wait
Projects depending on meta-frameworks that don't yet support Vite 8 (check the compatibility matrix for Nuxt, Astro, SvelteKit).

Conclusion

Vite 8 + Rolldown marks a significant milestone in the JavaScript tooling ecosystem. By unifying dev and production builds into a single Rust engine, Vite solves the persistent inconsistency problem while accelerating production builds by 10-30x. With Linear reducing builds from 46s to 6s, and Beehiiv cutting 64%, these aren't paper promises — they're real results from production projects.

Most importantly: migration is nearly free for most projects. If you're already using Vite, there's no reason not to try Vite 8.

References