CHANGELOG.md 60 KB

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
  • reactiivty: 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

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> <h2>Previous Changelogs</h2> <h3>3.4.x (2023-10-28 - 2024-08-15)</h3> <p>See <a href="/vuejs/core/src/edison/fix/12782/changelogs/CHANGELOG-3.4.md">3.4 changelog</a></p> <h3>3.3.x (2023-02-05 - 2023-12-29)</h3> <p>See <a href="/vuejs/core/src/edison/fix/12782/changelogs/CHANGELOG-3.3.md">3.3 changelog</a></p> <h3>3.2.x (2021-07-16 - 2023-02-02)</h3> <p>See <a href="/vuejs/core/src/edison/fix/12782/changelogs/CHANGELOG-3.2.md">3.2 changelog</a></p> <h3>3.1.x (2021-05-08 - 2021-07-16)</h3> <p>See <a href="/vuejs/core/src/edison/fix/12782/changelogs/CHANGELOG-3.1.md">3.1 changelog</a></p> <h3>3.0.x (2019-12-20 - 2021-04-01)</h3> <p>See <a href="/vuejs/core/src/edison/fix/12782/changelogs/CHANGELOG-3.0.md">3.0 changelog</a></p>