# [3.6.0-rc.14](https://github.com/vuejs/core/compare/v3.6.0-rc.13...v3.6.0-rc.14) (2026-10-30) ### Bug Fixes * **compiler-vapor:** avoid fragment flags for v-once dynamic components ([47d0ec9](https://github.com/vuejs/core/commit/47d0ec90aedc2082d44fce098eca830abec978a1)) * **compiler-vapor:** mark the root node as transformed ([#16003](https://github.com/vuejs/core/issues/16003)) ([0b96ce2](https://github.com/vuejs/core/commit/0b96ce2ba8fbe41901f7c6b3e33cd988bc3e95cc)) * **compiler-vapor:** pass the key of as a slot prop like vdom ([#16045](https://github.com/vuejs/core/issues/16045)) ([1bc7715](https://github.com/vuejs/core/commit/1bc77158d67a4c21813475c9510524fe8ce71176)) * **compiler-vapor:** reserve binding names ending in multi-digit numbers for generated vars ([#16025](https://github.com/vuejs/core/issues/16025)) ([58652b7](https://github.com/vuejs/core/commit/58652b74f511895d97ad9ccef847978d125f43ef)) * **compiler-vapor:** skip inline asset resolve for removed components ([#16046](https://github.com/vuejs/core/issues/16046)) ([fc16cc7](https://github.com/vuejs/core/commit/fc16cc734056540847ec33983c09347bc0201851)) * **compiler-vapor:** update slot prop component tags when the slot prop changes ([8809141](https://github.com/vuejs/core/commit/88091419838470fb90dd41043e2e95d3c769241f)) * **runtime-vapor:** finish a block as a client render after a hydration root mismatch ([#16044](https://github.com/vuejs/core/issues/16044)) ([d21a40e](https://github.com/vuejs/core/commit/d21a40e139033051f61c1c61096d4e5047d9d955)) * **runtime-vapor:** hydrate a v-if chain by the branch the server rendered ([#16067](https://github.com/vuejs/core/issues/16067)) ([d86ea3e](https://github.com/vuejs/core/commit/d86ea3eec299cfb6656b13ec1af94fd23baf0ac5)) * **runtime-vapor:** recover a mismatched static template root during hydration ([#16049](https://github.com/vuejs/core/issues/16049)) ([a3e94c5](https://github.com/vuejs/core/commit/a3e94c59b39147d56660ffd7ad83a5b59eaddc81)) * **runtime-vapor:** treat a server range as one unit during hydration mismatch recovery ([#16052](https://github.com/vuejs/core/issues/16052)) ([2495354](https://github.com/vuejs/core/commit/2495354080267ab3162fa1e5389df12f1f6e6c47)) * **vapor:** normalize slot props at compile time ([#16059](https://github.com/vuejs/core/issues/16059)) ([84d04aa](https://github.com/vuejs/core/commit/84d04aac699ec3780747a0a41b34582bcf81d224)) ### Features * **runtime-vapor:** add devtools component hooks ([#16027](https://github.com/vuejs/core/issues/16027)) ([f3714a5](https://github.com/vuejs/core/commit/f3714a5f1c3c22fefa481b2eedb10417248d928a)) ### Performance Improvements * **compiler-core:** skip re-parsing simple identifiers in isMemberExpression / isFnExpression ([#16005](https://github.com/vuejs/core/issues/16005)) ([4dc8fe4](https://github.com/vuejs/core/commit/4dc8fe46522b988c881d64234d11fa32b6e1d506)) * **compiler-vapor:** bind effect ids once per reactive effect group ([#16022](https://github.com/vuejs/core/issues/16022)) ([e4da4e8](https://github.com/vuejs/core/commit/e4da4e8091b2a95cc363aa6be0ae9061b3509ae0)) * **compiler-vapor:** cache the v-if chain head and tail while transforming ([#16008](https://github.com/vuejs/core/issues/16008)) ([5807240](https://github.com/vuejs/core/commit/5807240e8109a47463639cbd665dae0e301e000c)) * **compiler-vapor:** construct child transform contexts instead of copying the parent ([#16002](https://github.com/vuejs/core/issues/16002)) ([bc0aabf](https://github.com/vuejs/core/commit/bc0aabfe13ee6d2ad1a7c2a5d6a4d0648e886e68)) * **compiler-vapor:** index returned roots per block ([#16021](https://github.com/vuejs/core/issues/16021)) ([b086140](https://github.com/vuejs/core/commit/b086140b0de64c8df36a3d2e957a79c7c7e02587)) * **compiler-vapor:** misc transform and codegen allocation trims ([#16024](https://github.com/vuejs/core/issues/16024)) ([de7a4dc](https://github.com/vuejs/core/commit/de7a4dcd34cc916224767712718e0f82ba79d37b)) * **compiler-vapor:** nest code fragments instead of spreading them ([#16032](https://github.com/vuejs/core/issues/16032)) ([e29122c](https://github.com/vuejs/core/commit/e29122c1053097d9aadb2c78591ebd05a3bda381)) * **compiler-vapor:** resolve object v-bind props once per directive ([#16020](https://github.com/vuejs/core/issues/16020)) ([ce9411f](https://github.com/vuejs/core/commit/ce9411f12166cbcc6ce1c113babc899aab713d79)) * **compiler-vapor:** short-circuit v-for selector matching on non-key operands ([#16007](https://github.com/vuejs/core/issues/16007)) ([dad5c13](https://github.com/vuejs/core/commit/dad5c131cd5cf3af1c788ccf93a3a815703ac09c)) * **runtime-vapor:** locate a slot boundary's close lazily during hydration ([#16039](https://github.com/vuejs/core/issues/16039)) ([9297155](https://github.com/vuejs/core/commit/92971551dc81bbff6db3f3e14d2a83458ac4e0de)) * **runtime-vapor:** locate wrapped v-for row closes lazily during hydration ([#16038](https://github.com/vuejs/core/issues/16038)) ([2100ef9](https://github.com/vuejs/core/commit/2100ef9d7c012cd7679ed20379e73c13e8b325b7)) * **runtime-vapor:** read nodeType and comment data once in hydration traversal ([#16034](https://github.com/vuejs/core/issues/16034)) ([177e72b](https://github.com/vuejs/core/commit/177e72b5fe749f2cbcbecf015cb3aa1f71784847)) # [3.6.0-rc.13](https://github.com/vuejs/core/compare/v3.6.0-rc.12...v3.6.0-rc.13) (2026-10-23) ### Bug Fixes * **compiler-vapor:** add key to object shorthand of aliases with default or computed key ([#15953](https://github.com/vuejs/core/issues/15953)) ([af9b86c](https://github.com/vuejs/core/commit/af9b86c870e58edfae77def786b1a456a5909b2c)) * **compiler-vapor:** align v-once on v-else-if chains with vdom ([#15966](https://github.com/vuejs/core/issues/15966)) ([072e5f0](https://github.com/vuejs/core/commit/072e5f0259e1ce1daa13175e0b29a407568ca2d9)) * **compiler-vapor:** compile long v-else-if chains to a flat createIfChain ([#15965](https://github.com/vuejs/core/issues/15965)) ([7fad6c5](https://github.com/vuejs/core/commit/7fad6c5ee1e518635535d15e1801c8b97ccb61f0)) * **compiler-vapor:** create breakout elements in foreign content and text in table parts imperatively ([fd157a6](https://github.com/vuejs/core/commit/fd157a6edd55718d0e3e215824419feb67acddeb)) * **compiler-vapor:** give a template of its own to a descendant the parser would close an ancestor at ([e489f2b](https://github.com/vuejs/core/commit/e489f2b268b61975e37418fe0bd46f5e20adf90c)) * **compiler-vapor:** keep the end tag of a special element under a parent whose end tag cannot close it ([d38ed24](https://github.com/vuejs/core/commit/d38ed248cb9889d912bc52bf6c1e9aeb586816ab)) * **compiler-vapor:** mark the child of a non-root Transition / KeepAlive as single root ([#15988](https://github.com/vuejs/core/issues/15988)) ([2f366ae](https://github.com/vuejs/core/commit/2f366ae83607caad86b7ee4e1711c151f0fb5276)) * **runtime-core:** restore the default 200ms delay of async loading components ([#15950](https://github.com/vuejs/core/issues/15950)) ([0096402](https://github.com/vuejs/core/commit/00964028736de5e3810d1b8894f53b751b5f8cae)) * **runtime-core:** skip the out-in re-render of a transition unmounted mid-leave ([#15919](https://github.com/vuejs/core/issues/15919)) ([37c03b0](https://github.com/vuejs/core/commit/37c03b0443397ab28322215dd23aa21eabb6186b)) * **runtime-vapor:** apply transition hooks to a child's root rendered after its async setup ([#15907](https://github.com/vuejs/core/issues/15907)) ([2e9d110](https://github.com/vuejs/core/commit/2e9d110d8ce90d38f2fd45e2c9648ffb01644997)) * **runtime-vapor:** don't make out-in wait for a branch that left to nothing ([#15913](https://github.com/vuejs/core/issues/15913)) ([b6efd2b](https://github.com/vuejs/core/commit/b6efd2b45588326cb793cbf21542feb40ed20687)) * **runtime-vapor:** enter a kept-alive vdom child under the hooks of the switch ([#15954](https://github.com/vuejs/core/issues/15954)) ([e30bd46](https://github.com/vuejs/core/commit/e30bd46472de4f0490f0f985105ff046a28aece7)) * **runtime-vapor:** flush custom element component creation with its mount ([#15991](https://github.com/vuejs/core/issues/15991)) ([953933a](https://github.com/vuejs/core/commit/953933a01c8d3faee943c8fd0b24e97a0cb5e804)) * **runtime-vapor:** format number inputs on change ([#15974](https://github.com/vuejs/core/issues/15974)) ([9453008](https://github.com/vuejs/core/commit/9453008ad16be164a6841404cc8bb372d4218a1c)) * **runtime-vapor:** hold back the updates of a hydrated root chain over pending async setup ([#15927](https://github.com/vuejs/core/issues/15927)) ([68ef3e9](https://github.com/vuejs/core/commit/68ef3e9214ae41d93888f2a4117db74d8bba388d)) * **runtime-vapor:** hold back updates of a component whose root is pending async setup ([#15925](https://github.com/vuejs/core/issues/15925)) ([35a439e](https://github.com/vuejs/core/commit/35a439e154db05b5965ea10b17fd24c096c9d499)) * **runtime-vapor:** keep a slot branch leaving under a vdom transition's relayed hooks ([#15916](https://github.com/vuejs/core/issues/15916)) ([9c88792](https://github.com/vuejs/core/commit/9c8879236d1ba6dafd3fe4f6e11974833ca43bad)) * **runtime-vapor:** keep a v-show hidden root hidden through its structural leave ([#15951](https://github.com/vuejs/core/issues/15951)) ([7c1a29f](https://github.com/vuejs/core/commit/7c1a29f4cf63e16e79867f85cbe068349a8feacb)) * **runtime-vapor:** keep an out-in leave running when its transition unmounts ([#15923](https://github.com/vuejs/core/issues/15923)) ([549ea4c](https://github.com/vuejs/core/commit/549ea4cde8478cb60786e26c8955d689632be5e1)) * **runtime-vapor:** keep refs in a v-for source as row items ([df4e86c](https://github.com/vuejs/core/commit/df4e86cedf5d04bf0ebbb6cb1b7af1babb1f6008)) * **runtime-vapor:** keep the in-out leave a slot fallback's pending enter holds ([#15949](https://github.com/vuejs/core/issues/15949)) ([ee63b75](https://github.com/vuejs/core/commit/ee63b75b5a0bad5a3b91b437e7e6442ef19db4f6)) * **runtime-vapor:** key the roots of a keyed v-for row the same way on collect and branch re-render ([#15968](https://github.com/vuejs/core/issues/15968)) ([e195bf4](https://github.com/vuejs/core/commit/e195bf4f6a8624986021195ead441ed6139809d5)) * **runtime-vapor:** leave held slot content unmounted when its outlet moves ([#15901](https://github.com/vuejs/core/issues/15901)) ([f19af6c](https://github.com/vuejs/core/commit/f19af6c5dde87e3330c5dc220288a29b6d8a1cce)) * **runtime-vapor:** measure only the outermost render effect run of a component ([#15993](https://github.com/vuejs/core/issues/15993)) ([3bdbdd3](https://github.com/vuejs/core/commit/3bdbdd306e24090f93cc570e4788042f9fba71a0)) * **runtime-vapor:** normalize line breaks when hydrating text ([#15906](https://github.com/vuejs/core/issues/15906)) ([4c5ff02](https://github.com/vuejs/core/commit/4c5ff022a41ae91223d3cd5cdaaca25361037043)) * **runtime-vapor:** relay vdom transition hooks to a child's root rendered after its async setup ([#15908](https://github.com/vuejs/core/issues/15908)) ([1f867d9](https://github.com/vuejs/core/commit/1f867d9c6bdd7666b9b21a1488a0d79d9fa9a1d6)) * **runtime-vapor:** report errors of an out-in branch rendered from the leave to the error handler ([#15941](https://github.com/vuejs/core/issues/15941)) ([d040e4a](https://github.com/vuejs/core/commit/d040e4ad1f53bcc18c1771aa62193890487d7e74)) * **runtime-vapor:** resolve interop fallback transition hooks for the vnode that mounts ([#15903](https://github.com/vuejs/core/issues/15903)) ([931497f](https://github.com/vuejs/core/commit/931497fa830291c5897e3088d3ed38c734e589f1)) * **runtime-vapor:** settle the enclosing outlet after an out-in branch resumes from its leave ([#15942](https://github.com/vuejs/core/issues/15942)) ([5a53efc](https://github.com/vuejs/core/commit/5a53efce7c5eba458f34a8ec121fb1443ffe07e2)) * **runtime-vapor:** skip the hydration appear of a Transition child rendering its root later ([#15911](https://github.com/vuejs/core/issues/15911)) ([e291103](https://github.com/vuejs/core/commit/e291103616de6ad7984f57bbb72cdaed3c5249a0)) * **runtime-vapor:** switch sibling v-if roots of slot content as one transition child ([#15945](https://github.com/vuejs/core/issues/15945)) ([bc4c50f](https://github.com/vuejs/core/commit/bc4c50ff5e39c85835a824fda20870149d62c3c3)) * **runtime-vapor:** warn when a component was made reactive ([0c2ad89](https://github.com/vuejs/core/commit/0c2ad895267b46a0fd6dfbb6eff884683399dac0)) * **vapor:** fall through cloneVNode extras to the vapor slot content root ([#15989](https://github.com/vuejs/core/issues/15989)) ([fb1fb19](https://github.com/vuejs/core/commit/fb1fb193648da671d00cad31fd2d95bf654be106)), closes [#15881](https://github.com/vuejs/core/issues/15881) * **vapor:** keep the branch key of vdom conditional slots ([#15992](https://github.com/vuejs/core/issues/15992)) ([d940919](https://github.com/vuejs/core/commit/d940919c7021a9ce55e4b8911a0ab1c6a66005ed)) ### Features * **runtime-vapor:** transition the rows of a vapor slot as children of a vdom TransitionGroup ([#15963](https://github.com/vuejs/core/issues/15963)) ([b426b34](https://github.com/vuejs/core/commit/b426b34a35db7e017ba3e6c7a3b98cb6da464c67)) ### Performance Improvements * **runtime-core:** tree-shake vapor interop code when vaporInteropPlugin is not used ([#15990](https://github.com/vuejs/core/issues/15990)) ([9f97cb6](https://github.com/vuejs/core/commit/9f97cb6cde4ab5508ccfcb1865d2880fb4a0c221)) * **runtime-vapor:** avoid redundant ref checks for v-for items ([ce9b91b](https://github.com/vuejs/core/commit/ce9b91bda372e118f8af3e05ef2ba9ac6f8bf0d6)) * **runtime-vapor:** tree-shake Transition, KeepAlive and Suspense interop code when the components are not use ([#15994](https://github.com/vuejs/core/issues/15994)) ([abab35f](https://github.com/vuejs/core/commit/abab35fe5d5455deb50e302342ba83c385bc3152)) # [3.6.0-rc.12](https://github.com/vuejs/core/compare/v3.6.0-rc.11...v3.6.0-rc.12) (2026-10-16) ### Bug Fixes * **reactivity:** preserve watcher cleanups until callback reruns ([#15766](https://github.com/vuejs/core/issues/15766)) ([14cfe0f](https://github.com/vuejs/core/commit/14cfe0f1833eac08e9ec126d676ab67d1e6ff1e8)), closes [#15765](https://github.com/vuejs/core/issues/15765) * **runtime-vapor:** account for ancestor movement in nested transition groups ([#15865](https://github.com/vuejs/core/issues/15865)) ([44c2cc7](https://github.com/vuejs/core/commit/44c2cc7a1bff152b45fa4b2d2cc6b0339a707dda)) * **runtime-vapor:** defer interop fragment removal until leave completes ([#15866](https://github.com/vuejs/core/issues/15866)) ([ca2896a](https://github.com/vuejs/core/commit/ca2896aa5524a0b0a983e216480ec7d486f4babc)) * **runtime-vapor:** finish a deactivation leave where the element is after a KeepAlive move ([#15846](https://github.com/vuejs/core/issues/15846)) ([e5a56b0](https://github.com/vuejs/core/commit/e5a56b066c9b034815745867ec5d2546b808cbbe)) * **runtime-vapor:** push warning context during render effect updates ([#15874](https://github.com/vuejs/core/issues/15874)) ([34b6f08](https://github.com/vuejs/core/commit/34b6f089b7cefba5ab1589f21fa54acae495cb0a)) * **runtime-vapor:** remove block node from its actual parentNode on unmount ([#15867](https://github.com/vuejs/core/issues/15867)) ([8d0e8bd](https://github.com/vuejs/core/commit/8d0e8bd0f121e5900065989231b5e880e52653ae)), closes [#15861](https://github.com/vuejs/core/issues/15861) * **runtime-vapor:** render nothing for an invalid v-for range in production ([#15863](https://github.com/vuejs/core/issues/15863)) ([6af5d97](https://github.com/vuejs/core/commit/6af5d972f034be32c77c75940557b37751280335)) * **runtime-vapor:** render the deferred out-in branch where the fragment is after a KeepAlive move ([#15844](https://github.com/vuejs/core/issues/15844)) ([ae68315](https://github.com/vuejs/core/commit/ae683152bee03c7991b2aa43f31fe777b7e45d15)) * **runtime-vapor:** resolve a slot fallback at once when its content leaves empty under out-in ([#15890](https://github.com/vuejs/core/issues/15890)) ([c1091d4](https://github.com/vuejs/core/commit/c1091d4b317ac2fc2a8bc556ac7b0fb10e5a18e5)) * **runtime-vapor:** run an in-out leave that no entering element claims ([#15849](https://github.com/vuejs/core/issues/15849)) ([e3843e5](https://github.com/vuejs/core/commit/e3843e5f80b56d69c9029154b0eb91194ad3b287)) * **runtime-vapor:** start a vapor slot vnode in a vdom outlet on a node of its own ([#15850](https://github.com/vuejs/core/issues/15850)) ([2d1282a](https://github.com/vuejs/core/commit/2d1282ad1955727edb65ce795997e8f8b51faf09)) * **runtime-vapor:** start the in-out leave of a kept-alive branch after the incoming enter ([#15895](https://github.com/vuejs/core/issues/15895)) ([18837d1](https://github.com/vuejs/core/commit/18837d11eacdebbe84c376bed721459c78c7a30e)) * **runtime-vapor:** support hasOwnProperty on props, attrs and slot props ([#15841](https://github.com/vuejs/core/issues/15841)) ([d47d313](https://github.com/vuejs/core/commit/d47d31301f56e65fded4bb7417a307098b595ffa)), closes [#15840](https://github.com/vuejs/core/issues/15840) * **runtime-vapor:** treat slot outlet branch switches under Transition as structural ([#15897](https://github.com/vuejs/core/issues/15897)) ([b5a5a1c](https://github.com/vuejs/core/commit/b5a5a1c0bca978040a7f45e46652e42ca9425183)) * **vapor:** apply destructure defaults at their own level ([#15860](https://github.com/vuejs/core/issues/15860)) ([6a04898](https://github.com/vuejs/core/commit/6a04898fc8ff332f444ff11553dba54e0021194c)) * **vapor:** preserve keyed slot outlet identity ([d7c0ab5](https://github.com/vuejs/core/commit/d7c0ab5a1029f87c535f0887897058d522c34757)) * **vapor:** render the children of a dynamic native element like a static one in ssr ([#15852](https://github.com/vuejs/core/issues/15852)) ([08b441e](https://github.com/vuejs/core/commit/08b441ef59405182873ca7e9922649683d716c54)), closes [#15845](https://github.com/vuejs/core/issues/15845) * **vapor:** return bindings for render in normal script in vapor inline mode ([#15780](https://github.com/vuejs/core/issues/15780)) ([0434cd4](https://github.com/vuejs/core/commit/0434cd463c98de187bff41058aeae03366daa1da)) ### Performance Improvements * **runtime-vapor:** tree-shake hydration lookups of dom node helpers in client bundles ([#15875](https://github.com/vuejs/core/issues/15875)) ([9af0ab8](https://github.com/vuejs/core/commit/9af0ab887168a698f47116dcb15073b72c604ca2)) # [3.6.0-rc.11](https://github.com/vuejs/core/compare/v3.6.0-rc.10...v3.6.0-rc.11) (2026-10-10) ### Bug Fixes * **compiler-sfc:** reject vapor scripts without script setup ([#15790](https://github.com/vuejs/core/issues/15790)) ([fedca24](https://github.com/vuejs/core/commit/fedca247c5509bb679370f4a6cbbc00765f1181b)) * **compiler-vapor:** align setup component lookup order with vdom ([#15786](https://github.com/vuejs/core/issues/15786)) ([7457d2b](https://github.com/vuejs/core/commit/7457d2b3e9ad9f3e40cb478461a49c3588723d59)) * **compiler-vapor:** assign to the member target when v-model object has a TS wrapper ([#15744](https://github.com/vuejs/core/issues/15744)) ([fe53ea4](https://github.com/vuejs/core/commit/fe53ea438b28ad0a1f103af78f853e1c456ab6ea)) * **compiler-vapor:** avoid shadowing _ctx with a cached identifier ([#15763](https://github.com/vuejs/core/issues/15763)) ([44e5092](https://github.com/vuejs/core/commit/44e5092c89a31f4a64b0ca683ec9795c92f12787)) * **compiler-vapor:** declare merged listeners ahead of the render effect ([#15729](https://github.com/vuejs/core/issues/15729)) ([6924e98](https://github.com/vuejs/core/commit/6924e98a1fee7542838b7d0c745facab40d8b046)), closes [#15725](https://github.com/vuejs/core/issues/15725) * **compiler-vapor:** drop whitespace between v-if branches ([0767ba1](https://github.com/vuejs/core/commit/0767ba1e0af5465134366d059ad340a0f012d981)) * **compiler-vapor:** generate valid code for an empty directive expression ([#15771](https://github.com/vuejs/core/issues/15771)) ([7a20552](https://github.com/vuejs/core/commit/7a20552eb59b2c6141d98917a47adf37494ccc51)) * **compiler-vapor:** handle asset url imports in component props and v-bind objects ([#15799](https://github.com/vuejs/core/issues/15799)) ([c9626f2](https://github.com/vuejs/core/commit/c9626f2b1ff410f626ced4e334be262ce4f83d4c)) * **compiler-vapor:** ignore cached member expressions nested in another one ([#15751](https://github.com/vuejs/core/issues/15751)) ([92cedd9](https://github.com/vuejs/core/commit/92cedd90bd478af893cb973b57669b346d818cce)) * **compiler-vapor:** isolate parent slots for a plain `