API changes, 3.4 through 3.6.0-beta.17
Citations: official release blog posts and the vuejs/core changelog. For every 3.6 pre-release detail, the source of record is CHANGELOG.md on the minor branch.
3.6 line (through beta.17)
- NEW (experimental):
createVaporApp(),createVaporSSRApp(),vaporInteropPlugin,defineVaporComponent(),defineVaporAsyncComponent(),defineVaporCustomElement(),defineVaporSSRCustomElement(),isVaporComponent(),<script setup vapor>. All exported from the mainvueentry (dist/vue.d.ts:4-5). See Vapor Mode. - NEW:
renderEffect(), Vapor runtime helpers (delegate,on,createFor,createIf,applyVShow, model appliers), and Vapor built-ins (VaporTransition,VaporKeepAlive,VaporTeleport,VaporSlot); visible in the export list ofdist/vue.runtime-with-vapor.esm-browser.prod.js. - Changed:
@vue/reactivityrebuilt on alien-signals; better performance and memory, no API changes (rc.1 notes). - NEW in beta.11: template compiler resolves slot prop bindings as components (#13573).
- NEW in beta.11: static template hydration fast path (#14752).
- NEW in beta.15:
compilerOptions.eventDelegationdisables Vapor event delegation (#14924). Removed again in rc.2 in favor of the opt-in.delegatemodifier (rc.2 notes). - Beta.11 to beta.17 otherwise consist of Vapor compiler/runtime stabilization, HMR and custom element fixes (beta.17 entry).
3.5 (release blog)
- NEW
useId(): stable SSR/client-unique IDs for forms and accessibility. - NEW
useTemplateRef(key): preferred over name-matched plain refs; supports dynamic ref IDs. - NEW
onWatcherCleanup(fn): cleanup insidewatch/watchEffectcallbacks; callable from nested functions, unlike theonCleanupparameter. - NEW lazy hydration:
hydrateOnVisible(),hydrateOnIdle(),hydrateOnInteraction(),hydrateOnMediaQuery()passed asdefineAsyncComponent({ hydrate }). - STABLE reactive props destructure:
const { count = 0 } = defineProps<{ count?: number }>()replaceswithDefaults. - NEW
<Teleport defer>: mounts after the current render cycle so the target can be rendered by the same tree. - NEW
data-allow-mismatchattribute suppresses hydration mismatch warnings. - NEW
useHost()/useShadowRoot()for custom elements.
3.4 (release blog)
- STABLE
defineModel(): declares the prop and returns a mutable ref; replaces manualdefineProps+emit('update:modelValue'). - NEW
v-bindsame-name shorthand::idfor:id="id". - BREAKING: Reactivity Transform (
$ref,$computed,$()) removed. Migrate to plain APIs or Vue Macros. - BREAKING:
@vnodeXXXlisteners are now a compiler error; use@vue:mountedetc. - BREAKING: global
JSXnamespace no longer registered; setjsxImportSource: "vue"or importvue/jsx. - BREAKING:
app.config.unwrapInjectedRefremoved;inject()always unwraps refs. - BREAKING:
v-isdirective removed; use the specialis="vue:Name"prop. - Perf:
watchcallbacks now trigger only once per flush, and computed properties trigger effects only when their value reference changes.