Vue 3.6 RC1 Ships: Vapor Mode Ditches the Virtual DOM and Matches Solid's Speed

On July 18, 2026, the Vue core team shipped Vue 3.6.0-rc.1, the first release candidate for Vue 3.6. The headline feature: Vapor Mode is now declared production-complete — stable enough to test in staging against real workloads for the first time.

What Vapor Mode Actually Does

Vapor Mode is an opt-in, per-component compilation strategy. Instead of generating a virtual DOM tree that Vue diffed and patched on every update, the compiler now outputs imperative DOM operations directly. Each reactive binding maps to a specific DOM mutation — no intermediate representation, no diffing pass.

Activating it requires one attribute in any Single-File Component:

<script setup vapor>

No application-wide migration is required. You can adopt Vapor Mode component by component, mixing it freely with standard Vue components in the same app. The trade-off: Vapor Mode requires the Composition API, and a handful of advanced APIs — getCurrentInstance(), v-memo, element lifecycle events, and global properties — are not yet supported.

The Numbers

The official release notes state that Vapor Mode "has demonstrated the same level of performance as Solid and Svelte 5 in third-party benchmarks." Third-party analyses fill in the specifics: mounting 100,000 components drops from roughly 300ms to around 100ms; peak memory during complex re-renders falls approximately 22% because there are no VNode allocations. Bundle size for Vapor-only apps shrinks by 20–50% depending on the component mix.

For Vapor Mode to reach Solid's benchmark bracket is a meaningful result. Solid's absence of a virtual DOM has been its defining edge over React and Vue for several years. Vue now sits in the same tier without asking developers to abandon the SFC authoring model they already know.

alien-signals: The Reactivity Rewrite Underneath

Vue 3.6 ships alien-signals as the new foundation for @vue/reactivity. Developed by Johnson Chu — who previously optimized Vue 3.4's reactivity engine — alien-signals replaces Set-based dependency tracking with doubly linked lists and uses a push-pull algorithm: when a reactive signal changes, a lightweight "dirty" flag propagates to dependents without triggering re-computation. Computed values only recalculate when actually read.

The practical result: about 14% less memory per reactive ref and roughly 20% faster computed recalculation overhead. XState has already adopted alien-signals independently, which suggests the library has broader standing beyond Vue itself.

Where Things Stand

RC1 is stable enough for staging, not yet for production. The team is watching for edge cases before a final stable release; no target date has been announced. If you maintain a Vue app, now is a good time to run RC1 against your staging environment and report issues — especially around Vapor Mode's unsupported API surface, which is the most likely source of surprises.

Vue has spent three years watching Solid and Svelte 5 hold a meaningful performance lead. With 3.6, that gap closes — without asking developers to rewrite their apps from scratch.