The Vue team has released v3.6.0-rc.2, the second release candidate for the upcoming Vue 3.6 stable release. This pre-release introduces several key improvements and fixes, focusing on performance and developer experience.
Key changes in this release:
- Reactivity performance: The
shallowRefandshallowReactiveAPIs now avoid unnecessary proxy creation when the value is already reactive-less, reducing overhead in large-scale reactive systems. - Compiler optimization: A new
v-oncecompilation strategy has been introduced forv-fordirectives, generating more efficient code by marking static iterations as constant. This can significantly reduce update costs for lists that never change. useTemplateRefenhancement: TheuseTemplateRefcomposable now supports passing arefobject directly as an argument, making it easier to share template refs across components.- Bug fix for
Suspense: Resolved an edge case where nestedSuspenseboundaries could cause incorrect fallback content to be displayed during async resolution. - TypeScript improvements: Updated type definitions for
defineComponentto better infer slots when using with generic components, reducing the need for explicit slot type annotations. - Deprecation warning for
$listeners: The$listenersproperty, already removed in Vue 3, now shows a clearer migration warning when used in Vue 2 compatibility mode.
These updates matter to developers because they directly improve runtime performance in reactive-heavy applications and offer smoother migration paths from Vue 2. The v-once optimization in loops can be a drop-in improvement for existing codebases, and the enhanced TypeScript support reduces boilerplate. As a release candidate, it is recommended for testing in non-production environments to evaluate these changes before the stable release.
Source: https://github.com/vuejs/core/releases/tag/v3.6.0-rc.2