# [3.6.0-beta.10](https://github.com/vuejs/core/compare/v3.5.32...v3.6.0-beta.10) (2026-04-13) ### Bug Fixes * **hydration:** avoid component double mount during hydration ([#14690](https://github.com/vuejs/core/issues/14690)) ([340af2c](https://github.com/vuejs/core/commit/340af2c2a6dba348412c32343f79d0442f2ba043)) * **hydration:** cleanup detached null branches at the end of owner ranges ([b0db001](https://github.com/vuejs/core/commit/b0db001f70bb1533657ff5ceef4f8ca3c3637cd3)) * **hydration:** clear inline teleport children when missing targets stop owning the main view ([1e828e4](https://github.com/vuejs/core/commit/1e828e489062d7fd35ab655eef65ad106c77c1eb)) * **hydration:** defer async multi-root hydration boundary cleanup ([55cfb3d](https://github.com/vuejs/core/commit/55cfb3d58de573634d365b3fd4c4d2d78b30bec8)) * **hydration:** defer forwarded slot fallback hydration cleanup ([1cc4870](https://github.com/vuejs/core/commit/1cc487077e1bcc564047c948bc00e425411a1a33)) * **hydration:** handle non-empty v-for over empty SSR ranges before trailing siblings ([108809a](https://github.com/vuejs/core/commit/108809a34dbf8b1ff23245b5076fe26e4d332316)) * **hydration:** keep late fragment inserts before their own hydration anchor ([59a27ef](https://github.com/vuejs/core/commit/59a27ef1f6ec4f6fec8c897c5659427d9309c371)) * **hydration:** keep lazy hydration on the async wrapper path ([d5cd4c8](https://github.com/vuejs/core/commit/d5cd4c8a587b7e41b9393f5fd1c33c696cba90f7)) * **hydration:** keep multi-root hydration cleanup inside component-owned close markers ([10325c0](https://github.com/vuejs/core/commit/10325c0ef42880be72d5433da1ca6807d18720fc)) * **hydration:** preserve teleport hydration anchors across empty ranges ([42ee3eb](https://github.com/vuejs/core/commit/42ee3ebc651d1eb549c707c0fd355e232c651200)) * **hydration:** respect text allow-mismatch during multi-root hydration cleanup ([b928e8a](https://github.com/vuejs/core/commit/b928e8ae19401c15f336a22a17fc24553013cbf2)) * **hydration:** reuse attached SSR anchors for empty dynamic fragments ([8ecf6e0](https://github.com/vuejs/core/commit/8ecf6e01b70ef11a8f1c2c5bd5ad0bc412911352)) * **hydration:** reuse next null-branch anchor during dynamic-component hydration ([df532ed](https://github.com/vuejs/core/commit/df532ed4478fb664a66f5ff9993e3e72004f68a4)) * **hydration:** scope slot boundary restoration to slot-owned close markers ([9579911](https://github.com/vuejs/core/commit/95799117d20645d2828bf10e5b7d0e233f02d15b)) * **runtime-vapor:** add a non-null check for parentComponent ([#14666](https://github.com/vuejs/core/issues/14666)) ([789b7f2](https://github.com/vuejs/core/commit/789b7f23297d4fd5b17b6ed0a86ba378794a5f32)) * **runtime-vapor:** align interop hydration mount hooks with vdom ([f260346](https://github.com/vuejs/core/commit/f26034686bcae263143de6c95782b7ba5137e9a0)) * **runtime-vapor:** align interop mount hook order with vdom ([b578a24](https://github.com/vuejs/core/commit/b578a248853e4d2028fd4d24bee1632c0b11a13a)) * **runtime-vapor:** align interop unmount hook order with vdom ([13147d9](https://github.com/vuejs/core/commit/13147d905dc3de122cf7721839d2ea2de1c64fca)) * **runtime-vapor:** align interop update hook order with vdom ([6c47c4d](https://github.com/vuejs/core/commit/6c47c4d7e383dc0d67034a1e4987fd54bbbd5718)) * **runtime-vapor:** align keepalive async behavior with vdom ([316c1fc](https://github.com/vuejs/core/commit/316c1fc2981e9cf828ed246cb2dc017c6fdb9ae7)) * **runtime-vapor:** avoid refreshing keep-alive recency on late async resolve ([fc1dd74](https://github.com/vuejs/core/commit/fc1dd74e06657c93829c3f0b7a9124a92462352d)) * **runtime-vapor:** avoid slot fallthrough in async Suspense error path ([22a0e1a](https://github.com/vuejs/core/commit/22a0e1af362eb0fbaedc18f56e4ecac9b1fc3209)) * **runtime-vapor:** cache interop slot wrappers by source slot ([80c551c](https://github.com/vuejs/core/commit/80c551c027ca9e456c2c32469d08a0b34094db5f)) * **runtime-vapor:** hydrate interop slot fallbacks with correct slot context ([62001b8](https://github.com/vuejs/core/commit/62001b8117c900411a7fb29aed934fb82c2a32e7)) * **runtime-vapor:** initialize hydrated vdom slot mount targets ([2f7d9dd](https://github.com/vuejs/core/commit/2f7d9dd2fa9fab15b551eca466e0c3d430eda057)) * **runtime-vapor:** invoke updated before activated on reactivation ([5086bdc](https://github.com/vuejs/core/commit/5086bdc131921e84e8a4960fb34b638d0724d95c)) * **runtime-vapor:** re-mount vapor slot when slot changes in vdom interop ([#14651](https://github.com/vuejs/core/issues/14651)) ([3552ec9](https://github.com/vuejs/core/commit/3552ec980746b8d073d116f887768f7b8974bfc6)), closes [#14650](https://github.com/vuejs/core/issues/14650) * **runtime-vapor:** stop stale effects when remounting interop vapor slots ([3a1cfe4](https://github.com/vuejs/core/commit/3a1cfe4bb7585d881d74db6fecd692ccde90a342)) * **runtime-vapor:** stop stale slot outlet effects on unmount ([cb05b9a](https://github.com/vuejs/core/commit/cb05b9a154165b46e2f97ffbe59e0d0f20a3a8e7)) * **runtime-vapor:** support render vapor async wrapper in vdom suspense ([3b2167d](https://github.com/vuejs/core/commit/3b2167d1c2c4a5233e245eba5c3f5686a058cfe4)) * **runtime-vapor:** sync interop vnode el after root changes ([798f842](https://github.com/vuejs/core/commit/798f842dcf689b9f16f5d5f9a9edddae793ae9a6)) * **runtime-vapor:** sync vnode hooks and el on interop self-update ([820b470](https://github.com/vuejs/core/commit/820b4700c7a474b2fadc532aa05376a93f279b8e)) * **runtime-vapor:** tree-shake ssr runtime from defineVaporCustomElement ([#14705](https://github.com/vuejs/core/issues/14705)) ([d85bed2](https://github.com/vuejs/core/commit/d85bed21636fb8c9d8b1704b87f661719bc24e92)) * **runtime-vapor:** unmount hydrated interop slot content before first insert ([adee943](https://github.com/vuejs/core/commit/adee943aa5a272ae1988629fa70b552c69b02775)) * **runtime-vapor:** update interop slot patch target after moves ([ba9cd6e](https://github.com/vuejs/core/commit/ba9cd6ee7793d7a0cf57afd27f6c3a82986d2b5b)) * **runtime-vapor:** use last-wins semantics for duplicate dynamic slot names ([#14649](https://github.com/vuejs/core/issues/14649)) ([9304551](https://github.com/vuejs/core/commit/9304551e3c7367e29aaae029a0d4e7d684bc768f)), closes [#14648](https://github.com/vuejs/core/issues/14648) * **transition:** handle dynamic slot update ([#14634](https://github.com/vuejs/core/issues/14634)) ([74acb7d](https://github.com/vuejs/core/commit/74acb7dd0a93ae911b911e14794503bd110ae87b)) * **transition:** handle transition appear with slotted v-show at runtime ([#14632](https://github.com/vuejs/core/issues/14632)) ([4f5ad60](https://github.com/vuejs/core/commit/4f5ad60edcd76846f2e7aa9b8e6e924074fa24c2)) ### Features * **runtime-vapor:** hydrate async setup component under VDOM Suspense ([#14691](https://github.com/vuejs/core/issues/14691)) ([3be149e](https://github.com/vuejs/core/commit/3be149e26586d7c5437155b8fbc93c176c0df036)) # [3.6.0-beta.9](https://github.com/vuejs/core/compare/v3.6.0-beta.8...v3.6.0-beta.9) (2026-03-26) ### Bug Fixes * **compiler-vapor:** avoid delegating same-event handlers when sibling uses `stop` modifiers ([#14610](https://github.com/vuejs/core/issues/14610)) ([bf7a066](https://github.com/vuejs/core/commit/bf7a0666253697a6dfbd92c34a4047c7328174d5)), closes [#14609](https://github.com/vuejs/core/issues/14609) * **compiler-vapor:** handle template children in Transition ([#14606](https://github.com/vuejs/core/issues/14606)) ([5fb8b33](https://github.com/vuejs/core/commit/5fb8b338db624c0d466fe0fa6d785e2972c58228)) * **compiler-vapor:** ignore comments when checking extraneous default slot children ([#14601](https://github.com/vuejs/core/issues/14601)) ([5af41dd](https://github.com/vuejs/core/commit/5af41dd36bac49be027941e33d6006915cc37f1b)) * **compiler-vapor:** normalize default dynamic slot names in transform ([#14619](https://github.com/vuejs/core/issues/14619)) ([c615e05](https://github.com/vuejs/core/commit/c615e0586cd68d8cf890df25d15e1f9117853f6b)) * **compiler-vapor:** preserve comment-only default slots while ignoring mixed slot comments ([#14604](https://github.com/vuejs/core/issues/14604)) ([c245dae](https://github.com/vuejs/core/commit/c245dae45cd6050082b69480c5650f17ec4e38ad)) * **hydration:** align vapor teleport null-target fallback with vdom ([5d6814f](https://github.com/vuejs/core/commit/5d6814f5c42be2d0622b7d31e2bc512d3eb22da7)), closes [#14586](https://github.com/vuejs/core/issues/14586) * **hydration:** avoid setting targetStart to placeholder when target is null ([#14589](https://github.com/vuejs/core/issues/14589)) ([5f38d73](https://github.com/vuejs/core/commit/5f38d7331a410cb4dad32d83ee1af08e96d3b6a6)) * **hydration:** consume target anchors for disabled teleports ([#14592](https://github.com/vuejs/core/issues/14592)) ([a0ba73b](https://github.com/vuejs/core/commit/a0ba73bbe0b8a5043e25e73f14468e2ded62c10a)) * **hydration:** handle enabled teleport hydration with null target ([#14586](https://github.com/vuejs/core/issues/14586)) ([715b40f](https://github.com/vuejs/core/commit/715b40f2b599c54e4c9fdb949f98bfbcc32171f1)) * **hydration:** handle nested disabled teleport anchor location ([#14587](https://github.com/vuejs/core/issues/14587)) ([befc127](https://github.com/vuejs/core/commit/befc127597e87ae5e3a8e0fdcd0823e12e2040f2)) * **hydration:** pass nextSibling to locateTeleportEndAnchor for null target ([abe8fcd](https://github.com/vuejs/core/commit/abe8fcd79cd2186ef3494ce5a04e55364b349400)) * **keep-alive:** avoid allocating composite keys on cache lookup ([981bd83](https://github.com/vuejs/core/commit/981bd83a5119b5c5da4837ca9496123db885257d)) * **keep-alive:** fix keyed branch scope leak in KeepAlive ([cbe905e](https://github.com/vuejs/core/commit/cbe905e1f35fb86ba73c0edddb3165f4000fa754)) * **keep-alive:** handle KeepAlive teardown for keyed live branches ([340ef37](https://github.com/vuejs/core/commit/340ef37b2d55172d88b3dd8f38df9eab03197e1b)) * **keep-alive:** prevent stale cacheBlock() calls when VDOM async component resolves after being unmounted or witched ([3b2ffb7](https://github.com/vuejs/core/commit/3b2ffb71c6bb3e9359dee71c518b561021a40f26)) * **keep-alive:** support VDOM async components in VaporKeepAlive ([6123f9b](https://github.com/vuejs/core/commit/6123f9b262ddc74339ea7f42d643796d7aa0a09b)) * **runtime-vapor:** align KeepAlive interop directives with non-element root bailout ([1a91660](https://github.com/vuejs/core/commit/1a91660fb88f73986b5556030e23ca2de47be56d)) * **runtime-vapor:** clean up keptAliveScopes in pruneCacheEntry ([2e78d1e](https://github.com/vuejs/core/commit/2e78d1eb372ebfaa258ab83b99e696e3844ed927)) * **runtime-vapor:** clear template ref when switching to unresolved async component ([e09b67a](https://github.com/vuejs/core/commit/e09b67ab15303902a13b00691a4f0b9c8c2007c7)) * **runtime-vapor:** clear template refs on KeepAlive deactivation ([4c5a620](https://github.com/vuejs/core/commit/4c5a620459e1aa8c2684d7e6973ed2b3cb1b3cf1)) * **runtime-vapor:** delay teleport child init until target is available ([#14593](https://github.com/vuejs/core/issues/14593)) ([3941eab](https://github.com/vuejs/core/commit/3941eaba6eee94c5ad7abde4a617fcd05a852190)) * **runtime-vapor:** ensure KeepAlive onBeforeUnmount cleans up all cached entries ([d978639](https://github.com/vuejs/core/commit/d978639235e27dd2a7d0c485f6462391b096db58)) * **runtime-vapor:** fix compositeKeyCachePrimitive memory leak in KeepAlive ([16c071c](https://github.com/vuejs/core/commit/16c071cc49468363abeaf4ef8f01f8b63c1bf878)) * **runtime-vapor:** fix keptAliveScopes key mismatch causing scope leak on prune ([3f2603d](https://github.com/vuejs/core/commit/3f2603da58cfef929f76f427bef529bd1fe040e8)) * **runtime-vapor:** handle async component names in KeepAlive pruneCache ([b210f01](https://github.com/vuejs/core/commit/b210f010b8d667d4bf25ca74e72d1c912df6495a)) * **runtime-vapor:** handle KeepAlive template ref cleanup for async branches ([5239691](https://github.com/vuejs/core/commit/5239691b9e3b5ed3cf15ec1d84e5936305453776)) * **runtime-vapor:** invalidate pending mount hooks on deactivate/unmount ([0d8c519](https://github.com/vuejs/core/commit/0d8c519e83a0e177c5cc637edfad54af9a327021)) * **runtime-vapor:** invoke directive update hooks on KeepAlive reactivation ([a2e32e0](https://github.com/vuejs/core/commit/a2e32e08bad89f46700e63d4ea96ebb6413d6824)) * **runtime-vapor:** invoke onVnodeBeforeMount for vapor components in interop ([68c405c](https://github.com/vuejs/core/commit/68c405c078503f0aec95fe3b91756ba4921d839b)) * **runtime-vapor:** invoke vnode lifecycle hooks in vdom interop ([b7c9fc2](https://github.com/vuejs/core/commit/b7c9fc20ecc13ffd2add056fb467966ceb7c0b4b)) * **runtime-vapor:** invoke vnode update hooks on KeepAlive reactivation ([446b21b](https://github.com/vuejs/core/commit/446b21b5e40d069ffac90d2dc34e171a3406af99)) * **runtime-vapor:** preserve async wrapper keys across dynamic fragment updates ([fea9fd9](https://github.com/vuejs/core/commit/fea9fd9676c37c235b5dfeae48c45ab2c8fe9c5c)) * **runtime-vapor:** preserve KeepAlive keyed scope cache for falsy keys ([f0c9478](https://github.com/vuejs/core/commit/f0c947829d83becc214ccdfa9e9f43fc85cabe45)) * **runtime-vapor:** prune KeepAlive composite cache keys ([e2cf58a](https://github.com/vuejs/core/commit/e2cf58a95e3c55e857b4b19bac5cfe3717a714d9)) * **runtime-vapor:** restore render context for interop slot fallbacks ([#14596](https://github.com/vuejs/core/issues/14596)) ([f6952b2](https://github.com/vuejs/core/commit/f6952b25db9dd3fffb94cbb7230744cc6b45d762)) * **runtime-vapor:** reuse teleport anchors when keyed roots reorder ([#14591](https://github.com/vuejs/core/issues/14591)) ([df8e1eb](https://github.com/vuejs/core/commit/df8e1eb0b6ef56f5f0f8f906e24018013bee806e)) * **runtime-vapor:** TransitionGroup with v-for + v-if not applying transition hooks ([#14590](https://github.com/vuejs/core/issues/14590)) ([1916785](https://github.com/vuejs/core/commit/191678557e33bf3debbfbc9dc4efb56c72a0905b)) * **runtime-vapor:** update props/slots on vapor child reactivation in vdom KeepAlive ([ed276a9](https://github.com/vuejs/core/commit/ed276a95308c9dc31a78f17937057b3d23396187)) * **teleport:** clean up old anchors when teleport target changes ([#14588](https://github.com/vuejs/core/issues/14588)) ([d614897](https://github.com/vuejs/core/commit/d614897b5cf6e502223369b8b1716d2344f5be1c)) * **teleport:** ensure target anchor is removed only if it exists ([b671f4b](https://github.com/vuejs/core/commit/b671f4b01c9c3bf35e60836f7b41b7b19269eed7)) * **teleport:** handle missing slots edge case ([#14597](https://github.com/vuejs/core/issues/14597)) ([e79b814](https://github.com/vuejs/core/commit/e79b814b9c68c995dcad81aec95df8aaee5ed782)) * **teleport:** reapply teleport css vars after root replacement ([#14594](https://github.com/vuejs/core/issues/14594)) ([caea24d](https://github.com/vuejs/core/commit/caea24de56093b54f8a0a889e13ee0b3db92f2f3)) * **teleport:** remove stale target anchors after invalid target updates ([#14600](https://github.com/vuejs/core/issues/14600)) ([e7828d4](https://github.com/vuejs/core/commit/e7828d438cb4266b0e05255902e2b2c3f6021946)) * **teleport:** should not mount deferred teleport after unmount ([#14598](https://github.com/vuejs/core/issues/14598)) ([e473e23](https://github.com/vuejs/core/commit/e473e23b4cf0476793b1c35e1132957c228ac3d8)) * **transition-group:** align key inheritance with vdom ([bb63124](https://github.com/vuejs/core/commit/bb631244bd6b72e66e9a369b5a1ac79b3a4cc373)) * **transition-group:** align transition-group dynamic tag updates with vdom ([5348391](https://github.com/vuejs/core/commit/53483917b99870179f2cdc3a46f89d0a66b2ffbb)) * **transition-group:** avoid invalid hooks on unkeyed interop children ([82c1223](https://github.com/vuejs/core/commit/82c12230648f73b3de02c0a34d9f0f5b5d4cfc22)) * **transition-group:** handle v-if dynamic slots ([#14628](https://github.com/vuejs/core/issues/14628)) ([9ac929a](https://github.com/vuejs/core/commit/9ac929a48139033c50fb85bdbdb7169c443f6f10)) * **transition-group:** support vdom children with comment roots ([9830c4a](https://github.com/vuejs/core/commit/9830c4a43c6684f2a766a4a80246fca3cc10b29f)) * **transition:** align interop transition vnode identity with vdom ([efda719](https://github.com/vuejs/core/commit/efda719263dc14ed4d5b932db8fe9980c1b296aa)) * **transition:** isolate transition leaving cache by resolved child type ([cc0d96f](https://github.com/vuejs/core/commit/cc0d96fa419fb0a895d21f2a41c6462dfc65c8f2)) * **transition:** treat null transition keys as absent in child fallback ([724fd88](https://github.com/vuejs/core/commit/724fd889c9b261101662b8fd77752d65e9500239)) * **vdomInterop:** keep interop fragment nodes in sync after vnode updates ([c62dc1f](https://github.com/vuejs/core/commit/c62dc1f2845a71fa31196a0a0910748d32a82d55)) * **vdomInterop:** keep vdom slot fragment nodes in sync with child updates ([26e4a81](https://github.com/vuejs/core/commit/26e4a812f6cdba9a83b87d441cad4b41ee486d43)) ### Features * **vapor:** preserve static keys ([62cb2ce](https://github.com/vuejs/core/commit/62cb2ce8f1b8e26d392a6548f1d3644bcb0204f7)) # [3.6.0-beta.8](https://github.com/vuejs/core/compare/v3.5.30...v3.6.0-beta.8) (2026-03-16) ### Bug Fixes * **compiler-vapor:** avoid cache name collisions in expression dedupe ([#14568](https://github.com/vuejs/core/issues/14568)) ([9101686](https://github.com/vuejs/core/commit/9101686980f95707bf6cbe4cfee1535d604b922c)) * **compiler-vapor:** do not cache expressions with globally allowed identifiers ([#14562](https://github.com/vuejs/core/issues/14562)) ([cc2f3f5](https://github.com/vuejs/core/commit/cc2f3f5365eb895563abd53834795328c6c4a717)), closes [#14560](https://github.com/vuejs/core/issues/14560) * **compiler-vapor:** fix circular reference in repeated call expression cache ([#14567](https://github.com/vuejs/core/issues/14567)) ([62f2ab4](https://github.com/vuejs/core/commit/62f2ab4ab3f07fa3876dc494d4f49d59cd210597)) * **compiler-vapor:** preserve :is prop on normal components ([#14491](https://github.com/vuejs/core/issues/14491)) ([c763388](https://github.com/vuejs/core/commit/c763388867606657cca0de0157968a1359a89ae3)) * **custom-element:** should properly patch as props for vapor custom elements ([#14583](https://github.com/vuejs/core/issues/14583)) ([c4b51d8](https://github.com/vuejs/core/commit/c4b51d81882b500ae67b7c4125d62f0c863fe9e5)), closes [#12409](https://github.com/vuejs/core/issues/12409) * **hmr:** child reload in dynamic branch should not break subsequent parent reload ([#14527](https://github.com/vuejs/core/issues/14527)) ([abefa0c](https://github.com/vuejs/core/commit/abefa0c4604d8076acabb48833a7b3742d5f484a)) * **hmr:** preserve appContext on root HMR reload ([#14528](https://github.com/vuejs/core/issues/14528)) ([714151e](https://github.com/vuejs/core/commit/714151ebe01fc7d52ee2f2b0ae590fcff4408df1)) * **runtime-vapor:** cleanup stale refs when dynamic vdom component ref target changes ([#14501](https://github.com/vuejs/core/issues/14501)) ([178b77f](https://github.com/vuejs/core/commit/178b77f41b98be6750a5566aa02b75272b4fb71d)) * **runtime-vapor:** correct vapor slot props proxy has/ownKeys semantics ([#14522](https://github.com/vuejs/core/issues/14522)) ([8a64a19](https://github.com/vuejs/core/commit/8a64a192b781e1a8ae9010d4f3fb260ec6681498)) * **runtime-vapor:** enable hydration capability for createSSRApp + vdomInterop ([#14505](https://github.com/vuejs/core/issues/14505)) ([5c320b7](https://github.com/vuejs/core/commit/5c320b7da43ffe2b9d603c506b055ae01556a27c)) * **runtime-vapor:** ensure vapor slot unmounting removes vnode slot content ([#14520](https://github.com/vuejs/core/issues/14520)) ([eff4cab](https://github.com/vuejs/core/commit/eff4cabc8255ebccc0d808de691ae4078dc40174)) * **runtime-vapor:** fix interop hydration anchor handling for Teleport/Suspense dynamic VNodes ([#14517](https://github.com/vuejs/core/issues/14517)) ([7d079d5](https://github.com/vuejs/core/commit/7d079d50ff01eb2554226d1e99d60c9ef1344571)) * **runtime-vapor:** fix VDOM interop hydration for multi-node vnode ranges ([#14513](https://github.com/vuejs/core/issues/14513)) ([6a53e41](https://github.com/vuejs/core/commit/6a53e413c03a6bafda07fc211cb9872abf2a50e6)) * **runtime-vapor:** handle null/undefined dynamic template refs without warning ([#14502](https://github.com/vuejs/core/issues/14502)) ([b7a3356](https://github.com/vuejs/core/commit/b7a3356dbf0fd947be5a787a9a60c215a9ca1822)) * **runtime-vapor:** handle out-in transition with empty leaving branch ([#14538](https://github.com/vuejs/core/issues/14538)) ([70647b6](https://github.com/vuejs/core/commit/70647b61b45a49580179fb4fd930ab75748f440d)) * **runtime-vapor:** handle Static/Fragment vnode ranges in interop block nodes ([#14510](https://github.com/vuejs/core/issues/14510)) ([8ec6b64](https://github.com/vuejs/core/commit/8ec6b64318d7d95e4a8f10d671dfc96151f317f9)) * **runtime-vapor:** handle transition in-out leave without incoming branch ([#14535](https://github.com/vuejs/core/issues/14535)) ([191a1e1](https://github.com/vuejs/core/commit/191a1e1d8ecf6dc25720dd116aa2783543db6808)), closes [#14533](https://github.com/vuejs/core/issues/14533) * **runtime-vapor:** hydrate vapor slot in vdom component with sibling nodes ([#14512](https://github.com/vuejs/core/issues/14512)) ([fe613c7](https://github.com/vuejs/core/commit/fe613c787534ff4d076ea4be09146bc0ba846341)) * **runtime-vapor:** keep vdom child attrs in sync with vapor parent updates ([#14521](https://github.com/vuejs/core/issues/14521)) ([11cb112](https://github.com/vuejs/core/commit/11cb1126eb7be79f454f4604e92c9dc00fe9e91f)) * **runtime-vapor:** pass parentComp to _injectChildStyle for correct style ordering ([79190e8](https://github.com/vuejs/core/commit/79190e845bbe4f56d2cc44c3204d76a29dc51533)) * **runtime-vapor:** properly resolve event handler in dynamic props ([#14514](https://github.com/vuejs/core/issues/14514)) ([6764170](https://github.com/vuejs/core/commit/67641706ba4571859b92ce28e2f45f0bc5f5af6e)) * **runtime-vapor:** properly set ref on dynamic component + vdom component ([#14496](https://github.com/vuejs/core/issues/14496)) ([e05c850](https://github.com/vuejs/core/commit/e05c8503363247c59983209ca51034bf7fb04e2f)) * **runtime-vapor:** should not pass reserved props into vapor attrs on update ([#14524](https://github.com/vuejs/core/issues/14524)) ([91f1483](https://github.com/vuejs/core/commit/91f14836692f67177e4fc84866b372220160d6df)) * **runtime-vapor:** TransitionGroup with v-if + v-for not applying transition hooks ([#14571](https://github.com/vuejs/core/issues/14571)) ([508edbe](https://github.com/vuejs/core/commit/508edbe3c22d6050d269d09a1219ad671c98f7ee)), closes [#14564](https://github.com/vuejs/core/issues/14564) [#14569](https://github.com/vuejs/core/issues/14569) * **transition:** handle rapid in-out transition toggles ([#14540](https://github.com/vuejs/core/issues/14540)) ([452290d](https://github.com/vuejs/core/commit/452290ddaab2b490ad8116c1592ccc356664e548)), closes [#14539](https://github.com/vuejs/core/issues/14539) * **vapor:** infer component multi-root metadata from SFC templates for hydration ([#14530](https://github.com/vuejs/core/issues/14530)) ([c531937](https://github.com/vuejs/core/commit/c531937c5caacb67751b9b2c380d41684b9a6ea8)) # [3.6.0-beta.7](https://github.com/vuejs/core/compare/v3.5.29...v3.6.0-beta.7) (2026-02-27) ### Bug Fixes * **runtime-vapor:** allow renderEffect to self re-queue on sync state mutation ([#14477](https://github.com/vuejs/core/issues/14477)) ([e0003aa](https://github.com/vuejs/core/commit/e0003aab5d2e5b11c15a7b02b8ce19d89a9b9ecc)) * **runtime-vapor:** apply template ref on dynamic fragment ([#14471](https://github.com/vuejs/core/issues/14471)) ([2fb57c4](https://github.com/vuejs/core/commit/2fb57c412f923bae9b840c4c018426d90a2e0e3f)) * **runtime-vapor:** avoid exposing built-in components internals via template ref ([#14448](https://github.com/vuejs/core/issues/14448)) ([3badf50](https://github.com/vuejs/core/commit/3badf505cab395d2641b33b91cb50f26d61fac6c)) * **runtime-vapor:** preserve slot owner rendering context in resolveDynamicComponent ([#14475](https://github.com/vuejs/core/issues/14475)) ([a779531](https://github.com/vuejs/core/commit/a7795310f62a801082e71c776fba30ac044e7009)), closes [#14474](https://github.com/vuejs/core/issues/14474) * **runtime-vapor:** preserve slot-owner css vars for teleported slot content ([#14476](https://github.com/vuejs/core/issues/14476)) ([24f20e8](https://github.com/vuejs/core/commit/24f20e8a3f5a18c214c812ade6b18e6498a4ba96)), closes [#14473](https://github.com/vuejs/core/issues/14473) * **runtime-vapor:** restore KeepAlive branch key even for falsy previous values ([4859f89](https://github.com/vuejs/core/commit/4859f8901dcbf8295bb52228a02b9c4deb9781ef)) * **runtime-vapor:** widen FunctionalVaporComponent props typing ([#14470](https://github.com/vuejs/core/issues/14470)) ([74645bb](https://github.com/vuejs/core/commit/74645bb0fb972b8f00f5ed818fa2d514a8ad5f3a)), closes [#14467](https://github.com/vuejs/core/issues/14467) ### Features * **vapor:** support rendering vdom suspense in vapor ([#14485](https://github.com/vuejs/core/issues/14485)) ([f0367b0](https://github.com/vuejs/core/commit/f0367b0e0c46f9cf1a65d6d3fe5b82f79b81f175)) * **vapor:** support rendering vdom teleport in vapor ([#14484](https://github.com/vuejs/core/issues/14484)) ([9923f11](https://github.com/vuejs/core/commit/9923f11a765b6fa0923583743091030b5a183611)), closes [#14481](https://github.com/vuejs/core/issues/14481) # [3.6.0-beta.6](https://github.com/vuejs/core/compare/v3.6.0-beta.5...v3.6.0-beta.6) (2026-02-12) ### Bug Fixes * **compiler-vapor:** always keyed if fragment when the branch can change ([9f7d73d](https://github.com/vuejs/core/commit/9f7d73d701faa0a0f9c46479ffdd93995cf71653)) * **compiler-vapor:** handle invalid table nesting with dynamic child ([#14394](https://github.com/vuejs/core/issues/14394)) ([cd00cb8](https://github.com/vuejs/core/commit/cd00cb814561c8ba7f124eeea932752dcfdf9120)), closes [#14392](https://github.com/vuejs/core/issues/14392) * **compiler-vapor:** keep literal interpolation in component slot templates ([#14405](https://github.com/vuejs/core/issues/14405)) ([c18e1e2](https://github.com/vuejs/core/commit/c18e1e2b0be6f06209f8487ca6f0d271deb06e2e)) * **compiler-vapor:** properly handling of class and style bindings on SVG ([#14383](https://github.com/vuejs/core/issues/14383)) ([3019448](https://github.com/vuejs/core/commit/301944831babdc1eff121319e5f49c3c39fb3b85)), closes [#14382](https://github.com/vuejs/core/issues/14382) * **runtime-vapor:** guard attrs proxy traps for symbol keys ([#14447](https://github.com/vuejs/core/issues/14447)) ([1219d7d](https://github.com/vuejs/core/commit/1219d7d0d6691a2d4eed20434ffa355211915290)) * **runtime-vapor:** guard default slot for createPlainElement ([#14422](https://github.com/vuejs/core/issues/14422)) ([6a64941](https://github.com/vuejs/core/commit/6a6494190cb2117edcd4f35cf6edb6f9db5a7b11)) * **runtime-vapor:** isolate slotProps per fragment in v-for slots ([#14406](https://github.com/vuejs/core/issues/14406)) ([9db9f1e](https://github.com/vuejs/core/commit/9db9f1e1740285b40d31438de463afc7bb17f3ea)), closes [#14397](https://github.com/vuejs/core/issues/14397) * **runtime-vapor:** stabilize KeepAlive cache keys with branch-scoped composite keys ([d207e9e](https://github.com/vuejs/core/commit/d207e9ee17ebd4f02dbc563c356194283cd116a3)) * **runtime-vapor:** update setCurrentBranchKey to return previous key and handle context correctly ([c9e52bc](https://github.com/vuejs/core/commit/c9e52bc0cc89a3fe7316139c69e1d07d35ea0693)) * **teleport:** ignore to prop changes while disabled ([#14438](https://github.com/vuejs/core/issues/14438)) ([102b32b](https://github.com/vuejs/core/commit/102b32b8fa457f4d9676db82bb6b2c53429e4125)) * **teleport:** optimize props handling and prevent unnecessary updates ([#14440](https://github.com/vuejs/core/issues/14440)) ([90ea8ce](https://github.com/vuejs/core/commit/90ea8ce6634a7dfeac44438dc7de1eff3286e652)), closes [#14438](https://github.com/vuejs/core/issues/14438) * **templateRef:** don't update setup ref for useTemplateRef key ([#14444](https://github.com/vuejs/core/issues/14444)) ([ccd1ddf](https://github.com/vuejs/core/commit/ccd1ddf87d275c2cb057e5ee3e71e554206a34ba)) * **templateRef:** avoid setting direct ref of useTemplateRef in dev ([#14442](https://github.com/vuejs/core/issues/14442)) ([78eb86c](https://github.com/vuejs/core/commit/78eb86ccd227c831d499c89754e2842549cf0158)) ### Features * **compiler-vapor:** add keyed block handling for dynamic keys ([862ab17](https://github.com/vuejs/core/commit/862ab176e3a64a78a98be96581924c051dd5abc3)) # [3.6.0-beta.5](https://github.com/vuejs/core/compare/v3.6.0-beta.4...v3.6.0-beta.5) (2026-01-30) ### Bug Fixes - **runtime-vapor:** preserve slot owner to ensure correct scopeId inheritance for nested components within v-for loops with slots. ([#14353](https://github.com/vuejs/core/issues/14353)) ([cb2a17c](https://github.com/vuejs/core/commit/cb2a17c81dd761ad451ef56dc66a398e448f7acc)) - **transition:** add key for transition if-branches ([#14374](https://github.com/vuejs/core/issues/14374)) ([e08308e](https://github.com/vuejs/core/commit/e08308e04354b663313bbefa5d7238422961c640)), closes [#14368](https://github.com/vuejs/core/issues/14368) - **vapor:** properly move vapor component / slot ([#14363](https://github.com/vuejs/core/issues/14363)) ([b0c04eb](https://github.com/vuejs/core/commit/b0c04eb6c2d18a36ca46bfef7a33bfb1798760e8)) - **vapor:** support directives on vapor components in vdom parent ([#14355](https://github.com/vuejs/core/issues/14355)) ([9add6d7](https://github.com/vuejs/core/commit/9add6d7b4f4720e9d9092724d071971708cef47d)) # [3.6.0-beta.4](https://github.com/vuejs/core/compare/v3.5.27...v3.6.0-beta.4) (2026-01-23) ### Bug Fixes - **compile-vapor:** optimize always close tag on rightmost ([0db578b](https://github.com/vuejs/core/commit/0db578b1995d934dba9b36f0e6c50ed60e2cae94)) - **compiler-vapor:** allow multiple children in Transition v-if branch elements ([#14317](https://github.com/vuejs/core/issues/14317)) ([212bee4](https://github.com/vuejs/core/commit/212bee43b921d80b164490b7cf47716ebed7ec62)), closes [#14316](https://github.com/vuejs/core/issues/14316) - **compiler-vapor:** do not escape quotes in root-level text nodes ([#14310](https://github.com/vuejs/core/issues/14310)) ([3fc8e4a](https://github.com/vuejs/core/commit/3fc8e4af5d61d69ef82fbee20cf78ada6ec4a99e)), closes [#14309](https://github.com/vuejs/core/issues/14309) - **compiler-vapor:** prevent end tag omission for scope boundary elements ([3d550db](https://github.com/vuejs/core/commit/3d550db31ab40293179e099469e39eaa74b5071d)) - **keep-alive:** fix caching nested dynamic fragments ([#14307](https://github.com/vuejs/core/issues/14307)) ([bd9aa97](https://github.com/vuejs/core/commit/bd9aa970232ca0591d4c1bfb496b9427a6e777e2)) - **runtime-core:** queue mounted hooks added during mount ([#14349](https://github.com/vuejs/core/issues/14349)) ([d3b1de3](https://github.com/vuejs/core/commit/d3b1de320a50b0696c537ec2a3a4a07e3507681b)) - **runtime-dom:** ensure css vars deps tracking when component has no DOM on mount ([#14299](https://github.com/vuejs/core/issues/14299)) ([084389e](https://github.com/vuejs/core/commit/084389ed39855140054e96315e0dde95429d9429)) - **runtime-vapor:** handle component scopeid on nested slot ([#14326](https://github.com/vuejs/core/issues/14326)) ([7324791](https://github.com/vuejs/core/commit/732479182ab01706d95d3108f95e93fd07a44d74)) - **runtime-vapor:** prevent v-for crash on looping through null or undefined array ([#14328](https://github.com/vuejs/core/issues/14328)) ([e77b6e1](https://github.com/vuejs/core/commit/e77b6e1fb977c7c52b4d7c8e3f98e3aa6899c576)) - **teleport:** apply css vars after hydration ([#14343](https://github.com/vuejs/core/issues/14343)) ([b117d11](https://github.com/vuejs/core/commit/b117d116ec1eb9b0d3029d9f77a665a2326cb87d)) - **transition:** handle transition on pre-resolved async components ([#14314](https://github.com/vuejs/core/issues/14314)) ([9d30aff](https://github.com/vuejs/core/commit/9d30aff79e0125140b7f8d90b0d6e4cd125b7c66)) - **vapor:** refined inline-block nesting check for html abbreviation ([9220643](https://github.com/vuejs/core/commit/92206430286d0b88c7364d14d5a83bbbf0a415ca)) # [3.6.0-beta.3](https://github.com/vuejs/core/compare/v3.6.0-beta.2...v3.6.0-beta.3) (2026-01-12) ### Bug Fixes - **compiler-vapor:** support `v-if` and `v-for` on the same `