What Is New in Vue 3.6
| Category | Highlights |
|---|---|
| New Features | Slot prop bindings resolved as components, improved Vapor mode interop, static template hydration fast path |
| Improvements | Major Vapor mode stabilization, enhanced hydration reliability, extensive tree-shaking and performance optimizations |
| Bug Fixes | Hundreds of fixes focused on Vapor runtime, hydration edge cases, KeepAlive, Teleport, Transitions, and VDOM interop |
| Breaking Changes | None reported in current beta |
What are the biggest improvements in Vue 3.6 Vapor mode?
Vue 3.6 brings significant stabilization and maturation to Vapor mode, the new compilation strategy that eliminates Virtual DOM overhead for better runtime performance and smaller bundle sizes. In practice, teams adopting Vapor for performance-critical sections are seeing reduced memory usage and faster updates, especially in large lists and complex component trees.
The beta phase has focused heavily on reliability:
- Comprehensive hydration fixes for multi-root components, async setups, slots, and fragments
- Better VDOM interop for mixing Vapor and classic components
- Improved handling of advanced patterns like KeepAlive + Teleport, TransitionGroup with v-for, and dynamic slots
<script setup vapor>
// Vapor mode enabled per-component
import { ref } from 'vue'
const count = ref(0)
</script>
How does Vue 3.6 improve hydration and SSR compatibility?
Vue 3.6 delivers a robust set of hydration improvements that make Vapor mode far more production-ready for SSR applications. The new static template hydration fast path dramatically speeds up initial rendering of mostly-static content.
Key fixes address common pain points:
- Proper handling of empty slots, v-if branches, and fragment anchors
- Fixed edge cases with Teleport, KeepAlive, and Transition components during hydration
- Improved cursor management and anchor preservation for complex nested structures
This matters if you use Nuxt or other SSR frameworks—Vapor components now hydrate more reliably with fewer mismatches.
What performance optimizations were added in Vue 3.6?
Vue 3.6 introduces targeted optimizations throughout the Vapor runtime that reduce overhead in real-world scenarios. Most teams will benefit from smaller bundles thanks to aggressive tree-shaking of unused paths for slots, Teleports, Transitions, KeepAlive, and Suspense.
- Skip unchanged primitive dynamic props and stabilize sources
- Optimized hydration cursor advancement
- Avoid unnecessary key propagation in dynamic fragments
- Cached hydrated static template snapshots
In practice, these changes shine in dashboards and data-heavy UIs where reactivity updates are frequent but many props remain stable.
How does VDOM interop work in Vue 3.6 Vapor components?
Improved interop allows gradual adoption by mixing Vapor and classic VDOM components. Vue 3.6 fixes numerous alignment issues with mount/update/unmount hook ordering, slot handling, and context passing between the two modes.
Watch out for edge cases with third-party component libraries that rely on deep VDOM assumptions. The recommendation remains to keep distinct regions where possible, but interop is now solid enough for many mixed-app scenarios.
import { createApp, vaporInteropPlugin } from 'vue'
createApp(App)
.use(vaporInteropPlugin)
.mount('#app')
Are there any new developer-facing features in Vue 3.6?
Yes—compiler improvements now resolve slot prop bindings as components, closing long-standing gaps. TypeScript support for defineVaporComponent generics with runtime props has been enhanced, and several compiler edge cases around templates and expressions were resolved.
These changes reduce friction when building reusable Vapor components that need to expose flexible slot APIs.
FAQ
Is Vue 3.6 ready for production use?
Vue 3.6 is currently in beta with active development. Use it for testing and non-critical features while monitoring the changelog for final release.
How do I enable Vapor mode in a component?
Add the vapor attribute to your script setup tag: <script setup vapor>.
Does Vue 3.6 introduce any breaking changes?
No major breaking changes are listed in the current betas, but Vapor mode itself represents a new opt-in paradigm with its own compatibility subset.
Will existing Vue 3.5 apps continue to work?
Yes, classic VDOM mode remains fully supported and unchanged. Vapor mode is completely opt-in.
What is the main benefit of switching to Vapor mode?
Significantly smaller bundle sizes and improved runtime performance by bypassing Virtual DOM for supported components.
How do I mix Vapor and VDOM components?
Install the vaporInteropPlugin when creating your app with createApp to enable bidirectional interop.