# Vue 3.6's Release Candidate Makes the Virtual DOM Optional

Page: https://hirantha.me/blog/vue-36s-release-candidate-makes-the-virtual-dom-optional
Published: 2026-08-04
Written by: hirantha.me Newsroom (AI-generated). An AI model wrote this from the sources listed below; how it is made: https://hirantha.me/about/newsroom
Topics: vuejs, vapor-mode, javascript-frameworks, web-performance, virtual-dom

> Vue 3.6 has reached release candidate with Vapor Mode feature-complete, letting components skip the virtual DOM entirely without a full app rewrite.

## What ships in the release candidate

Vue's core team pushed 3.6.0-rc.1 on July 18, 2026, marking Vapor Mode as feature-complete, and followed it four days later with rc.2. A stable 3.6 release is expected in autumn 2026. The headline feature has been years in the making: Evan You, Vue's creator, first previewed the idea publicly at Vue.js Nation in 2025, and it now lands as an opt-in compiler mode rather than a rewrite of the framework.

Every version of Vue up to this point, like React and most component frameworks, renders by building a virtual DOM: an in-memory representation of the page that gets diffed against the previous version so the framework knows what actually changed before touching the real browser DOM. The technique became standard in the mid-2010s because comparing lightweight in-memory objects is usually cheaper than touching the browser's actual document structure directly for every change, but that diffing step is still extra work happening on every single update, and it scales with how large and deeply nested a component tree gets. Vapor Mode removes it. Components marked for Vapor compile straight to imperative DOM instructions, so when a piece of state changes, Vue updates exactly the DOM nodes tied to that state and nothing else, with no comparison step in between.

## Why it's opt-in, not a rewrite

A component switches into Vapor Mode with `<script setup vapor>`, and Vapor and standard virtual-DOM components can sit in the same application without extra wiring, calling each other normally. That matters because Vapor Mode doesn't support everything Vue does today: it works only with `<script setup>` single-file components, not the older Options API, and anything that depends on virtual DOM nodes or a component's public instance proxy isn't available inside a Vapor component. In practice, that means existing Composition API logic can move over largely unchanged, but code built around VNode manipulation or instance introspection can't yet make the jump.

The Vue team has described the goal explicitly: make the virtual DOM optional, not obsolete. Teams can convert a handful of performance-sensitive components, leave the rest of the app as it is, and revert individual components later if something doesn't work, rather than committing to an all-or-nothing migration. That reversibility is a deliberate contrast with how most frameworks have historically handled a rendering-model change: usually it means a new project or a rewrite, not an incremental switch inside an app already in production.

## The performance case

The published numbers are steep. Vue's own benchmarks describe renders up to 97% faster in extreme cases, with one demo mounting 100,000 components in roughly 100 milliseconds, and bundle sizes for Vapor-only components shrinking 20 to 50%. Third-party benchmarking has put Vapor's rendering speed in the same range as Solid.js and Svelte 5, two frameworks that were designed without a virtual DOM from the start rather than having one bolted on as an option.

Even apps that never touch Vapor Mode get something out of 3.6: the `@vue/reactivity` package underneath all of Vue, Vapor or not, has been rewritten on top of the alien-signals library. Signals are a way of tracking dependencies between reactive values so that only the code that actually reads a given value re-runs when it changes, rather than re-checking a wider tree of possibly-affected code; the Vue team says the rewrite lowers overhead and scales better in component trees with many nested reactive values, along with using less memory generally. That change ships to every 3.6 app automatically, with no opt-in required.

## What it means in practice

For teams already on Vue 3's Composition API, the release candidate is a reasonable point to start testing Vapor Mode against a few isolated, render-heavy components, such as large lists or data grids, rather than converting a whole application. Anything still built on the Options API, or on code that pokes at VNodes or component instances directly, won't be eligible for Vapor yet and should wait for later framework guidance on a migration path. Because 3.6 is still in release candidate status, production use should wait for the stable release, but the reactivity rewrite alone is a reason to test the RC early: it's a free improvement that doesn't require touching a single component.

## Questions

**What is Vapor Mode in Vue 3.6?**
It's an opt-in compiler mode that skips the virtual DOM, compiling templates directly to imperative DOM updates so a state change only touches the specific DOM nodes it affects.

**Do I have to rewrite my whole app to use it?**
No. Vapor Mode is applied per component and works alongside regular virtual-DOM Vue components in the same app, so you can convert individual components and revert them later if needed.

**When is Vue 3.6 stable coming out?**
The release candidate shipped in July 2026, with a stable release expected in autumn 2026.

**Will my Options API code work with Vapor Mode?**
Not yet. Vapor Mode currently only supports script setup single-file components; Options API components and anything relying on VNodes or the component instance proxy are not supported.

**Do I get any benefit if I don't use Vapor Mode at all?**
Yes. Vue 3.6's reactivity system was rewritten on the alien-signals library, which reduces overhead and memory use for every app on 3.6, whether or not it adopts Vapor components.

## Sources

- [Vue 3.6 RC: Vapor Mode complete - no virtual DOM](https://forkbyte.nl/en/blog/vue-36-vapor-mode-rc), Forkbyte
- [Releases · vuejs/core](https://github.com/vuejs/core/releases), GitHub
- [Vue 3.6 Vapor Mode Hits Feature-Complete](https://blog.imseankim.com/vue-3-6-beta-vapor-mode-virtual-dom-solidjs-svelte-feature-complete-2026/), blog.imseankim.com
