This website works better with JavaScript
3.5.31 (2026-03-25)
Bug Fixes
compiler-sfc: allow Node.js subpath imports patterns in asset urls (#13045 ) (95c3356 ), closes #9919
compiler-sfc: support template literal as defineModel name (#14622 ) (bd7eef0 ), closes #14621
reactivity: normalize toRef property keys before dep lookup + improve types (#14625 ) (1bb28d0 ), closes #12427 #12431
runtime-core: invalidate detached v-for memo vnodes after unmount (#14624 ) (560def4 ), closes #12708 #12710
runtime-core: preserve nullish event handlers in mergeProps (#14550 ) (5725222 )
runtime-core: prevent merging model listener when value is null or undefined (#14629 ) (b39e032 )
runtime-dom: defer teleport mount/update until suspense resolves (#8619 ) (88ed045 ), closes #8603
runtime-dom: handle activeElement check in Shadow DOM for v-model (#14196 ) (959ded2 )
server-renderer: cleanup component effect scopes after SSR render (#14548 ) (862f11e )
suspense: avoid unmount activeBranch twice if wrapped in transition (#9392 ) (908c6ad ), closes #7966
suspense: update suspense vnode's el during branch self-update (#12922 ) (a2c1700 ), closes #12920
transition: skip enter guard while hmr updating (#14611 ) (be0a2f1 ), closes #14608
types: prevent shallowReactive marker from leaking into value unions (#14493 ) (3b561db ), closes #14490
3.5.30 (2026-03-09)
Bug Fixes
compat: add entities to @vue /compat deps to fix CJS edge cases (#12514 ) (e725a67 ), closes #10609
custom-element: ensure child component styles are injected in correct order before parent styles (#13374 ) (1398bf8 ), closes #13029
custom-element: properly locate parent when slotted in shadow dom (#12480 ) (f06c81a ), closes #12479
custom-element: should properly patch as props for vue custom elements (#12409 ) (740983e ), closes #12408
reactivity: avoid duplicate raw/proxy entries in Set.add (#14545 ) (d943612 )
reactivity: fix reduce on reactive arrays to preserve reactivity (#12737 ) (16ef165 ), closes #12735
reactivity: handle Set with initial reactive values edge case (#12393 ) (5dc27ca ), closes #8647
runtime-core: warn about negative number in v-for (#12308 ) (9438cc5 )
ssr: prevent watch from firing after async setup await (#14547 ) (6cda71d ), closes #14546
types: make generics with runtime props in defineComponent work (fix #11374 ) (#13119 ) (cea3cf7 ), closes #13763
types: narrow useAttrs class/style typing for TSX (#14492 ) (bbb8977 ), closes #14489
3.5.29 (2026-02-24)
Bug Fixes
3.5.28 (2026-02-09)
Bug Fixes
transition: avoid unexpected cancelled parameter in transition done callback (#14391 ) (6798853 )
compiler-sfc: add resolution trying for .mts/.cts files (#14402 ) (c09d41f ), closes vuejs/router#2611
compiler-sfc: no params were generated when using withDefaults (#12823 ) (b0a1f05 ), closes #12822
reactivity: add __v_skip flag to EffectScope to prevent reactive conversion (#14359 ) (48b7552 ), closes #14357
runtime-core: avoid retaining el on cached text vnodes during static traversal (#14419 ) (4ace79a ), closes #14134
runtime-core: prevent child component updates when style remains unchanged (#12825 ) (57866b5 ), closes #12826
runtime-core: properly handle async component update before resolve (#11619 ) (e71c26c ), closes #11617
runtime-dom: handle null/undefined handler in withModifiers (#14362 ) (261de54 ), closes #14361
teleport: properly handling disabled teleport target anchor (#14417 ) (d7bcd85 ), closes #14412
transition-group: correct move translation under scale via element rect (#14360 ) (0243a79 ), closes #14356
useTemplateRef: don't update setup ref for useTemplateRef key (#12756 ) (fc40ca0 ), closes #12749
3.5.27 (2026-01-19)
Bug Fixes
compile-sfc: correctly handle variable shadowing in for loop for defineProps destructuring. (#14296 ) (6a1bb50 ), closes #14294
compiler-sfc: handle indexed access types in declare global blocks (#14260 ) (e4091fe ), closes #14236
compiler-sfc: use correct scope when resolving indexed access types from external files (#14297 ) (f0f0a21 ), closes #14292
reactivity: collection iteration should inherit iterator instance methods (#12644 ) (3c8b2fc ), closes #12615
runtime-core: skip patching reserved props for custom elements (#14275 ) (19cc7e2 ), closes #14274
server-renderer: use ssrRenderClass helper for className attribute (#14327 ) (a4708f3 )
ssr: handle v-bind modifiers during render attrs (#14263 ) (c2f5964 ), closes #14262
3.5.26 (2025-12-18)
Bug Fixes
Performance Improvements
compiler-core: use binary-search to get line and column (#14222 ) (1904053 )
3.5.25 (2025-11-24)
Bug Fixes
3.5.24 (2025-11-07)
Reverts
3.5.23 (2025-11-06)
Bug Fixes
compiler-core: correctly handle ts type assertions in expressions (#13397 ) (e6544ac ), closes #13395
compiler-core: fix v-bind shorthand handling for in-DOM templates (#13933 ) (b3cca26 ), closes #13930
compiler-sfc: resolve numeric literals and template literals without expressions as static property key (#13998 ) (75d44c7 )
compiler-ssr: textarea with v-text directive SSR (#13975 ) (006a0c1 )
compiler: using guard instead of non-nullish assertion (#13982 ) (dcc6f36 )
custom-element: batch custom element prop patching (#13478 ) (c13e674 ), closes #12619
custom-element: optimize slot retrieval to avoid duplicates (#13961 ) (84ca349 ), closes #13955
hydration: avoid mismatch during hydrate text with newlines in interpolation (#9232 ) (6cbdf78 ), closes #9229
runtime-core: pass props and children to loadingComponent (#13997 ) (40c4b2a )
runtime-dom: ensure iframe sandbox is handled as an attribute to prevent unintended behavior (#13950 ) (5689884 ), closes #13946
suspense: clear placeholder and fallback el after resolve to enable GC (#13928 ) (f411c66 )
transition-group: use offsetLeft and offsetTop instead of getBoundingClientRect to avoid transform scale affect animation (#6108 ) (dc4dd59 ), closes #6105
v-model: handle number modifier on change (#13959 ) (8fbe48f ), closes #13958
3.5.22 (2025-09-25)
Bug Fixes
compiler-core: identifiers in switch-case should not be inferred as references (#13923 ) (5953c9f )
compiler-dom: nodes with v-once shouldn't be stringified (#13878 ) (95c1975 )
compiler-sfc: add support for @vue-ignore in runtime type resolution (#13906 ) (ba7f7f9 )
compiler-sfc: enhance inferRuntimeType to support TSMappedType with indexed access (#13848 ) (e388f1a ), closes #13847
compiler-sfc: ensure css custom properties do not start with a digit (#13870 ) (9c27951 )
compiler-sfc: ensure props bindings register before compiling template (#13922 ) (abd5638 ), closes #13920
compiler-ssr: ensure v-show has a higher priority in SSR (#12171 ) (836b829 ), closes #12162
custom-element: properly mount multiple Teleports in custom element component w/ shadowRoot false (#13900 ) (5e1e791 ), closes #13899
custom-element: set prop runs pending mutations before disconnect (#13897 ) (c4a88cd ), closes #13315
custom-element: use PatchFlags.BAIL for slot when props are present (#13907 ) (5358bca ), closes #13904
reactivity: respect readonly during ref unwrapping (#13905 ) (aba7fed ), closes #13903
reactivity: update iterator to check for completion instead of value presence (#13761 ) (2078f8b )
runtime-core: simplify block-tracking disabling in h helper (#13841 ) (75220c7 )
transition-group: run forceReflow on the correct document (fix #13849 ) (#13853 ) (1be5ddf )
types: more precise types for Events and added missing definitions (#9675 ) (8bb8fb2 )
types: set dom stub type to never instead of {} (#13915 ) (8620a61 ), closes #11564
types: widen directive arg type from string to any (#13758 ) (4b71706 ), closes #13757
Features
custom-element: allow specifying additional options for shadowRoot in custom elements (#12965 ) (47e628d ), closes #12964
Reverts
Revert "fix(hmr): prevent VUE_HMR_RUNTIME from being overwritten by vue runtime in 3rd-party libraries" (#13925 ) (6b68f72 ), closes #13925
3.5.21 (2025-09-02)
Bug Fixes
Performance Improvements
improve regexp performance with non-capturing groups (#13567 ) (1e8b65a )
3.5.20 (2025-08-25)
Bug Fixes
3.5.19 (2025-08-21)
Bug Fixes
compiler-core: adjacent v-else should cause a compiler error (#13699 ) (911e670 ), closes #13698
compiler-core: prevent cached array children from retaining detached dom nodes (#13691 ) (7f60ef8 ), closes element-plus/element-plus#21408 #13211
compiler-sfc: improve type inference for generic type aliases types (#12876 ) (d9dd628 ), closes #12872
compiler-sfc: throw mismatched script langs error before invoking babel (#13194 ) (0562548 ), closes #13193
compiler-ssr: disable v-memo transform in ssr vdom fallback branch (#13725 ) (0a202d8 ), closes #13724
devtools: clear performance measures (#13701 ) (c875019 ), closes #13700
hmr: prevent updating unmounting component during HMR rerender (#13775 ) (6e5143d ), closes #13771 #13772
hydration: also set vShow name if __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__ flag is enabled (#13777 ) (439e1a5 ), closes #13744
reactivity: warn on nested readonly ref update during unwrapping (#12141 ) (1498821 )
runtime-core: avoid setting direct ref of useTemplateRef in dev (#13449 ) (4a2953f )
runtime-core: improve consistency of PublicInstanceProxyHandlers.has (#13507 ) (d7283f3 )
suspense: don't immediately resolve suspense on last dep unmount (#13456 ) (a871315 ), closes #13453
transition: handle KeepAlive + transition leaving edge case (#13152 ) (3190b17 ), closes #13153
3.5.18 (2025-07-23)
Bug Fixes
compiler-core: avoid cached text vnodes retaining detached DOM nodes (#13662 ) (00695a5 ), closes #13661
compiler-core: avoid self updates of v-pre (#12556 ) (21b685a )
compiler-core: identifiers in function parameters should not be inferred as references (#13548 ) (9b02923 )
compiler-core: recognize empty string as non-identifier (#12553 ) (ce93339 )
compiler-core: transform empty v-bind dynamic argument content correctly (#12554 ) (d3af67e )
compiler-sfc: transform empty srcset w/ includeAbsolute: true (#13639 ) (d8e40ef ), closes vitejs/vite-plugin-vue#631
css-vars: nullish v-bind in style should not lead to unexpected inheritance (#12461 ) (c85f1b5 ), closes #12434 #12439 #7474 #7475
custom-element: ensure exposed methods are accessible from custom elements by making them enumerable (#13634 ) (90573b0 ), closes #13632
hydration: prevent lazy hydration for updated components (#13511 ) (a9269c6 ), closes #13510
runtime-core: ensure correct anchor el for unresolved async components (#13560 ) (7f29943 ), closes #13559
slots: refine internal key checking to support slot names starting with an underscore (#13612 ) (c5f7db1 ), closes #13611
ssr: ensure empty slots render as a comment node in Transition (#13396 ) (8cfc10a ), closes #13394
3.5.17 (2025-06-18)
Bug Fixes
compat: allow v-model built in modifiers on component (#12654 ) (cb14b86 ), closes #12652
compile-sfc: handle mapped types work with omit and pick (#12648 ) (4eb46e4 ), closes #12647
compiler-core: do not increase newlines in InEntity state (#13362 ) (f05a8d6 )
compiler-core: ignore whitespace when matching adjacent v-if (#12321 ) (10ebcef ), closes #9173
compiler-core: prevent comments from blocking static node hoisting (#13345 ) (55dad62 ), closes #13344
compiler-sfc: improved type resolution for function type aliases (#13452 ) (f3479aa ), closes #13444
custom-element: ensure configureApp is applied to async component (#12607 ) (5ba1afb ), closes #12448
custom-element: prevent injecting child styles if shadowRoot is false (#12769 ) (73055d8 ), closes #12630
reactivity: add __v_skip flag to Dep to prevent reactive conversion (#12804 ) (e8d8f5f ), closes #12803
runtime-core: unset old ref during patching when new ref is absent (#12900 ) (47ddf98 ), closes #12898
slots: make cache indexes marker non-enumerable (#13469 ) (919c447 ), closes #13468
ssr: handle initial selected state for select with v-model + v-for/v-if option (#13487 ) (1552095 ), closes #13486
types: typo of vOnce and vSlot (#13343 ) (762fae4 )
3.5.16 (2025-05-29)
Reverts
Revert "fix(compiler-sfc): add scoping tag to trailing universal selector" (#13406 ) (19f23b1 ), closes #13406
Revert "fix(compiler-sfc): add error handling for defineModel() without variable" (#13390 ) (42f879f ), closes #13390
3.5.15 (2025-05-26)
Bug Fixes
compat: ensure false value on input retains value attribute (#13216 ) (1a66474 ), closes #13205
compat: should not warn COMPILER_V_BIND_OBJECT_ORDER when using v-bind together with v-for (#12993 ) (93949e6 ), closes #12992
compile-sfc: handle inline template source map in prod build (#12701 ) (89edc6c ), closes #12682 vitejs/vite-plugin-vue#500
compiler-core: ensure mapping is added only if node source is available (#13285 ) (d37a2ac ), closes #13261 vitejs/vite-plugin-vue#368
compiler-dom: improve HTML nesting validation to allow any child element within template tag (#13320 ) (163b365 ), closes #13318
compiler-sfc: add error handling for defineModel() without variable assignment (#13352 ) (00734af ), closes #13280
compiler-sfc: add scoping tag to trailing universal selector (#12918 ) (949df80 ), closes #12906
compiler-sfc: improve type inference for TSTypeAliasDeclaration with better runtime type detection (#13245 ) (cf5a5e0 ), closes #13240
compiler-sfc: simulate allowArbitraryExtensions on resolving type (#13301 ) (f7ce5ae ), closes #13295
custom-element: allow injecting values from app context in nested elements (#13219 ) (b991075 ), closes #13212
custom-element: ensure proper remount and prevent redundant slot parsing with shadowRoot false (#13201 ) (1d41d4d ), closes #13199
custom-element: preserve appContext during update (#12455 ) (013749e ), closes #12453
custom-element: properly resolve props for sync component defs (#12855 ) (a683c80 ), closes #12854
hydration: handle transition appear hydration edge case (#13339 ) (35aeae7 ), closes #13335
hydration: skip lazy hydration for patched components (#13283 ) (80055fd ), closes #13255
suspense: handle edge case in patching list nodes within Suspense (#13306 ) (772b008 ), closes #13305
teleport: handle deferred teleport updates before and after mount (#13350 ) (d15dce3 ), closes #13349
types: avoid merging component instance into $props in ComponentInstance (#12870 ) (f44feed ), closes #12751
types: exclude undefined from inferred prop types with default values (#13007 ) (5179d32 ), closes #13006
watch: update oldValue before running cb to prevent stale value (#12296 ) (c69c4bb ), closes #12294
3.5.14 (2025-05-15)
Bug Fixes
compat: correct deprecation message for v-bind.sync usage (#13137 ) (466b30f ), closes #13133
compiler-core: remove slot cache from parent renderCache during unmounting (#13215 ) (5d166f3 )
compiler-sfc: fix scope handling for props destructure in function parameters and catch clauses (8e34357 ), closes #12790
compiler-sfc: treat the return value of useTemplateRef as a definite ref (#13197 ) (8ae1122 )
compiler: fix spelling error in domTagConfig (#13043 ) (388295b )
customFormatter: properly accessing ref value during debugger (#12948 ) (fdbd026 )
hmr/teleport: adjust static children traversal for HMR in dev mode (#12819 ) (5e37dd0 ), closes #12816
hmr: avoid hydration for hmr root reload (#12450 ) (1f98a9c ), closes vitejs/vite-plugin-vue#146 vitejs/vite-plugin-vue#477
hmr: avoid hydration for hmr updating (#12262 ) (9c4dbbc ), closes #7706 #8170
reactivity: ensure markRaw objects are not reactive (#12824 ) (295b5ec ), closes #12807
reactivity: ensure multiple effectScope on() and off() calls maintains correct active scope (22dcbf3 ), closes #12631 #12632 #12641
reactivity: should not recompute if computed does not track reactive data (#12341 ) (0b23fd2 ), closes #12337
runtime-core: stop tracking deps in setRef during unmount (#13210 ) (016c472 )
runtime-core: update __vnode of static nodes when patching along the optimized path (#13223 ) (b3ecee3 )
runtime-core: inherit comment nodes during block patch in production build (#10748 ) (6264505 ), closes #10747 #12650
runtime-core: prevent unmounted vnode from being inserted during transition leave (#12862 ) (d6a6ec1 ), closes #12860
runtime-core: respect immutability for readonly reactive arrays in v-for (#13091 ) (3f27c58 ), closes #13087
runtime-dom: always treat autocorrect as attribute (#13001 ) (1499135 ), closes #5705
slots: properly warn if slot invoked in setup (#12195 ) (9196222 ), closes #12194
ssr: properly init slots during ssr rendering (#12441 ) (2206cd2 ), closes #12438
transition: fix KeepAlive with transition out-in mode behavior in production (#12468 ) (343c891 ), closes #12465
TransitionGroup: reset prevChildren to prevent memory leak (#13183 ) (8b848cb ), closes #13181
types: allow return any for Options API lifecycle hooks (#5914 ) (06310e8 )
types: the directive's modifiers should be optional (#12605 ) (10e54dc )
typos: fix comments referencing transformElement.ts (#12551 )ci-skip
Features
3.5.13 (2024-11-15)
Bug Fixes
compiler-core: handle v-memo + v-for with functional key (#12014 ) (99009ee ), closes #12013
compiler-dom: properly stringify template string style (#12392 ) (2d78539 ), closes #12391
custom-element: avoid triggering mutationObserver when relecting props (352bc88 ), closes #12214 #12215
deps: update dependency postcss to ^8.4.48 (#12356 ) (b5ff930 )
hydration: the component vnode's el should be updated when a mismatch occurs. (#12255 ) (a20a4cb ), closes #12253
reactivity: avoid unnecessary watcher effect removal from inactive scope (2193284 ), closes #5783 #5806
reactivity: release nested effects/scopes on effect scope stop (#12373 ) (bee2f5e ), closes #12370
runtime-dom: set css vars before user onMounted hooks (2d5c5e2 ), closes #11533
runtime-dom: set css vars on update to handle child forcing reflow in onMount (#11561 ) (c4312f9 )
ssr: avoid updating subtree of async component if it is resolved (#12363 ) (da7ad5e ), closes #12362
ssr: ensure v-text updates correctly with custom directives in SSR output (#12311 ) (1f75d4e ), closes #12309
ssr: handle initial selected state for select with v-model + v-for option (#12399 ) (4f8d807 ), closes #12395
teleport: handle deferred teleport update before mounted (#12168 ) (8bff142 ), closes #12161
templateRef: set ref on cached async component which wrapped in KeepAlive (#12290 ) (983eb50 ), closes #4999 #5004
test: update snapshot (#12169 ) (828d4a4 )
Transition: fix transition memory leak edge case (#12182 ) (660132d ), closes #12181
transition: reflow before leave-active class after leave-from (#12288 ) (4b479db ), closes #2593
types: defineEmits w/ interface declaration (#12343 ) (1022eab ), closes #8457
v-once: setting hasOnce to current block only when in v-once (#12374 ) (37300fc ), closes #12371
Performance Improvements
reactivity: do not track inner key __v_skip` (#11690 ) (d637bd6 )
runtime-core: use feature flag for call to resolveMergedOptions (#12163 ) (1755ac0 )
3.5.12 (2024-10-11)
Bug Fixes
compiler-dom: avoid stringify option with null value (#12096 ) (f6d9926 ), closes #12093
compiler-sfc: do not skip TSInstantiationExpression when transforming props destructure (#12064 ) (d3ecde8 )
compiler-sfc: use sass modern api if available and avoid deprecation warning (#11992 ) (4474c11 )
compiler: clone loc to ifNode (#12131 ) (cde2c06 ), closes vuejs/language-tools#4911
custom-element: properly remove hyphenated attribute (#12143 ) (e16e9a7 ), closes #12139
defineModel: handle kebab-case model correctly (#12063 ) (c0418a3 ), closes #12060
deps: update dependency monaco-editor to ^0.52.0 (#12119 ) (f7cbea2 )
hydration: provide compat fallback for idle callback hydration strategy (#11935 ) (1ae545a )
reactivity: trigger reactivity for Map key undefined (#12055 ) (7ad289e ), closes #12054
runtime-core: allow symbol values for slot prop key (#12069 ) (d9d4d4e ), closes #12068
runtime-core: fix required prop check false positive for kebab-case edge cases (#12034 ) (9da1ac1 ), closes #12011
runtime-dom: prevent unnecessary updates in v-model checkbox when value is unchanged (#12146 ) (ea943af ), closes #12144
teleport: handle disabled teleport with updateCssVars (#12113 ) (76a8223 ), closes #12112
transition/ssr: make transition appear work with Suspense in SSR (#12047 ) (f1a4f67 ), closes #12046
types: ensure this.$props type does not include string (#12123 ) (704173e ), closes #12122
types: retain union type narrowing with defaults applied (#12108 ) (05685a9 ), closes #12106
useId: ensure useId consistency when using serverPrefetch (#12128 ) (b4d3534 ), closes #12102
watch: watchEffect clean-up with SSR (#12097 ) (b094c72 ), closes #11956
Performance Improvements
reactivity: avoid unnecessary recursion in removeSub (#12135 ) (ec917cf )
3.5.11 (2024-10-03)
Bug Fixes
compiler-sfc: do not skip TSSatisfiesExpression when transforming props destructure (#12062 ) (2328b05 ), closes #12061
reactivity: prevent overwriting next property during batch processing (#12075 ) (d3f5e6e ), closes #12072
scheduler: job ordering when the post queue is flushing (#12090 ) (577edca )
types: correctly infer TypeProps when it is any (#12073 ) (57315ab ), closes #12058
types: should not intersect PublicProps with Props (#12077 ) (6f85894 )
types: infer the first generic type of Ref correctly (#12094 ) (c97bb84 )
3.5.10 (2024-09-27)
Bug Fixes
custom-element: properly set kebab-case props on Vue custom elements (ea3efa0 ), closes #12030 #12032
reactivity: fix nested batch edge case (93c95dd )
reactivity: only clear notified flags for computed in first batch iteration (aa9ef23 ), closes #12045
types/ref: handle nested refs in UnwrapRef (#12049 ) (e2c19c2 ), closes #12044
3.5.9 (2024-09-26)
Bug Fixes
3.5.8 (2024-09-22)
Bug Fixes
reactivity: do not remove dep from depsMap when cleaning up deps of computed (#11995 ) (0267a58 )
3.5.7 (2024-09-20)
Bug Fixes
Performance Improvements
hydration: avoid observer if element is in viewport (#11639 ) (e075dfa )
3.5.6 (2024-09-16)
Bug Fixes
compile-dom: should be able to stringify mathML (#11891 ) (85c138c )
compiler-sfc: preserve old behavior when using withDefaults with desutructure (8492c3c ), closes #11930
reactivity: avoid exponential perf cost and reduce call stack depth for deeply chained computeds (#11944 ) (c74bb8c ), closes #11928
reactivity: rely on dirty check only when computed has deps (#11931 ) (aa5dafd ), closes #11929
watch: once option should be ignored by watchEffect (#11884 ) (49fa673 )
watch: unwatch should be callable during SSR (#11925 ) (2d6adf7 ), closes #11924
3.5.5 (2024-09-13)
Bug Fixes
compiler-core: fix handling of delimiterOpen in VPre (#11915 ) (706d4ac ), closes #11913
compiler-dom: fix stringify static edge for partially eligible chunks in cached parent (1d99d61 ), closes #11879 #11890
compiler-dom: should ignore leading newline in per spec (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3c4bf7627649ec1e3220f8c4e4163c20d2afb367"><code>3c4bf76276</code></a>"><a href="/vuejs/core/commit/3c4bf76"><code>3c4bf76</code></a></a>)</li>
<li><strong>compiler-sfc:</strong> nested css supports atrule and comment (<a href="https://github.com/vuejs/core/issues/11899">#11899</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/0e7bc717e6640644f062957ec5031506f0dab215"><code>0e7bc717e6</code></a>"><a href="/vuejs/core/commit/0e7bc71"><code>0e7bc71</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11896">#11896</a></li>
<li><strong>custom-element:</strong> handle nested customElement mount w/ shadowRoot false (<a href="https://github.com/vuejs/core/issues/11861">#11861</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/f2d801918841e7673ff3f048d0d895592a2f7e23"><code>f2d8019188</code></a>"><a href="/vuejs/core/commit/f2d8019"><code>f2d8019</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11851">#11851</a> <a href="https://github.com/vuejs/core/issues/11871">#11871</a></li>
<li><strong>hmr:</strong> reload async child wrapped in Suspense + KeepAlive (<a href="https://github.com/vuejs/core/issues/11907">#11907</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/10a2c6053bd30d160d0214bb3566f540187e6874"><code>10a2c6053b</code></a>"><a href="/vuejs/core/commit/10a2c60"><code>10a2c60</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11868">#11868</a></li>
<li><strong>hydration:</strong> fix mismatch of leading newline in <code><textarea></code> and <code><pre></code> (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a5f3c2eb4d2e7fae93ff93ce865b269f01cc825e"><code>a5f3c2eb4d</code></a>"><a href="/vuejs/core/commit/a5f3c2e"><code>a5f3c2e</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11873">#11873</a> <a href="https://github.com/vuejs/core/issues/11874">#11874</a></li>
<li><strong>reactivity:</strong> properly clean up deps, fix memory leak (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/8ea5d6d6981ab7febda0be43c3c92b18869c3a2a"><code>8ea5d6d698</code></a>"><a href="/vuejs/core/commit/8ea5d6d"><code>8ea5d6d</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11901">#11901</a></li>
<li><strong>runtime-core:</strong> properly update async component nested in KeepAlive (<a href="https://github.com/vuejs/core/issues/11917">#11917</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/7fe6c795a1fc7ddcea5ad91a56141561192373ac"><code>7fe6c795a1</code></a>"><a href="/vuejs/core/commit/7fe6c79"><code>7fe6c79</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11916">#11916</a></li>
<li><strong>TransitionGroup:</strong> not warn unkeyed text children with whitespece preserve (<a href="https://github.com/vuejs/core/issues/11888">#11888</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/7571f20bc3d1854377a146f41d211e05bb68cd47"><code>7571f20bc3</code></a>"><a href="/vuejs/core/commit/7571f20"><code>7571f20</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11885">#11885</a></li>
</ul>
<h2><a href="https://github.com/vuejs/core/compare/v3.5.3...v3.5.4">3.5.4</a> (2024-09-10)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler-sfc:</strong> correct scoped injection for nesting selector (<a href="https://github.com/vuejs/core/issues/11854">#11854</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/b1de75ed04626b6423085dfde91fb0cb481a25e8"><code>b1de75ed04</code></a>"><a href="/vuejs/core/commit/b1de75e"><code>b1de75e</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10567">#10567</a></li>
<li><strong>reactivity:</strong> fix markRaw error on already marked object (<a href="https://github.com/vuejs/core/issues/11864">#11864</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/67d6596d40b1807b9cd8eb0d9282932ea77be3c0"><code>67d6596d40</code></a>"><a href="/vuejs/core/commit/67d6596"><code>67d6596</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11862">#11862</a></li>
<li>Revert "fix: Revert "fix(reactivity): self-referencing computed should refresh"" (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e596378e0be728dad7d60938449f3fa557ca2ec9"><code>e596378e0b</code></a>"><a href="/vuejs/core/commit/e596378"><code>e596378</code></a></a>)</li>
<li><strong>runtime-core:</strong> handle shallow reactive arrays in renderList correctly (<a href="https://github.com/vuejs/core/issues/11870">#11870</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/ced59ab8f2f2e89c13119bab3a0c25a1a1f1c3d6"><code>ced59ab8f2</code></a>"><a href="/vuejs/core/commit/ced59ab"><code>ced59ab</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11869">#11869</a></li>
<li><strong>types:</strong> correctly infer <code>TypeEmits</code> with both tuple and function syntax (<a href="https://github.com/vuejs/core/issues/11840">#11840</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/dad673809929c084dcb8e42640eb7daa675d4ea4"><code>dad6738099</code></a>"><a href="/vuejs/core/commit/dad6738"><code>dad6738</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11836">#11836</a></li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>reactivity:</strong> trigger deps directly instead of storing in an array first (<a href="https://github.com/vuejs/core/issues/11695">#11695</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/f80d447c17662556e9e3f99f6d199967f4c8cf3d"><code>f80d447c17</code></a>"><a href="/vuejs/core/commit/f80d447"><code>f80d447</code></a></a>)</li>
</ul>
<h2><a href="https://github.com/vuejs/core/compare/v3.5.2...v3.5.3">3.5.3</a> (2024-09-06)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>hydration:</strong> check __asyncHydrate presence for vue3-lazy-hydration compat (<a href="https://github.com/vuejs/core/issues/11825">#11825</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/8e6c3378676be05cea7f53664442acdfb86784f9"><code>8e6c337867</code></a>"><a href="/vuejs/core/commit/8e6c337"><code>8e6c337</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11793">#11793</a></li>
<li>Revert "fix(reactivity): self-referencing computed should refresh" (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/35c760f82f749f7c6e3f9bfead8221ce498e892f"><code>35c760f82f</code></a>"><a href="/vuejs/core/commit/35c760f"><code>35c760f</code></a></a>)</li>
<li><strong>ssr:</strong> respect app.config.warnHandler during ssr (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/bf3d9a2af41659a743706306fc798b3d215df5af"><code>bf3d9a2af4</code></a>"><a href="/vuejs/core/commit/bf3d9a2"><code>bf3d9a2</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11830">#11830</a></li>
<li><strong>Transition:</strong> handle KeepAlive child unmount in Transition out-in mode (<a href="https://github.com/vuejs/core/issues/11833">#11833</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6b7901d28ed3a6a9242c666cc1b8e3c0b0b0fe62"><code>6b7901d28e</code></a>"><a href="/vuejs/core/commit/6b7901d"><code>6b7901d</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11775">#11775</a></li>
<li><strong>useId:</strong> make generated IDs selector compatible (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/babfb4cbcbf98601d76c1d7653eae8d250ce2710"><code>babfb4cbcb</code></a>"><a href="/vuejs/core/commit/babfb4c"><code>babfb4c</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11828">#11828</a></li>
</ul>
<h2><a href="https://github.com/vuejs/core/compare/v3.5.1...v3.5.2">3.5.2</a> (2024-09-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>reactivity:</strong> make toRaw work on proxies created by proxyRef (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/46c3ab1d714024894fa1d33e495d5d35c7817d4d"><code>46c3ab1d71</code></a>"><a href="/vuejs/core/commit/46c3ab1"><code>46c3ab1</code></a></a>)</li>
<li><strong>reactivity:</strong> pass oldValue to computed getter (<a href="https://github.com/vuejs/core/issues/11813">#11813</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/98864a7ef5c8080c407166c8221488a4eacbbc81"><code>98864a7ef5</code></a>"><a href="/vuejs/core/commit/98864a7"><code>98864a7</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11812">#11812</a></li>
<li><strong>reactivity:</strong> prevent endless recursion in computed getters (<a href="https://github.com/vuejs/core/issues/11797">#11797</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/716275d1b1d2383d8ef0306fcd94558d4d9170f2"><code>716275d1b1</code></a>"><a href="/vuejs/core/commit/716275d"><code>716275d</code></a></a>)</li>
<li><strong>reactivity:</strong> self-referencing computed should refresh (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e84c4a608e9dc96fb2a4a29d538bcc64f26103a2"><code>e84c4a608e</code></a>"><a href="/vuejs/core/commit/e84c4a6"><code>e84c4a6</code></a></a>), closes <a href="https://github.com//github.com/vuejs/core/pull/11797/issues/issuecomment-2330738633">/github.com/vuejs/core/pull/11797#issuecomment-2330738633</a></li>
<li><strong>scheduler:</strong> prevent duplicate jobs being queued (<a href="https://github.com/vuejs/core/issues/11826">#11826</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/df56cc528793b1d6131a1e64095dd5cb95c56bee"><code>df56cc5287</code></a>"><a href="/vuejs/core/commit/df56cc5"><code>df56cc5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11712">#11712</a> <a href="https://github.com/vuejs/core/issues/11807">#11807</a></li>
<li><strong>suspense:</strong> avoid updating anchor if activeBranch has not been rendered to the actual container (<a href="https://github.com/vuejs/core/issues/11818">#11818</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3c0d531fa7fe762bfe46fbe63f318adc95221795"><code>3c0d531fa7</code></a>"><a href="/vuejs/core/commit/3c0d531"><code>3c0d531</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11806">#11806</a></li>
<li><strong>Transition:</strong> handle KeepAlive child unmount in Transition out-in mode (<a href="https://github.com/vuejs/core/issues/11778">#11778</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/311655352931863dfcf520b8cf29cebc5b7e1e00"><code>3116553529</code></a>">3116553</a>), closes <a href="https://github.com/vuejs/core/issues/11775">#11775</a></li>
<li><strong>types:</strong> add HTMLDialogElement missing close event (<a href="https://github.com/vuejs/core/issues/11811">#11811</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3634f7a4c1649ad2e7e969eb4512512868c61d01"><code>3634f7a4c1</code></a>"><a href="/vuejs/core/commit/3634f7a"><code>3634f7a</code></a></a>)</li>
<li><strong>types:</strong> added name attribute support to details tag (<a href="https://github.com/vuejs/core/issues/11823">#11823</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/c74176ec7b4d1d34159ce21d600c04b157ac5549"><code>c74176ec7b</code></a>"><a href="/vuejs/core/commit/c74176e"><code>c74176e</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11821">#11821</a></li>
<li><strong>types:</strong> fix defineComponent props inference when setup() has explicit annotation (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/fca20a39aa4a6f98c8f972bd435ebb7dc535648a"><code>fca20a39aa</code></a>"><a href="/vuejs/core/commit/fca20a3"><code>fca20a3</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11803">#11803</a></li>
<li><strong>useTemplateRef:</strong> properly fix readonly warning in dev and ensure prod behavior consistency (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9b7797d0d1fc773e979e042673d5b9b3151c40fc"><code>9b7797d0d1</code></a>"><a href="/vuejs/core/commit/9b7797d"><code>9b7797d</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11808">#11808</a> <a href="https://github.com/vuejs/core/issues/11816">#11816</a> <a href="https://github.com/vuejs/core/issues/11810">#11810</a></li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>compiler-core:</strong> parse modifiers as expression to provide location data (<a href="https://github.com/vuejs/core/issues/11819">#11819</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3f13203564164eeb2945bdc0b9ef755c37477d75"><code>3f13203564</code></a>"><a href="/vuejs/core/commit/3f13203"><code>3f13203</code></a></a>)</li>
</ul>
<h2><a href="https://github.com/vuejs/core/compare/v3.5.0...v3.5.1">3.5.1</a> (2024-09-04)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>build:</strong> improve built-in components treeshakability (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/4eee630b3122a10d0baf9b91358cfffa92d6fd81"><code>4eee630b31</code></a>"><a href="/vuejs/core/commit/4eee630"><code>4eee630</code></a></a>)</li>
<li><strong>reactivity:</strong> handle non-array arguments in reactive <code>concat</code> method (<a href="https://github.com/vuejs/core/issues/11794">#11794</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/475977a6f76b77392610e0a3ec2b0e076d1e1d59"><code>475977a6f7</code></a>"><a href="/vuejs/core/commit/475977a"><code>475977a</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11792">#11792</a></li>
<li><strong>Transition:</strong> avoid applying transition hooks on comment vnode (<a href="https://github.com/vuejs/core/issues/11788">#11788</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/51912f8a02e35f172f6d30ed7a2f3a92c1407cf9"><code>51912f8a02</code></a>"><a href="/vuejs/core/commit/51912f8"><code>51912f8</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11782">#11782</a></li>
<li><strong>types:</strong> avoid using intersection type in <code>Readonly<...></code> to fix JSDoc emit (<a href="https://github.com/vuejs/core/issues/11799">#11799</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/7518bc19dc73ba46dcf1eef6e23f9e6e75552675"><code>7518bc19dc</code></a>"><a href="/vuejs/core/commit/7518bc1"><code>7518bc1</code></a></a>)</li>
<li><strong>useTemplateRef:</strong> fix readonly warning when useTemplateRef has same variable name as template ref (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/bc63df01992fdbf0b6749ad234153725697ed896"><code>bc63df0199</code></a>"><a href="/vuejs/core/commit/bc63df0"><code>bc63df0</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11795">#11795</a> <a href="https://github.com/vuejs/core/issues/11802">#11802</a> <a href="https://github.com/vuejs/core/issues/11804">#11804</a></li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.5.0-rc.1...v3.5.0">3.5.0</a> (2024-09-03)</h1>
<h2>Aggregated Features List for 3.5 (alpha to stable)</h2>
<h3>Reactivity</h3>
<ul>
<li><strong>reactivity</strong>: Refactor reactivity system to use version counting and doubly-linked list tracking (<a href="https://github.com/vuejs/core/pull/10397">#10397</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/05eb4e0fefd585125dd60b7f8fe9c36928d921aa"><code>05eb4e0fef</code></a>"><a href="/vuejs/core/commit/05eb4e0"><code>05eb4e0</code></a></a>)</li>
<li><strong>reactivity</strong>: Optimize array tracking (<a href="https://github.com/vuejs/core/pull/9511">#9511</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/70196a40cc078f50fcc1110c38c06fbcc70b205e"><code>70196a40cc</code></a>"><a href="/vuejs/core/commit/70196a4"><code>70196a4</code></a></a>)</li>
<li><strong>compiler-sfc:</strong> enable reactive props destructure by default (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d2dac0e359c47d1ed0aa77eda488e76fd6466d2d"><code>d2dac0e359</code></a>"><a href="/vuejs/core/commit/d2dac0e"><code>d2dac0e</code></a></a>)</li>
<li><strong>reactivity:</strong> <code>onEffectCleanup</code> API (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/2cc5615590de77126e8df46136de0240dbde5004"><code>2cc5615590</code></a>"><a href="/vuejs/core/commit/2cc5615"><code>2cc5615</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10173">#10173</a></li>
<li><strong>reactivity:</strong> add <code>failSilently</code> argument for <code>onScopeDispose</code> (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9a936aaec489c79433a32791ecf5ddb1739a62bd"><code>9a936aaec4</code></a>"><a href="/vuejs/core/commit/9a936aa"><code>9a936aa</code></a></a>)</li>
<li><strong>reactivity/watch:</strong> base <code>watch</code>, <code>getCurrentWatcher</code>, and <code>onWatcherCleanup</code> (<a href="https://github.com/vuejs/core/issues/9927">#9927</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/205e5b5e277243c3af2c937d9bd46cf671296b72"><code>205e5b5e27</code></a>"><a href="/vuejs/core/commit/205e5b5"><code>205e5b5</code></a></a>)</li>
<li><strong>reactivity/watch:</strong> add pause/resume for ReactiveEffect, EffectScope, and WatchHandle (<a href="https://github.com/vuejs/core/issues/9651">#9651</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/267093c31490050bfcf3ff2b30a2aefee2dad582"><code>267093c314</code></a>"><a href="/vuejs/core/commit/267093c"><code>267093c</code></a></a>)</li>
<li><strong>watch:</strong> support passing number to <code>deep</code> option to control the watch depth (<a href="https://github.com/vuejs/core/issues/9572">#9572</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/22f7d96757956ebe0baafe52256aa327908cc51c"><code>22f7d96757</code></a>"><a href="/vuejs/core/commit/22f7d96"><code>22f7d96</code></a></a>)</li>
<li><strong>types:</strong> export <code>MultiWatchSources</code> type (<a href="https://github.com/vuejs/core/issues/9563">#9563</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/998dca59f140420280803233f41707580688562c"><code>998dca59f1</code></a>"><a href="/vuejs/core/commit/998dca5"><code>998dca5</code></a></a>)</li>
<li><strong>types:</strong> allow computed getter and setter types to be unrelated (<a href="https://github.com/vuejs/core/issues/11472">#11472</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a01675ef8f99b5acd6832c53051f4415b18609f2"><code>a01675ef8f</code></a>"><a href="/vuejs/core/commit/a01675e"><code>a01675e</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7271">#7271</a></li>
</ul>
<h3>SSR</h3>
<ul>
<li><strong>runtime-core:</strong> <code>useId()</code> and <code>app.config.idPrefix</code> (<a href="https://github.com/vuejs/core/issues/11404">#11404</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/73ef1561f6905d69f968c094d0180c61824f1247"><code>73ef1561f6</code></a>"><a href="/vuejs/core/commit/73ef156"><code>73ef156</code></a></a>)</li>
<li><strong>hydration:</strong> lazy hydration strategies for async components (<a href="https://github.com/vuejs/core/issues/11458">#11458</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d14a11c1cdcee88452f17ce97758743c863958f4"><code>d14a11c1cd</code></a>"><a href="/vuejs/core/commit/d14a11c"><code>d14a11c</code></a></a>)</li>
<li><strong>hydration:</strong> support suppressing hydration mismatch via data-allow-mismatch (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/94fb2b8106a66bcca1a3f922a246a29fdd1274b1"><code>94fb2b8106</code></a>"><a href="/vuejs/core/commit/94fb2b8"><code>94fb2b8</code></a></a>)</li>
</ul>
<h3>Custom Element</h3>
<ul>
<li><strong>custom-element:</strong> <code>useHost()</code> helper (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/775103af37df69d34c79f12c4c1776c47d07f0a0"><code>775103af37</code></a>"><a href="/vuejs/core/commit/775103a"><code>775103a</code></a></a>)</li>
<li><strong>custom-element:</strong> <code>useShadowRoot()</code> helper (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5a1a89bd6178cc2f84ba91da7d72aee4c6ec1282"><code>5a1a89bd61</code></a>"><a href="/vuejs/core/commit/5a1a89b"><code>5a1a89b</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6113">#6113</a> <a href="https://github.com/vuejs/core/issues/8195">#8195</a></li>
<li><strong>custom-element:</strong> expose <code>this.$host</code> in Options API (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/1ef8f46af0cfdec2fed66376772409e0aa25ad50"><code>1ef8f46af0</code></a>"><a href="/vuejs/core/commit/1ef8f46"><code>1ef8f46</code></a></a>)</li>
<li><strong>custom-element:</strong> inject child components styles to custom element shadow root (<a href="https://github.com/vuejs/core/issues/11517">#11517</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/56c76a8b05c45f782ed3a16ec77c6292b71a17f1"><code>56c76a8b05</code></a>"><a href="/vuejs/core/commit/56c76a8"><code>56c76a8</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4662">#4662</a> <a href="https://github.com/vuejs/core/issues/7941">#7941</a> <a href="https://github.com/vuejs/core/issues/7942">#7942</a></li>
<li><strong>custom-element:</strong> support configurable app instance in defineCustomElement (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6758c3cd0427f97394d95168c655dae3b7fa62cd"><code>6758c3cd04</code></a>"><a href="/vuejs/core/commit/6758c3c"><code>6758c3c</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4356">#4356</a> <a href="https://github.com/vuejs/core/issues/4635">#4635</a></li>
<li><strong>custom-element:</strong> support css <code>:host</code> selector by applying css vars on host element (<a href="https://github.com/vuejs/core/issues/8830">#8830</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/03a9ea2b88df0842a820e09f7445c4b9189e3fcb"><code>03a9ea2b88</code></a>"><a href="/vuejs/core/commit/03a9ea2"><code>03a9ea2</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/8826">#8826</a></li>
<li><strong>custom-element:</strong> support emit with options (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e181bff6dc39d5cef92000c10291243c7d6e4d08"><code>e181bff6dc</code></a>"><a href="/vuejs/core/commit/e181bff"><code>e181bff</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7605">#7605</a></li>
<li><strong>custom-element:</strong> support expose on customElement (<a href="https://github.com/vuejs/core/issues/6256">#6256</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/af838c1b5ec23552e52e64ffa7db0eb0246c3624"><code>af838c1b5e</code></a>"><a href="/vuejs/core/commit/af838c1"><code>af838c1</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5540">#5540</a></li>
<li><strong>custom-element:</strong> support <code>nonce</code> option for injected style tags (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/bb4a02a70c30e739a3c705b3d96d09258d7d7ded"><code>bb4a02a70c</code></a>"><a href="/vuejs/core/commit/bb4a02a"><code>bb4a02a</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6530">#6530</a></li>
<li><strong>custom-element:</strong> support passing custom-element-specific options via 2nd argument of defineCustomElement (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/60a88a2b129714186cf6ba66f30f31d733d0311e"><code>60a88a2b12</code></a>"><a href="/vuejs/core/commit/60a88a2"><code>60a88a2</code></a></a>)</li>
<li><strong>custom-element:</strong> support <code>shadowRoot: false</code> in <code>defineCustomElement()</code> (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/37d2ce5d8e0fac4a00064f02b05f91f69b2d5d5e"><code>37d2ce5d8e</code></a>"><a href="/vuejs/core/commit/37d2ce5"><code>37d2ce5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4314">#4314</a> <a href="https://github.com/vuejs/core/issues/4404">#4404</a></li>
</ul>
<h3>Teleport</h3>
<ul>
<li><strong>teleport:</strong> support deferred Teleport (<a href="https://github.com/vuejs/core/issues/11387">#11387</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/59a3e88903b10ac2278170a44d5a03f24fef23ef"><code>59a3e88903</code></a>"><a href="/vuejs/core/commit/59a3e88"><code>59a3e88</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/2015">#2015</a> <a href="https://github.com/vuejs/core/issues/11386">#11386</a></li>
<li><strong>teleport/transition:</strong> support directly nesting Teleport inside Transition (<a href="https://github.com/vuejs/core/issues/6548">#6548</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/0e6e3c7eb0e5320b7c1818e025cb4a490fede9c0"><code>0e6e3c7eb0</code></a>"><a href="/vuejs/core/commit/0e6e3c7"><code>0e6e3c7</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5836">#5836</a></li>
</ul>
<h3>Misc</h3>
<ul>
<li><strong>runtime-core:</strong> <code>useTemplateRef()</code> (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3ba70e49b5856c53611c314d4855d679a546a7df"><code>3ba70e49b5</code></a>"><a href="/vuejs/core/commit/3ba70e4"><code>3ba70e4</code></a></a>)</li>
<li><strong>runtime-core:</strong> add <code>app.onUnmount()</code> for registering cleanup functions (<a href="https://github.com/vuejs/core/issues/4619">#4619</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/582a3a382b1adda565bac576b913a88d9e8d7a9e"><code>582a3a382b</code></a>"><a href="/vuejs/core/commit/582a3a3"><code>582a3a3</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4516">#4516</a></li>
<li><strong>runtime-core:</strong> add <code>app.config.throwUnhandledErrorInProduction</code> (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/f476b7f030f2dd427ca655fcea36f4933a4b4da0"><code>f476b7f030</code></a>"><a href="/vuejs/core/commit/f476b7f"><code>f476b7f</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7876">#7876</a></li>
<li><strong>runtime-dom:</strong> Trusted Types compatibility (<a href="https://github.com/vuejs/core/issues/10844">#10844</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6d4eb94853ed1b2b1675bdd7d5ba9c75cc6daed5"><code>6d4eb94853</code></a>"><a href="/vuejs/core/commit/6d4eb94"><code>6d4eb94</code></a></a>)</li>
<li><strong>compiler-core:</strong> support <code>Symbol</code> global in template expressions (<a href="https://github.com/vuejs/core/issues/9069">#9069</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a501a85a7c910868e01a5c70a2abea4e9d9e87f3"><code>a501a85a7c</code></a>"><a href="/vuejs/core/commit/a501a85"><code>a501a85</code></a></a>)</li>
<li><strong>types:</strong> export more emit related types (<a href="https://github.com/vuejs/core/issues/11017">#11017</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/189573dcee2a16bd3ed36ff5589d43f535e5e733"><code>189573dcee</code></a>"><a href="/vuejs/core/commit/189573d"><code>189573d</code></a></a>)</li>
<li><strong>types:</strong> add loading prop to iframe (<a href="https://github.com/vuejs/core/issues/11767">#11767</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d86fe0ec002901dc359a0e85f3a421b4a8538d68"><code>d86fe0ec00</code></a>"><a href="/vuejs/core/commit/d86fe0e"><code>d86fe0e</code></a></a>)</li>
</ul>
<h3>Internals</h3>
<ul>
<li><strong>reactivity:</strong> store value cache on CustomRefs impls (<a href="https://github.com/vuejs/core/issues/11539">#11539</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e044b6e737efc9433d1d84590036b82280da6292"><code>e044b6e737</code></a>"><a href="/vuejs/core/commit/e044b6e"><code>e044b6e</code></a></a>)</li>
<li><strong>types:</strong> provide internal options for directly using user types in language tools (<a href="https://github.com/vuejs/core/issues/10801">#10801</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/75c8cf63a1ef30ac84f91282d66ad3f57c6612e9"><code>75c8cf63a1</code></a>"><a href="/vuejs/core/commit/75c8cf6"><code>75c8cf6</code></a></a>)</li>
<li><strong>types:</strong> provide internal options for using refs type in language tools (<a href="https://github.com/vuejs/core/issues/11492">#11492</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5ffd1a89455807d5069eb2c28eba0379641dca76"><code>5ffd1a8945</code></a>"><a href="/vuejs/core/commit/5ffd1a8"><code>5ffd1a8</code></a></a>)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li><strong>compiler-sfc:</strong> fix import usage check for kebab-case same name shorthand binding (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/0f7c0e5dc0eedada7a5194db87fd0a7dbd1d3354"><code>0f7c0e5dc0</code></a>"><a href="/vuejs/core/commit/0f7c0e5"><code>0f7c0e5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11745">#11745</a> <a href="https://github.com/vuejs/core/issues/11754">#11754</a></li>
<li><strong>cssVars:</strong> correctly escape double quotes in SSR (<a href="https://github.com/vuejs/core/issues/11784">#11784</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/7b5b6e0275f35748dca6d7eb842f8ab2364c6b9a"><code>7b5b6e0275</code></a>"><a href="/vuejs/core/commit/7b5b6e0"><code>7b5b6e0</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11779">#11779</a></li>
<li><strong>deps:</strong> update dependency postcss to ^8.4.44 (<a href="https://github.com/vuejs/core/issues/11774">#11774</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/cb843e0be31f9e563ccfc30eca0c06f2a224b505"><code>cb843e0be3</code></a>"><a href="/vuejs/core/commit/cb843e0"><code>cb843e0</code></a></a>)</li>
<li><strong>hydration:</strong> escape css var name to avoid mismatch (<a href="https://github.com/vuejs/core/issues/11739">#11739</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/ca12e776bc53aaa31f2df6bb6edc6be1b2f10c37"><code>ca12e776bc</code></a>"><a href="/vuejs/core/commit/ca12e77"><code>ca12e77</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11735">#11735</a></li>
<li><strong>hydration:</strong> handle text nodes with 0 during hydration (<a href="https://github.com/vuejs/core/issues/11772">#11772</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/c756da24b2d8635cf52b4c7d3abf5bf938852cc5"><code>c756da24b2</code></a>"><a href="/vuejs/core/commit/c756da2"><code>c756da2</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11771">#11771</a></li>
<li><strong>reactivity:</strong> correctly handle method calls on user-extended arrays (<a href="https://github.com/vuejs/core/issues/11760">#11760</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9817c80187bec6a3344c74d65fac92262de0fcdd"><code>9817c80187</code></a>"><a href="/vuejs/core/commit/9817c80"><code>9817c80</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11759">#11759</a></li>
<li><strong>runtime-dom:</strong> avoid unnecessary prop patch for checkbox (<a href="https://github.com/vuejs/core/issues/11657">#11657</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/c3ce9fe3d8fc27d864ce7148cd36da882cfc21ab"><code>c3ce9fe3d8</code></a>"><a href="/vuejs/core/commit/c3ce9fe"><code>c3ce9fe</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11647">#11647</a></li>
<li><strong>runtime-dom:</strong> prevent unnecessary DOM update from v-model (<a href="https://github.com/vuejs/core/issues/11656">#11656</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/b1be9bd64f2c7c4286fecb25bad5d5edd49efce9"><code>b1be9bd64f</code></a>"><a href="/vuejs/core/commit/b1be9bd"><code>b1be9bd</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11647">#11647</a></li>
<li><strong>server-renderer:</strong> Fix call to serverPrefetch in server renderer with an async setup (<a href="https://github.com/vuejs/core/issues/10893">#10893</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6039e25e04a8c1db5821955f011d57f1615807ab"><code>6039e25e04</code></a>"><a href="/vuejs/core/commit/6039e25"><code>6039e25</code></a></a>)</li>
<li><strong>server-renderer:</strong> render <code>className</code> during SSR (<a href="https://github.com/vuejs/core/issues/11722">#11722</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/52cdb0f991dc154ae32a2900874d5dbc4e078565"><code>52cdb0f991</code></a>"><a href="/vuejs/core/commit/52cdb0f"><code>52cdb0f</code></a></a>)</li>
<li><strong>types/defineModel:</strong> allow getter and setter types to be unrelated (<a href="https://github.com/vuejs/core/issues/11699">#11699</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/fe07f7073617df358c2f8cbc3de433359e873c96"><code>fe07f70736</code></a>"><a href="/vuejs/core/commit/fe07f70"><code>fe07f70</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11697">#11697</a></li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.5.0-beta.3...v3.5.0-rc.1">3.5.0-rc.1</a> (2024-08-29)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler-sfc:</strong> skip circular tsconfig project reference (<a href="https://github.com/vuejs/core/issues/11680">#11680</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9c4c2e51b045218d0c5ca64b4fb58b17d5d580cc"><code>9c4c2e51b0</code></a>"><a href="/vuejs/core/commit/9c4c2e5"><code>9c4c2e5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11382">#11382</a></li>
<li><strong>custom-element:</strong> handle keys set on custom elements (<a href="https://github.com/vuejs/core/issues/11655">#11655</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/f1d1831f07fe52d5681a5ec9ec310572463abf26"><code>f1d1831f07</code></a>"><a href="/vuejs/core/commit/f1d1831"><code>f1d1831</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11641">#11641</a></li>
<li><strong>deps:</strong> update dependency monaco-editor to ^0.51.0 (<a href="https://github.com/vuejs/core/issues/11713">#11713</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/434f8a97c77f68aeae050e9e4e1f54f63bc4bd26"><code>434f8a97c7</code></a>"><a href="/vuejs/core/commit/434f8a9"><code>434f8a9</code></a></a>)</li>
<li><strong>keep-alive:</strong> reset keep alive flag when the component is removed from include (<a href="https://github.com/vuejs/core/issues/11718">#11718</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/29c321bfd33f9197244dec3d027077e63b2cdf2f"><code>29c321bfd3</code></a>"><a href="/vuejs/core/commit/29c321b"><code>29c321b</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11717">#11717</a></li>
<li><strong>reactivity:</strong> avoid infinite recursion when mutating ref wrapped in reactive (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/313e4bf55214ac1e334a99c329a3ba5daca4f156"><code>313e4bf552</code></a>"><a href="/vuejs/core/commit/313e4bf"><code>313e4bf</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11696">#11696</a></li>
<li><strong>reactivity:</strong> ensure watcher with once: true are properly removed from effect scope (<a href="https://github.com/vuejs/core/issues/11665">#11665</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/fbc0c42bcf6dea5a6ae664223fa19d4375ca39f0"><code>fbc0c42bcf</code></a>"><a href="/vuejs/core/commit/fbc0c42"><code>fbc0c42</code></a></a>)</li>
<li><strong>runtime-dom:</strong> setting innerHTML when patching props should go through trusted types (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d875de54e9e03e0768fe550aa4c4886a4baf3bd7"><code>d875de54e9</code></a>"><a href="/vuejs/core/commit/d875de5"><code>d875de5</code></a></a>)</li>
<li><strong>types:</strong> GlobalDirective / GlobalComponents should not be records (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/42e8df62030e7f2c287d9103f045e67b34a63e3b"><code>42e8df6203</code></a>"><a href="/vuejs/core/commit/42e8df6"><code>42e8df6</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.5.0-beta.2...v3.5.0-beta.3">3.5.0-beta.3</a> (2024-08-20)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>reactivity:</strong> extended methods respect reactive (<a href="https://github.com/vuejs/core/issues/11629">#11629</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9de1d101f98bf6081f41038f6974826f190330a0"><code>9de1d101f9</code></a>"><a href="/vuejs/core/commit/9de1d10"><code>9de1d10</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11628">#11628</a></li>
<li><strong>runtime-core:</strong> correct type inference for PascalCase emits (<a href="https://github.com/vuejs/core/issues/11579">#11579</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d7d0371e74707ee601020f67de88e091cdae2673"><code>d7d0371e74</code></a>"><a href="/vuejs/core/commit/d7d0371"><code>d7d0371</code></a></a>), closes <a href="https://github.com/vuejs/language-tools/issues/4269">vuejs/language-tools#4269</a></li>
<li><strong>runtime-core:</strong> ensure suspense content inherit scopeId (<a href="https://github.com/vuejs/core/issues/10652">#10652</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/ac2a410e46392db63ca4ed2db3c0fa71ebe1e855"><code>ac2a410e46</code></a>"><a href="/vuejs/core/commit/ac2a410"><code>ac2a410</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5148">#5148</a></li>
<li><strong>runtime-core:</strong> pre jobs without an id should run first (<a href="https://github.com/vuejs/core/issues/7746">#7746</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/b332f80f0edb018229a23b43b93bb402b6368a3c"><code>b332f80f0e</code></a>"><a href="/vuejs/core/commit/b332f80"><code>b332f80</code></a></a>)</li>
<li><strong>ssr:</strong> apply ssr props to the the fallback vnode-based branch in ssr (<a href="https://github.com/vuejs/core/issues/7247">#7247</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/98b83e86d16c635547a1e735e5fb675aea2f0f1b"><code>98b83e86d1</code></a>"><a href="/vuejs/core/commit/98b83e8"><code>98b83e8</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6123">#6123</a></li>
<li><strong>types/custom-element:</strong> <code>defineCustomElement</code> with required props (<a href="https://github.com/vuejs/core/issues/11578">#11578</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5e0f6d5f8fe7c4eb8f247357c3e2e281726f36db"><code>5e0f6d5f8f</code></a>"><a href="/vuejs/core/commit/5e0f6d5"><code>5e0f6d5</code></a></a>)</li>
<li><strong>types:</strong> strip non-prop default values from return type of withDefaults (<a href="https://github.com/vuejs/core/issues/9998">#9998</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/44973bb3e790db7d8aa7af4eda21c80cac73a8de"><code>44973bb3e7</code></a>"><a href="/vuejs/core/commit/44973bb"><code>44973bb</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/9899">#9899</a></li>
<li><strong>watch:</strong> handle errors in computed used as watch source (<a href="https://github.com/vuejs/core/issues/11626">#11626</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/8bcaad4a32cf0f1f89e0259f6a53036620b7fe9f"><code>8bcaad4a32</code></a>"><a href="/vuejs/core/commit/8bcaad4"><code>8bcaad4</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11624">#11624</a></li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>reactivity:</strong> base <code>watch</code>, <code>getCurrentWatcher</code>, and <code>onWatcherCleanup</code> (<a href="https://github.com/vuejs/core/issues/9927">#9927</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/205e5b5e277243c3af2c937d9bd46cf671296b72"><code>205e5b5e27</code></a>"><a href="/vuejs/core/commit/205e5b5"><code>205e5b5</code></a></a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>runtime-core:</strong> use <code>apply</code> to avoid spreading. (<a href="https://github.com/vuejs/core/issues/5985">#5985</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/bb6babca8f206615d4e246457cd54d21bb3bc5a4"><code>bb6babca8f</code></a>"><a href="/vuejs/core/commit/bb6babc"><code>bb6babc</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.5.0-beta.1...v3.5.0-beta.2">3.5.0-beta.2</a> (2024-08-15)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>build:</strong> revert entities to 4.5 to avoid runtime resolution errors (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e9e08155bf8d00c3327ed7371330eb2ae467e560"><code>e9e08155bf</code></a>"><a href="/vuejs/core/commit/e9e0815"><code>e9e0815</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11603">#11603</a></li>
<li><strong>compiler-core:</strong> use ast-based check for function expressions when possible (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/58612294757480974e667652ede5bbcf72b1089d"><code>5861229475</code></a>">5861229</a>), closes <a href="https://github.com/vuejs/core/issues/11615">#11615</a></li>
<li><strong>compiler-sfc:</strong> fix prefixIdentifier default value (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3d6f01571b3fb61b32da599d0419eff4e3ebb231"><code>3d6f01571b</code></a>"><a href="/vuejs/core/commit/3d6f015"><code>3d6f015</code></a></a>)</li>
<li><strong>compiler-sfc:</strong> handle keyof operator with index object (<a href="https://github.com/vuejs/core/issues/11581">#11581</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/fe008152c0612ff3ecc7ad88e7e66a06b1b2bc3f"><code>fe008152c0</code></a>"><a href="/vuejs/core/commit/fe00815"><code>fe00815</code></a></a>)</li>
<li><strong>custom-element:</strong> keep instance.isCE for backwards compat (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e19fc270428b59456fee43224990138c4d6ccb2d"><code>e19fc27042</code></a>"><a href="/vuejs/core/commit/e19fc27"><code>e19fc27</code></a></a>)</li>
<li><strong>deps:</strong> update dependency postcss to ^8.4.41 (<a href="https://github.com/vuejs/core/issues/11585">#11585</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/4c4e12ae28d67d616924b0601e68adc551959971"><code>4c4e12ae28</code></a>"><a href="/vuejs/core/commit/4c4e12a"><code>4c4e12a</code></a></a>)</li>
<li><strong>keep-alive:</strong> ensure include/exclude regexp work with global flag (<a href="https://github.com/vuejs/core/issues/11595">#11595</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3653bc0f45d6fedf84e29b64ca52584359c383c0"><code>3653bc0f45</code></a>"><a href="/vuejs/core/commit/3653bc0"><code>3653bc0</code></a></a>)</li>
<li><strong>reactivity:</strong> ensure extended method arguments are not lost (<a href="https://github.com/vuejs/core/issues/11574">#11574</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/4085def1bae42d01ee3c22c731cc4a02096464ee"><code>4085def1ba</code></a>"><a href="/vuejs/core/commit/4085def"><code>4085def</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11570">#11570</a></li>
<li><strong>reactivity:</strong> sync watch should be executed correctly (<a href="https://github.com/vuejs/core/issues/11589">#11589</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3bda3e83fd9e2fbe451a1c79dae82ff6a7467683"><code>3bda3e83fd</code></a>"><a href="/vuejs/core/commit/3bda3e8"><code>3bda3e8</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11577">#11577</a></li>
<li><strong>types/computed:</strong> ensure type safety for <code>WritableComputedRef</code> (<a href="https://github.com/vuejs/core/issues/11608">#11608</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5cf5a1620d9a97382d386c277265d9dd051fe484"><code>5cf5a1620d</code></a>"><a href="/vuejs/core/commit/5cf5a16"><code>5cf5a16</code></a></a>)</li>
<li><strong>types:</strong> add fallback stub for DOM types when DOM lib is absent (<a href="https://github.com/vuejs/core/issues/11598">#11598</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/fee669764fbf475adce9e47a7a73b4937ab31ffc"><code>fee669764f</code></a>"><a href="/vuejs/core/commit/fee6697"><code>fee6697</code></a></a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>deprecated:</strong> remove deprecated parseExpressions option (<a href="https://github.com/vuejs/core/issues/11597">#11597</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/4e7d5db4d276a5d4aaf3af7d43cfd28c171db307"><code>4e7d5db4d2</code></a>"><a href="/vuejs/core/commit/4e7d5db"><code>4e7d5db</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.37...v3.5.0-beta.1">3.5.0-beta.1</a> (2024-08-08)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>custom-element:</strong> delay mounting of custom elements with async parent (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/37ccb9b9a0e4381f9465e0fc6459609003030da4"><code>37ccb9b9a0</code></a>"><a href="/vuejs/core/commit/37ccb9b"><code>37ccb9b</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/8127">#8127</a> <a href="https://github.com/vuejs/core/issues/9341">#9341</a> <a href="https://github.com/vuejs/core/issues/9351">#9351</a> <a href="https://github.com/vuejs/core/issues/9351">#9351</a></li>
<li><strong>custom-element:</strong> delete prop on attribute removal (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/506c4c53fdf9766c2ce9517ad58d501ef6b1b9de"><code>506c4c53fd</code></a>"><a href="/vuejs/core/commit/506c4c5"><code>506c4c5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11276">#11276</a></li>
<li><strong>custom-element:</strong> ignore scoped id (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/7f2c505f92026408a8262ba9b5104a465be19446"><code>7f2c505f92</code></a>"><a href="/vuejs/core/commit/7f2c505"><code>7f2c505</code></a></a>)</li>
<li><strong>custom-element:</strong> reflect prop default value on custom element (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/63689ed77601d5f9b78540f810612806c3a5de15"><code>63689ed776</code></a>"><a href="/vuejs/core/commit/63689ed"><code>63689ed</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/9006">#9006</a> <a href="https://github.com/vuejs/core/issues/10537">#10537</a></li>
<li><strong>custom-element:</strong> support early-set domProps for async custom elements (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a07e7bf5536a6b3db70ba9bb1c3f366dac1bf5a0"><code>a07e7bf553</code></a>"><a href="/vuejs/core/commit/a07e7bf"><code>a07e7bf</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11081">#11081</a> <a href="https://github.com/vuejs/core/issues/11082">#11082</a></li>
<li><strong>types/custome-element:</strong> <code>defineCustomElement</code> props inference with array emits (<a href="https://github.com/vuejs/core/issues/11384">#11384</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e94b01bd8a1ec740eddc823839ab2627b307c1b0"><code>e94b01bd8a</code></a>"><a href="/vuejs/core/commit/e94b01b"><code>e94b01b</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11353">#11353</a></li>
<li><strong>types:</strong> allow using InjectionKey as valid property key (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/321d80758c42fccbd39ecbb63f1a4f6632a1580a"><code>321d80758c</code></a>"><a href="/vuejs/core/commit/321d807"><code>321d807</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5089">#5089</a></li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>custom-element:</strong> expose this.$host in Options API (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/1ef8f46af0cfdec2fed66376772409e0aa25ad50"><code>1ef8f46af0</code></a>"><a href="/vuejs/core/commit/1ef8f46"><code>1ef8f46</code></a></a>)</li>
<li><strong>custom-element:</strong> inject child components styles to custom element shadow root (<a href="https://github.com/vuejs/core/issues/11517">#11517</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/56c76a8b05c45f782ed3a16ec77c6292b71a17f1"><code>56c76a8b05</code></a>"><a href="/vuejs/core/commit/56c76a8"><code>56c76a8</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4662">#4662</a> <a href="https://github.com/vuejs/core/issues/7941">#7941</a> <a href="https://github.com/vuejs/core/issues/7942">#7942</a></li>
<li><strong>custom-element:</strong> support configurable app instance in defineCustomElement (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6758c3cd0427f97394d95168c655dae3b7fa62cd"><code>6758c3cd04</code></a>"><a href="/vuejs/core/commit/6758c3c"><code>6758c3c</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4356">#4356</a> <a href="https://github.com/vuejs/core/issues/4635">#4635</a></li>
<li><strong>custom-element:</strong> support css <code>:host</code> selector by applying css vars on host element (<a href="https://github.com/vuejs/core/issues/8830">#8830</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/03a9ea2b88df0842a820e09f7445c4b9189e3fcb"><code>03a9ea2b88</code></a>"><a href="/vuejs/core/commit/03a9ea2"><code>03a9ea2</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/8826">#8826</a></li>
<li><strong>custom-element:</strong> support emit with options (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e181bff6dc39d5cef92000c10291243c7d6e4d08"><code>e181bff6dc</code></a>"><a href="/vuejs/core/commit/e181bff"><code>e181bff</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7605">#7605</a></li>
<li><strong>custom-element:</strong> support for expose on customElement (<a href="https://github.com/vuejs/core/issues/6256">#6256</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/af838c1b5ec23552e52e64ffa7db0eb0246c3624"><code>af838c1b5e</code></a>"><a href="/vuejs/core/commit/af838c1"><code>af838c1</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5540">#5540</a></li>
<li><strong>custom-element:</strong> support nonce option for injected style tags (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/bb4a02a70c30e739a3c705b3d96d09258d7d7ded"><code>bb4a02a70c</code></a>"><a href="/vuejs/core/commit/bb4a02a"><code>bb4a02a</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6530">#6530</a></li>
<li><strong>custom-element:</strong> support passing custom-element-specific options via 2nd argument of defineCustomElement (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/60a88a2b129714186cf6ba66f30f31d733d0311e"><code>60a88a2b12</code></a>"><a href="/vuejs/core/commit/60a88a2"><code>60a88a2</code></a></a>)</li>
<li><strong>custom-element:</strong> support shadowRoot: false in defineCustomElement() (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/37d2ce5d8e0fac4a00064f02b05f91f69b2d5d5e"><code>37d2ce5d8e</code></a>"><a href="/vuejs/core/commit/37d2ce5"><code>37d2ce5</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4314">#4314</a> <a href="https://github.com/vuejs/core/issues/4404">#4404</a></li>
<li><strong>custom-element:</strong> useHost() helper (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/775103af37df69d34c79f12c4c1776c47d07f0a0"><code>775103af37</code></a>"><a href="/vuejs/core/commit/775103a"><code>775103a</code></a></a>)</li>
<li><strong>custom-element:</strong> useShadowRoot() helper (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5a1a89bd6178cc2f84ba91da7d72aee4c6ec1282"><code>5a1a89bd61</code></a>"><a href="/vuejs/core/commit/5a1a89b"><code>5a1a89b</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6113">#6113</a> <a href="https://github.com/vuejs/core/issues/8195">#8195</a></li>
<li><strong>hydration:</strong> allow fine tuning of lazy hydration strategy triggers (<a href="https://github.com/vuejs/core/issues/11530">#11530</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/261c8b111d046204bd22392a8b920e3c3d4def48"><code>261c8b111d</code></a>"><a href="/vuejs/core/commit/261c8b1"><code>261c8b1</code></a></a>)</li>
<li><strong>reactivity/watch:</strong> add pause/resume for ReactiveEffect, EffectScope, and WatchHandle (<a href="https://github.com/vuejs/core/issues/9651">#9651</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/267093c31490050bfcf3ff2b30a2aefee2dad582"><code>267093c314</code></a>"><a href="/vuejs/core/commit/267093c"><code>267093c</code></a></a>)</li>
<li><strong>reactivity:</strong> store value cache on CustomRefs impls (<a href="https://github.com/vuejs/core/issues/11539">#11539</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/e044b6e737efc9433d1d84590036b82280da6292"><code>e044b6e737</code></a>"><a href="/vuejs/core/commit/e044b6e"><code>e044b6e</code></a></a>)</li>
<li><strong>runtime-dom:</strong> Trusted Types compatibility (<a href="https://github.com/vuejs/core/issues/10844">#10844</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/6d4eb94853ed1b2b1675bdd7d5ba9c75cc6daed5"><code>6d4eb94853</code></a>"><a href="/vuejs/core/commit/6d4eb94"><code>6d4eb94</code></a></a>)</li>
<li>support specifying allowed keys via generic argument in useTemplateRef() (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/1fbfa6962b48634ff60837084b82dd57f215c109"><code>1fbfa6962b</code></a>"><a href="/vuejs/core/commit/1fbfa69"><code>1fbfa69</code></a></a>)</li>
<li><strong>types:</strong> allow computed getter and setter types to be unrelated (<a href="https://github.com/vuejs/core/issues/11472">#11472</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a01675ef8f99b5acd6832c53051f4415b18609f2"><code>a01675ef8f</code></a>"><a href="/vuejs/core/commit/a01675e"><code>a01675e</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7271">#7271</a></li>
<li><strong>types:</strong> export <code>MultiWatchSources</code> type (<a href="https://github.com/vuejs/core/issues/9563">#9563</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/998dca59f140420280803233f41707580688562c"><code>998dca59f1</code></a>"><a href="/vuejs/core/commit/998dca5"><code>998dca5</code></a></a>)</li>
<li><strong>types:</strong> provide internal options for using refs type in language tools (<a href="https://github.com/vuejs/core/issues/11492">#11492</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/5ffd1a89455807d5069eb2c28eba0379641dca76"><code>5ffd1a8945</code></a>"><a href="/vuejs/core/commit/5ffd1a8"><code>5ffd1a8</code></a></a>)</li>
<li><strong>watch:</strong> support passing number to <code>deep</code> option to control the watch depth (<a href="https://github.com/vuejs/core/issues/9572">#9572</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/22f7d96757956ebe0baafe52256aa327908cc51c"><code>22f7d96757</code></a>"><a href="/vuejs/core/commit/22f7d96"><code>22f7d96</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.35...v3.5.0-alpha.5">3.5.0-alpha.5</a> (2024-07-31)</h1>
<h3>Features</h3>
<ul>
<li><strong>hydration:</strong> support suppressing hydration mismatch via data-allow-mismatch (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/94fb2b8106a66bcca1a3f922a246a29fdd1274b1"><code>94fb2b8106</code></a>"><a href="/vuejs/core/commit/94fb2b8"><code>94fb2b8</code></a></a>)</li>
<li>lazy hydration strategies for async components (<a href="https://github.com/vuejs/core/issues/11458">#11458</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d14a11c1cdcee88452f17ce97758743c863958f4"><code>d14a11c1cd</code></a>"><a href="/vuejs/core/commit/d14a11c"><code>d14a11c</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.34...v3.5.0-alpha.4">3.5.0-alpha.4</a> (2024-07-24)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>suspense/hydration:</strong> fix hydration timing of async component inside suspense (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/1b8e197a5b65d67a9703b8511786fb81df9aa7cc"><code>1b8e197a5b</code></a>"><a href="/vuejs/core/commit/1b8e197"><code>1b8e197</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/6638">#6638</a></li>
<li><strong>useId:</strong> properly mark async boundary for already resolved async component (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/cd281725781ada2ab279e919031ae307e146a9d9"><code>cd28172578</code></a>"><a href="/vuejs/core/commit/cd28172"><code>cd28172</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.33...v3.5.0-alpha.3">3.5.0-alpha.3</a> (2024-07-19)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>build:</strong> enable SSR branches in esm-browser builds (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/b14cd9a68bab082332b0169be075be357be076ca"><code>b14cd9a68b</code></a>"><a href="/vuejs/core/commit/b14cd9a"><code>b14cd9a</code></a></a>)</li>
<li><strong>compiler-core:</strong> change node hoisting to caching per instance (<a href="https://github.com/vuejs/core/issues/11067">#11067</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/cd0ea0d479a276583fa181d8ecbc97fb0e4a9dce"><code>cd0ea0d479</code></a>"><a href="/vuejs/core/commit/cd0ea0d"><code>cd0ea0d</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5256">#5256</a> <a href="https://github.com/vuejs/core/issues/9219">#9219</a> <a href="https://github.com/vuejs/core/issues/10959">#10959</a></li>
<li><strong>compiler-sfc:</strong> should properly walk desutructured props when reactive destructure is not enabled (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/0fd6193def2380916eb51a118f37f2d9ec2ace23"><code>0fd6193def</code></a>"><a href="/vuejs/core/commit/0fd6193"><code>0fd6193</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/11325">#11325</a></li>
<li><strong>types:</strong> respect props with default on instance type when using __typeProps (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/96e473833422342c5ca371ae1aeb186dec9a55e3"><code>96e4738334</code></a>"><a href="/vuejs/core/commit/96e4738"><code>96e4738</code></a></a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>runtime-core:</strong> useTemplateRef() (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/3ba70e49b5856c53611c314d4855d679a546a7df"><code>3ba70e49b5</code></a>"><a href="/vuejs/core/commit/3ba70e4"><code>3ba70e4</code></a></a>)</li>
<li><strong>runtime-core:</strong> useId() and app.config.idPrefix (<a href="https://github.com/vuejs/core/issues/11404">#11404</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/73ef1561f6905d69f968c094d0180c61824f1247"><code>73ef1561f6</code></a>"><a href="/vuejs/core/commit/73ef156"><code>73ef156</code></a></a>)</li>
<li><strong>runtime-core:</strong> add app.config.throwUnhandledErrorInProduction (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/f476b7f030f2dd427ca655fcea36f4933a4b4da0"><code>f476b7f030</code></a>"><a href="/vuejs/core/commit/f476b7f"><code>f476b7f</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/7876">#7876</a></li>
<li><strong>teleport:</strong> support deferred Teleport (<a href="https://github.com/vuejs/core/issues/11387">#11387</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/59a3e88903b10ac2278170a44d5a03f24fef23ef"><code>59a3e88903</code></a>"><a href="/vuejs/core/commit/59a3e88"><code>59a3e88</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/2015">#2015</a> <a href="https://github.com/vuejs/core/issues/11386">#11386</a></li>
<li><strong>compiler-core:</strong> support <code>Symbol</code> global in template expressions (<a href="https://github.com/vuejs/core/issues/9069">#9069</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/a501a85a7c910868e01a5c70a2abea4e9d9e87f3"><code>a501a85a7c</code></a>"><a href="/vuejs/core/commit/a501a85"><code>a501a85</code></a></a>)</li>
<li><strong>types:</strong> export more emit related types (<a href="https://github.com/vuejs/core/issues/11017">#11017</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/189573dcee2a16bd3ed36ff5589d43f535e5e733"><code>189573dcee</code></a>"><a href="/vuejs/core/commit/189573d"><code>189573d</code></a></a>)</li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.26...v3.5.0-alpha.2">3.5.0-alpha.2</a> (2024-05-04)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> fix app.component() typing with inline defineComponent (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/908f70adc06038d1ea253d96f4024367f4a7545d"><code>908f70adc0</code></a>"><a href="/vuejs/core/commit/908f70a"><code>908f70a</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10843">#10843</a></li>
<li><strong>types:</strong> fix compat with generated types that rely on CreateComponentPublicInstance (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/c146186396d0c1a65423b8c9a21251c5a6467336"><code>c146186396</code></a>"><a href="/vuejs/core/commit/c146186"><code>c146186</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10842">#10842</a></li>
<li><strong>types:</strong> props in defineOptions type should be optional (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/124c4cac833a28ae9bc8edc576c1d0c7c41f5985"><code>124c4cac83</code></a>"><a href="/vuejs/core/commit/124c4ca"><code>124c4ca</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10841">#10841</a></li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>runtime-core:</strong> add app.onUnmount() for registering cleanup functions (<a href="https://github.com/vuejs/core/issues/4619">#4619</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/582a3a382b1adda565bac576b913a88d9e8d7a9e"><code>582a3a382b</code></a>"><a href="/vuejs/core/commit/582a3a3"><code>582a3a3</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4516">#4516</a></li>
</ul>
<h1><a href="https://github.com/vuejs/core/compare/v3.4.25...v3.5.0-alpha.1">3.5.0-alpha.1</a> (2024-04-29)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>reactivity:</strong> fix call sequence of ontrigger in effect (<a href="https://github.com/vuejs/core/issues/10501">#10501</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/28841fee43a45c37905c2c1ed9ace23067539045"><code>28841fee43</code></a>"><a href="/vuejs/core/commit/28841fe"><code>28841fe</code></a></a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>compiler-sfc:</strong> enable reactive props destructure by default (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/d2dac0e359c47d1ed0aa77eda488e76fd6466d2d"><code>d2dac0e359</code></a>"><a href="/vuejs/core/commit/d2dac0e"><code>d2dac0e</code></a></a>)</li>
<li><strong>reactivity:</strong> <code>onEffectCleanup</code> API (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/2cc5615590de77126e8df46136de0240dbde5004"><code>2cc5615590</code></a>"><a href="/vuejs/core/commit/2cc5615"><code>2cc5615</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/10173">#10173</a></li>
<li><strong>reactivity:</strong> add failSilently argument for onScopeDispose (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/9a936aaec489c79433a32791ecf5ddb1739a62bd"><code>9a936aaec4</code></a>"><a href="/vuejs/core/commit/9a936aa"><code>9a936aa</code></a></a>)</li>
<li><strong>transition:</strong> support directly nesting Teleport inside Transition (<a href="https://github.com/vuejs/core/issues/6548">#6548</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/0e6e3c7eb0e5320b7c1818e025cb4a490fede9c0"><code>0e6e3c7eb0</code></a>"><a href="/vuejs/core/commit/0e6e3c7"><code>0e6e3c7</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/5836">#5836</a></li>
<li><strong>types:</strong> provide internal options for directly using user types in language tools (<a href="https://github.com/vuejs/core/issues/10801">#10801</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/75c8cf63a1ef30ac84f91282d66ad3f57c6612e9"><code>75c8cf63a1</code></a>"><a href="/vuejs/core/commit/75c8cf6"><code>75c8cf6</code></a></a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>reactivity:</strong> optimize array tracking (<a href="https://github.com/vuejs/core/issues/9511">#9511</a>) (<a href="https://github.com/vuejs/core/commit/<a href="/vuejs/core/commit/70196a40cc078f50fcc1110c38c06fbcc70b205e"><code>70196a40cc</code></a>"><a href="/vuejs/core/commit/70196a4"><code>70196a4</code></a></a>), closes <a href="https://github.com/vuejs/core/issues/4318">#4318</a></li>
</ul>