NEWS

Vite+ reaches version 1.0 with GitLab CI and tsup migration

VoidZero, acquired by Cloudflare, has stabilized Vite+, a toolchain that bundles Vite, Vitest, Rolldown, and Oxc into a single command. Version 1.0 brings GitLab CI support, automatic migration of tsup projects, and native Git hooks.

Vite+ reaches version 1.0 with GitLab CI and tsup migration
Image: Redação iMasters

VoidZero, the company founded by Vite creator Evan You and acquired by Cloudflare, released version 1.0 of Vite+, its unified JavaScript development toolchain, on October 14, 2026. The announcement comes about three months after the beta, which InfoQ covered in August. According to VoidZero, the package is already approaching two million weekly downloads, with more than 2,600 public repositories depending on the vite-plus package.

What the vp command solves

The core proposal hasn't changed from beta to the stable release: a single command-line tool, vp, manages the Node.js runtime, the package manager, and a frontend tooling stack made up of Vite 8, Vitest, Oxlint, Oxfmt, Rolldown, and tsdown, all configured from a single vite.config.ts. Instead of teams picking and versioning each piece separately, Vite+ delivers everything as a single dependency, tested as a unit.

For teams maintaining Vite projects in production, this means a single Vite+ upgrade can bring, in one shot, a new version of Vitest, Rolldown, or Oxc, without the manual work of matching compatible versions across packages that used to be independent. The work between the beta and 1.0 didn't add any major new commands: it focused on CI, migration, diagnostics, and compatibility with the existing ecosystem.

Native CI for GitLab, Homebrew, and Docker

The setup-vp action, which combines Node.js setup, package manager setup, and dependency caching into a single step, now has official support for GitLab CI/CD, in addition to the GitHub Action that already existed since the beta. Vite+ is also now distributed via Homebrew and as a Docker image.

In practice, this removes from the CI pipeline much of the configuration that today repeats project after project: installing Node.js, installing the right package manager, and setting up dependency caching become a single step, regardless of whether the team runs GitHub Actions or GitLab CI/CD.

tsup migration, diagnostics, and Git hooks

The vp migrate command now also handles projects that use tsup, in addition to fixing a number of edge cases reported during the beta. The command prints the migration plan before touching any file, but VoidZero recommends that teams read the migration guide before running it on production code, since large projects may require manual adjustments afterward. There's also a ready-made migration prompt for teams using coding agents.

Two new diagnostic commands tackle the opacity of a bundled toolchain: vp toolchain shows the exact version of every tool that Vite+ ships with, and vp env doctor explains how the runtime and package manager were resolved when that resolution goes wrong. The vp hooks command, in turn, configures, enables, and disables Git hooks, with vp staged running checks only on staged files, a role usually filled today by Husky and lint-staged.

The pieces underneath also evolved

The tools that make up Vite+ didn't stand still between the beta and 1.0. Vitest 5 reached stability, Vite 8.1 brought bigger experiments around Bundled Dev Mode, and Oxc gained native support for React Compiler. According to VoidZero, this native version of the compiler runs ten times faster than the Babel plugin it replaces.

Because Vite+ is distributed as a single dependency tested as a whole, these internal updates reach developers as a single version bump, instead of four or five separate upgrades to keep track of.

Who has already swapped their own setup for Vite+

VoidZero highlighted the Tiptap editor project as an example of 1.0 adoption: the team replaced a separate setup of Vite, Vitest, tsup, and Oxc with Vite+ as a single piece. Other cited adopters include Dify, vinext (Cloudflare's own Next.js-compatible framework), BlockNote, Inkline, npmx, and Hono.

The comparison with uv and the price of stability

Within the community, the most repeated comment about the stable release compared Vite+ to uv, the Python package manager that also bundles several tools into a single binary. On Hacker News, one commenter described the bundled tools this way:

killer good and fast

Hacker News commenter

Others praised the default delivered by Vite+ as predictable, something that just works without requiring fine-tuning. The sharpest criticism, however, targeted Vite's own history of instability, not the Vite+ concept: one commenter pointed out that Vite had five major versions in the four years between 2022 and 2026, each bringing breaking changes, and said they didn't want their job to boil down to chasing Vite upgrades indefinitely.

On Reddit, early adopters pointed out a side effect of how Vite+ installs runtimes:

The one thing I've noticed since installing Vite+ is that it puts everything into its own folders so debugging and finding where things are installed is a bit of a nightmare

Reddit user, early Vite+ adopter

VoidZero responded confirming the design decision:

Oh yes. That's for easier switching and separation.

VoidZero, in a Reddit reply

What's still missing

VoidZero itself is explicit: 1.0 is a stability milestone, not a finished product. Remote caching, deeper diagnostics for monorepos, and new vp release and vp docs commands are planned for future releases.

For teams already running Vite in production in Brazil, the practical calculation is now different: adopting Vite+ means giving up choosing each piece of the frontend stack individually, trading it for a single update point and CI commands already set up for GitHub and GitLab. Automatic migration helps with tsup projects, but VoidZero itself stresses that teams with large codebases should read the guide before running the command in production, and that the move is still recent enough that there's no guaranteed shortcut for every scenario.

Translated from the Brazilian Portuguese original · Read the original