Back to blog
Tutorials

Vite 8 and Vite+: One Tool to Replace Your Entire Frontend Toolchain

Kim BoenderKim Boender
April 5, 2026 5 min read
Vite 8 and Vite+: One Tool to Replace Your Entire Frontend Toolchain

I've been using Vite since before it hit 1.0, and it's been my dev server of choice ever since. So when Evan You's company VoidZero dropped Vite 8 stable and then Vite+ Alpha within days of each other in March 2026, I had to dig in immediately.

The short version: your JS/TS toolchain is about to get a lot simpler, and dramatically faster.

What Is VoidZero, and Why Does It Matter?

VoidZero is a company Evan You (creator of Vue.js and Vite) founded in late 2024 with a specific goal: rebuild the JavaScript toolchain from the ground up in Rust. If that sounds ambitious, it is. But they've already shipped.

The core deliverables are:

  • Rolldown, a Rollup-compatible bundler written in Rust
  • Oxc, a JS/TS parser, transformer, linter, and formatter
  • Vite 8, stable release that replaces esbuild + Rollup with Rolldown
  • Vite+, a unified CLI that wraps all of the above into one tool

If you use Vite today (and if you're building with Vue, Nuxt, or SvelteKit, you almost certainly do), this is the roadmap your toolchain is heading down.

Vite 8: Rolldown Takes the Wheel

Vite 8 stable shipped on March 12, 2026. The headline change: Rolldown now powers production builds, replacing the esbuild + Rollup combination that Vite has used since its early days.

The performance numbers are hard to ignore. In official benchmarks testing 19,000 modules, Rolldown completed in 1.61 seconds compared to Rollup's 40.10 seconds, a 25× improvement. Real-world teams have seen similar gains; Linear reportedly saw production builds drop from 46 seconds to just 6 seconds after upgrading.

Migrating to Vite 8

For most projects, the upgrade is refreshingly simple. Vite 8 ships with a compatibility layer that auto-converts your existing rollupOptions config to Rolldown equivalents:

npm install vite@8

Run your build and see if anything breaks. For the majority of Vue/React/TS projects, nothing will. The most likely change you'll need to make manually is the options rename:

// vite.config.ts
export default defineConfig({
  build: {
-   rollupOptions: {
+   rolldownOptions: {
      // your existing config
    }
  }
})

A few other breaking changes worth knowing:

  • CSS minification now defaults to Lightning CSS (was esbuild). Revert with build.cssMinify: 'esbuild' if needed.
  • Oxc replaces esbuild for JS/TS transformation, in practice, you won't notice a difference in output
  • CommonJS interop behavior has changed slightly; if you import a lot of CJS modules, use legacy.inconsistentCjsInterop: true as a temporary workaround

For projects with complex Rollup plugin setups, the Vite 8 migration guide is thorough. Most popular Rollup plugins have already added Rolldown compatibility.

Vite+: The Unified Toolchain

Vite 8 is a solid incremental upgrade. Vite+ is the bigger story.

Announced on March 13, 2026, Vite+ wraps everything VoidZero has built into a single CLI that manages your runtime, package manager, linter, formatter, test runner, and bundler. One tool, one config, one install command.

Here's what gets consolidated:

Your Current Setup Replaced By
Vite (dev server + build) Vite 8 + Rolldown
ESLint Oxlint (50–100× faster)
Prettier Oxfmt (up to 30× faster)
Vitest Vitest 4.x (bundled)
tsup / rollup (library builds) tsdown

Creating a new project is one command:

npm create vite-plus@alpha my-app -- --template vue-ts
cd my-app && npm install && npm run dev

Vite+ ships with templates for Vue, Nuxt, React, React Router, TanStack Start, and Svelte.

Migration for Existing Projects

For existing projects, there's a dedicated migration command that handles most of the heavy lifting:

npx vite-plus migrate

This command (vp migrate) scans your project, updates your config, and replaces your separate lint/format scripts with Vite+ equivalents. It's still alpha, so review the diff carefully before committing, but in my testing on a mid-size Vue 3 + Pinia project, it got about 90% of the way there without manual intervention.

Vite Task: The Built-In Task Runner

One of the more interesting additions is Vite Task, a built-in task runner that replaces npm scripts for orchestrating your build pipeline. Instead of chaining shell commands in package.json, you define tasks in vite.config.ts:

import { defineConfig, defineTask } from 'vite-plus'

export default defineConfig({
  tasks: {
    build: defineTask({
      run: ['lint', 'typecheck', 'bundle'],
      parallel: false,
    }),
    lint: defineTask({
      command: 'oxlint src/**/*.{ts,vue}',
    }),
    typecheck: defineTask({
      command: 'tsc --noEmit',
    }),
  }
})

This is still stabilizing in alpha, but the direction makes sense, your task runner knowing about your build graph means smarter caching and parallelism.

Should You Upgrade?

Vite 8, yes, today. This is production-ready software. The Rolldown migration has been in beta since late 2025, the ecosystem has had time to catch up, and the performance gains are real. If you're on Vite 7, upgrade during your next sprint.

Vite+, watch and wait (or experiment). It's alpha software, and Nuxt/Vite plugin ecosystem coverage is still being worked out. I wouldn't drop it into a production project tomorrow. But for greenfield projects or personal tools, it's worth kicking the tires now so you're ready when it hits stable.

The Bigger Picture

What VoidZero is building is a bet that the fragmented JS toolchain, ESLint, Prettier, Rollup, esbuild, Vitest, each configured separately, each with its own plugin ecosystem, is the wrong model. One opinionated, high-performance toolchain is the right answer.

We've seen this argument made before (Rome → Biome made the same case for linting and formatting). VoidZero has a structural advantage: Evan You built Vite, which is already the default dev server for Vue, Nuxt, SvelteKit, Astro, and more. That distribution is hard to compete with.

Update to Vite 8 now. Keep an eye on Vite+ as it moves toward stable. The toolchain consolidation is coming, and for once, I think the hype is justified.

Frequently Asked Questions

Is Vite 8 backward compatible with Vite 7 projects? +
Mostly yes. Vite 8 ships a compatibility layer that auto-converts your existing rollupOptions config to Rolldown equivalents, so many projects can upgrade with little to no manual changes. The main breaking change to watch for is renaming build.rollupOptions to build.rolldownOptions, along with some shifts in CSS minification defaults and CJS interop behavior.
What is the difference between Vite 8 and Vite+? +
Vite 8 is the stable bundler upgrade, it replaces the internal esbuild + Rollup setup with Rolldown and is production-ready today. Vite+ is a higher-level CLI wrapper (currently in alpha) that bundles Vite, Oxlint, Oxfmt, Vitest, and tsdown into a single unified toolchain with one config file and an integrated task runner.
Does Vite+ work with Nuxt 3 and Vue projects? +
Vite+ includes Nuxt as a supported template, so new Nuxt projects can be scaffolded with it. For existing Vue or Nuxt projects, the vp migrate command handles most of the migration automatically. Full ecosystem coverage for Nuxt plugins is still being worked on in alpha, so production Nuxt apps should wait for a stable release.
Is Rolldown production-ready for real projects? +
Yes. Rolldown has been available as opt-in via the rolldown-vite package since mid-2025, and Vite 8 (which uses Rolldown by default) hit stable on March 12, 2026. The alpha label applies specifically to the Vite+ CLI wrapper, not to Rolldown itself. Teams at companies like Linear have already reported major build time improvements in production.
Do I still need to install ESLint and Prettier separately with Vite+? +
No, that's the whole point of Vite+. It bundles Oxlint (an ESLint-compatible linter, 50–100× faster) and Oxfmt (a Prettier-compatible formatter, up to 30× faster) alongside the bundler and test runner. With Vite+, your entire toolchain ships as one dependency, configured through a single vite.config.ts file.

Try it yourself

JSON Formatter

Format, validate, and beautify JSON instantly

Open JSON Formatter