Vite 8.0
Vite 8.0 Release: The Unified Toolchain and Migration Guide
On March 12, 2026, Vite 8.0 was officially released. The heart of this major version is the Unified Toolchain: the default bundler switches to Rolldown, and the transformation and minification that esbuild used to handle are now done by Oxc. It is regarded as the most significant architectural change since Vite 2. Weekly downloads have reached 65 million.
📋 Table of Contents
Key Changes
1. The Unified Toolchain
The biggest change in Vite 8 is a toolchain aligned into one. Previously, Vite used a dual-bundler setup — esbuild during development and Rollup for production builds — but Vite 8 unifies them.
The three components:
- Vite — the build tool
- Rolldown — the bundler (Rust-based)
- Oxc — the compiler (parsing, transforming, minifying)
This alignment guarantees consistent behavior across the entire pipeline of parsing, resolving, transforming, and minifying.
2. Rolldown Adopted as the Default Bundler
Rolldown, the Rust-based bundler offered experimentally in Vite 7, is now the default, replacing esbuild and Rollup.
Main effects:
- Up to 10–30x faster builds (while maintaining plugin compatibility)
- Eliminates bundler inconsistency between development and production
- The most significant architectural change since Vite 2
Real-world production build improvements:
| Service | Result |
|---|---|
| Linear | 46s → 6s |
| Beehiiv | 64% reduction |
| Ramp | 57% reduction |
| Mercedes-Benz.io | Up to 38% reduction |
3. Oxc-based Transformation and Minification
JavaScript transformation and minification have moved from esbuild to Oxc.
- JS transformation: Oxc replaces esbuild (
esbuildoption →oxc) - JS minification: uses the Oxc Minifier
- CSS minification: Lightning CSS is now the default
- Note: Oxc does not support native decorator lowering, so use a Babel/SWC plugin when needed.
4. Node.js Support Requirements
Vite 8 requires Node.js 20.19+ or 22.12+ (unchanged from Vite 7).
5. Raised Browser Targets
The default browser target was raised to match the "Baseline Widely Available" feature set as of 2026-01-01.
| Browser | Vite 7.0 | Vite 8.0 |
|---|---|---|
| Chrome | 107 | 111 |
| Edge | 107 | 111 |
| Firefox | 104 | 114 |
| Safari | 16.0 | 16.4 |
Comparison with Vite 7.0
Key Differences
| Feature | Vite 7.0 | Vite 8.0 |
|---|---|---|
| Default bundler | esbuild + Rollup | Rolldown (unified) |
| JS transform/minify | esbuild | Oxc |
| CSS minification | esbuild | Lightning CSS |
| Rolldown | Experimental | Default |
| Min. Node.js version | 20.19+ / 22.12+ | 20.19+ / 22.12+ (same) |
| Build speed | Baseline | Up to 10–30x faster |
Performance Improvements
- Unifying the dev/production toolchain delivers consistency and speed at once
- Especially large build-time reductions on big projects (measured at 38–64%)
Migration Guide
Step 1: Check Your Node.js Version
# Check Node.js version (20.19+ or 22.12+ required)
node --versionStep 2: Update package.json
{
"devDependencies": {
"vite": "^8.0.0"
}
}If you were using the technical preview
rolldown-vitepackage, simply replace it withvite: ^8.0.0as above.
Step 3: Review Browser Targets
If you set a custom target, review the raised minimum versions:
// vite.config.js
export default {
build: {
target: 'baseline-widely-available',
},
};Step 4: Migrate Bundler Options (Rollup → Rolldown)
The rollupOptions family must move to rolldownOptions (they work as deprecated warnings for now).
// vite.config.js
export default {
build: {
// rollupOptions: { ... }, // deprecated
rolldownOptions: {
// ...
},
},
// worker.rollupOptions → worker.rolldownOptions
};Key changes:
optimizeDeps.esbuildOptions→optimizeDeps.rolldownOptionsbuild.rollupOptions→build.rolldownOptionsworker.rollupOptions→worker.rolldownOptionsbuild.commonjsOptions→ no-op- Object form of
output.manualChunksremoved (function form deprecated) build.rollupOptions.watch.chokidar→build.rolldownOptions.watch.watcher
Step 5: Check Transformation/Minification Options
// vite.config.js
export default {
// esbuild: { ... }, // deprecated → move to oxc
oxc: {
// JSX, define, etc. are converted automatically
},
build: {
// To revert to esbuild minification (requires esbuild as a devDependency)
minify: 'esbuild',
},
};Step 6: Verify CommonJS Interop
The default import handling rules have changed. If you need the old behavior, you can restore it temporarily:
// vite.config.js
export default {
legacy: {
inconsistentCjsInterop: true, // temporarily restore previous behavior
},
};New Features
1. Integrated Devtools
Integrated developer tools are available via the new devtools configuration option.
// vite.config.js
export default {
devtools: {
// ...
},
};2. Built-in TypeScript paths Support
Use tsconfig's paths mapping without a separate plugin via resolve.tsconfigPaths.
// vite.config.js
export default {
resolve: {
tsconfigPaths: true,
},
};3. Other Additions
- Automatic
emitDecoratorMetadatasupport — decorator metadata handled automatically - WebAssembly SSR support —
.wasm?initimports - Browser console forwarding — browser console logs forwarded to the dev server terminal
4. @vitejs/plugin-react v6
It now uses Oxc for React Refresh transforms, and Babel has been removed as a dependency, reducing the installation footprint.
Ecosystem Updates
registry.vite.dev
A searchable plugin directory that aggregates Vite, Rolldown, and Rollup plugins daily from npm data has been launched.
Install Size Note
Vite 8 is about 15 MB larger than Vite 7.
- lightningcss standard dependency added: ~10 MB
- Rolldown binary: ~5 MB
Future Roadmap
- Full Bundle Mode (experimental) — targeting 3x faster dev server startup
- Raw AST transfer for JavaScript plugins
- Native MagicString transforms
- Environment API stabilization
Conclusion
Vite 8.0 is fundamentally about moving to a Unified Toolchain that ties development and production together. Adopting Rolldown and Oxc delivers up to 10–30x faster builds, but it requires some configuration changes such as bundler options (rollupOptions → rolldownOptions) and transformation options (esbuild → oxc).
Key checklist:
- ✅ Confirm Node.js 20.19+ or 22.12+
- ✅ Review the raised browser targets
- ✅ Migrate
rollupOptions→rolldownOptions - ✅ Check
esbuild→oxcoptions, keepminify: 'esbuild'if needed - ✅ Verify CommonJS interop behavior (
legacy.inconsistentCjsInterop) - ✅ Prepare a Babel/SWC plugin if you use decorators
For the detailed migration guide, refer to the official documentation.