mirror of
https://github.com/vuejs/core.git
synced 2024-11-21 20:28:45 +00:00
60 KiB
60 KiB
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
- 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 includestring
(#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
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 isany
(#12073) (57315ab), closes #12058 - types: should not intersect
PublicProps
withProps
(#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
- reactivity: fix property dep removal regression (6001e5c), closes #12020 #12021
- reactivity: fix recursive sync watcher on computed edge case (10ff159), closes #12033 #12037
- runtime-core: avoid rendering plain object as VNode (#12038) (cb34b28), closes #12035 vitejs/vite-plugin-vue#353
- runtime-core: make useId() always return a string (a177092)
- types: correct type inference of union event names (#12022) (4da6881)
- vue: properly cache runtime compilation (#12019) (fa0ba24)
3.5.8 (2024-09-22)
Bug Fixes
3.5.7 (2024-09-20)
Bug Fixes
- compile-core: fix v-model with newlines edge case (#11960) (6224288), closes #8306
- compiler-sfc: initialize scope with null prototype object (#11963) (215e154)
- hydration: avoid observing non-Element node (#11954) (7257e6a), closes #11952
- reactivity: do not remove dep from depsMap when unsubbed by computed (960706e)
- reactivity: fix dev-only memory leak by updating dep.subsHead on sub removal (5c8b76e), closes #11956
- reactivity: fix memory leak from dep instances of garbage collected objects (235ea47), closes #11979 #11971
- reactivity: fix triggerRef call on ObjectRefImpl returned by toRef (#11986) (b030c8b), closes #11982
- scheduler: ensure recursive jobs can't be queued twice (#11955) (d18d6aa)
- ssr: don't render comments in TransitionGroup (#11961) (a2f6ede), closes #11958
- transition: respect
duration
setting even when it is0
(#11967) (f927a4a) - types: correct type inference of all-optional props (#11644) (9eca65e), closes #11733 vuejs/language-tools#4704
Performance Improvements
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="<a href="https://github.com/vuejs/core/commit/3c4bf7627649ec1e3220f8c4e4163c20d2afb367" class="commit"><code class="nohighlight">3c4bf76276</code></a>">3c4bf76</a>)</li> <li><strong>compiler-sfc:</strong> nested css supports atrule and comment (<a href="<a href="https://github.com/vuejs/core/issues/11899" class="link">https://github.com/vuejs/core/issues/11899</a>">#11899</a>) (<a href="<a href="https://github.com/vuejs/core/commit/0e7bc717e6640644f062957ec5031506f0dab215" class="commit"><code class="nohighlight">0e7bc717e6</code></a>">0e7bc71</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11896" class="link">https://github.com/vuejs/core/issues/11896</a>">#11896</a></li> <li><strong>custom-element:</strong> handle nested customElement mount w/ shadowRoot false (<a href="<a href="https://github.com/vuejs/core/issues/11861" class="link">https://github.com/vuejs/core/issues/11861</a>">#11861</a>) (<a href="<a href="https://github.com/vuejs/core/commit/f2d801918841e7673ff3f048d0d895592a2f7e23" class="commit"><code class="nohighlight">f2d8019188</code></a>">f2d8019</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11851" class="link">https://github.com/vuejs/core/issues/11851</a>">#11851</a> <a href="<a href="https://github.com/vuejs/core/issues/11871" class="link">https://github.com/vuejs/core/issues/11871</a>">#11871</a></li> <li><strong>hmr:</strong> reload async child wrapped in Suspense + KeepAlive (<a href="<a href="https://github.com/vuejs/core/issues/11907" class="link">https://github.com/vuejs/core/issues/11907</a>">#11907</a>) (<a href="<a href="https://github.com/vuejs/core/commit/10a2c6053bd30d160d0214bb3566f540187e6874" class="commit"><code class="nohighlight">10a2c6053b</code></a>">10a2c60</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11868" class="link">https://github.com/vuejs/core/issues/11868</a>">#11868</a></li> <li><strong>hydration:</strong> fix mismatch of leading newline in <code><textarea></code> and <code><pre></code> (<a href="<a href="https://github.com/vuejs/core/commit/a5f3c2eb4d2e7fae93ff93ce865b269f01cc825e" class="commit"><code class="nohighlight">a5f3c2eb4d</code></a>">a5f3c2e</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11873" class="link">https://github.com/vuejs/core/issues/11873</a>">#11873</a> <a href="<a href="https://github.com/vuejs/core/issues/11874" class="link">https://github.com/vuejs/core/issues/11874</a>">#11874</a></li> <li><strong>reactivity:</strong> properly clean up deps, fix memory leak (<a href="<a href="https://github.com/vuejs/core/commit/8ea5d6d6981ab7febda0be43c3c92b18869c3a2a" class="commit"><code class="nohighlight">8ea5d6d698</code></a>">8ea5d6d</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11901" class="link">https://github.com/vuejs/core/issues/11901</a>">#11901</a></li> <li><strong>runtime-core:</strong> properly update async component nested in KeepAlive (<a href="<a href="https://github.com/vuejs/core/issues/11917" class="link">https://github.com/vuejs/core/issues/11917</a>">#11917</a>) (<a href="<a href="https://github.com/vuejs/core/commit/7fe6c795a1fc7ddcea5ad91a56141561192373ac" class="commit"><code class="nohighlight">7fe6c795a1</code></a>">7fe6c79</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11916" class="link">https://github.com/vuejs/core/issues/11916</a>">#11916</a></li> <li><strong>TransitionGroup:</strong> not warn unkeyed text children with whitespece preserve (<a href="<a href="https://github.com/vuejs/core/issues/11888" class="link">https://github.com/vuejs/core/issues/11888</a>">#11888</a>) (<a href="<a href="https://github.com/vuejs/core/commit/7571f20bc3d1854377a146f41d211e05bb68cd47" class="commit"><code class="nohighlight">7571f20bc3</code></a>">7571f20</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11885" class="link">https://github.com/vuejs/core/issues/11885</a>">#11885</a></li> </ul> <h2 id="user-content-354httpsgithubcomvuejscorecomparev353v354-2024-09-10" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.3...v3.5.4" class="link">https://github.com/vuejs/core/compare/v3.5.3...v3.5.4</a>">3.5.4</a> (2024-09-10)</h2> <h3 id="user-content-bug-fixes-9" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>compiler-sfc:</strong> correct scoped injection for nesting selector (<a href="<a href="https://github.com/vuejs/core/issues/11854" class="link">https://github.com/vuejs/core/issues/11854</a>">#11854</a>) (<a href="<a href="https://github.com/vuejs/core/commit/b1de75ed04626b6423085dfde91fb0cb481a25e8" class="commit"><code class="nohighlight">b1de75ed04</code></a>">b1de75e</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10567" class="link">https://github.com/vuejs/core/issues/10567</a>">#10567</a></li> <li><strong>reactivity:</strong> fix markRaw error on already marked object (<a href="<a href="https://github.com/vuejs/core/issues/11864" class="link">https://github.com/vuejs/core/issues/11864</a>">#11864</a>) (<a href="<a href="https://github.com/vuejs/core/commit/67d6596d40b1807b9cd8eb0d9282932ea77be3c0" class="commit"><code class="nohighlight">67d6596d40</code></a>">67d6596</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11862" class="link">https://github.com/vuejs/core/issues/11862</a>">#11862</a></li> <li>Revert "fix: Revert "fix(reactivity): self-referencing computed should refresh"" (<a href="<a href="https://github.com/vuejs/core/commit/e596378e0be728dad7d60938449f3fa557ca2ec9" class="commit"><code class="nohighlight">e596378e0b</code></a>">e596378</a>)</li> <li><strong>runtime-core:</strong> handle shallow reactive arrays in renderList correctly (<a href="<a href="https://github.com/vuejs/core/issues/11870" class="link">https://github.com/vuejs/core/issues/11870</a>">#11870</a>) (<a href="<a href="https://github.com/vuejs/core/commit/ced59ab8f2f2e89c13119bab3a0c25a1a1f1c3d6" class="commit"><code class="nohighlight">ced59ab8f2</code></a>">ced59ab</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11869" class="link">https://github.com/vuejs/core/issues/11869</a>">#11869</a></li> <li><strong>types:</strong> correctly infer <code>TypeEmits</code> with both tuple and function syntax (<a href="<a href="https://github.com/vuejs/core/issues/11840" class="link">https://github.com/vuejs/core/issues/11840</a>">#11840</a>) (<a href="<a href="https://github.com/vuejs/core/commit/dad673809929c084dcb8e42640eb7daa675d4ea4" class="commit"><code class="nohighlight">dad6738099</code></a>">dad6738</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11836" class="link">https://github.com/vuejs/core/issues/11836</a>">#11836</a></li> </ul> <h3 id="user-content-performance-improvements-3" dir="auto">Performance Improvements</h3> <ul dir="auto"> <li><strong>reactivity:</strong> trigger deps directly instead of storing in an array first (<a href="<a href="https://github.com/vuejs/core/issues/11695" class="link">https://github.com/vuejs/core/issues/11695</a>">#11695</a>) (<a href="<a href="https://github.com/vuejs/core/commit/f80d447c17662556e9e3f99f6d199967f4c8cf3d" class="commit"><code class="nohighlight">f80d447c17</code></a>">f80d447</a>)</li> </ul> <h2 id="user-content-353httpsgithubcomvuejscorecomparev352v353-2024-09-06" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.2...v3.5.3" class="link">https://github.com/vuejs/core/compare/v3.5.2...v3.5.3</a>">3.5.3</a> (2024-09-06)</h2> <h3 id="user-content-bug-fixes-10" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>hydration:</strong> check __asyncHydrate presence for vue3-lazy-hydration compat (<a href="<a href="https://github.com/vuejs/core/issues/11825" class="link">https://github.com/vuejs/core/issues/11825</a>">#11825</a>) (<a href="<a href="https://github.com/vuejs/core/commit/8e6c3378676be05cea7f53664442acdfb86784f9" class="commit"><code class="nohighlight">8e6c337867</code></a>">8e6c337</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11793" class="link">https://github.com/vuejs/core/issues/11793</a>">#11793</a></li> <li>Revert "fix(reactivity): self-referencing computed should refresh" (<a href="<a href="https://github.com/vuejs/core/commit/35c760f82f749f7c6e3f9bfead8221ce498e892f" class="commit"><code class="nohighlight">35c760f82f</code></a>">35c760f</a>)</li> <li><strong>ssr:</strong> respect app.config.warnHandler during ssr (<a href="<a href="https://github.com/vuejs/core/commit/bf3d9a2af41659a743706306fc798b3d215df5af" class="commit"><code class="nohighlight">bf3d9a2af4</code></a>">bf3d9a2</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11830" class="link">https://github.com/vuejs/core/issues/11830</a>">#11830</a></li> <li><strong>Transition:</strong> handle KeepAlive child unmount in Transition out-in mode (<a href="<a href="https://github.com/vuejs/core/issues/11833" class="link">https://github.com/vuejs/core/issues/11833</a>">#11833</a>) (<a href="<a href="https://github.com/vuejs/core/commit/6b7901d28ed3a6a9242c666cc1b8e3c0b0b0fe62" class="commit"><code class="nohighlight">6b7901d28e</code></a>">6b7901d</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11775" class="link">https://github.com/vuejs/core/issues/11775</a>">#11775</a></li> <li><strong>useId:</strong> make generated IDs selector compatible (<a href="<a href="https://github.com/vuejs/core/commit/babfb4cbcbf98601d76c1d7653eae8d250ce2710" class="commit"><code class="nohighlight">babfb4cbcb</code></a>">babfb4c</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11828" class="link">https://github.com/vuejs/core/issues/11828</a>">#11828</a></li> </ul> <h2 id="user-content-352httpsgithubcomvuejscorecomparev351v352-2024-09-05" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.1...v3.5.2" class="link">https://github.com/vuejs/core/compare/v3.5.1...v3.5.2</a>">3.5.2</a> (2024-09-05)</h2> <h3 id="user-content-bug-fixes-11" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>reactivity:</strong> make toRaw work on proxies created by proxyRef (<a href="<a href="https://github.com/vuejs/core/commit/46c3ab1d714024894fa1d33e495d5d35c7817d4d" class="commit"><code class="nohighlight">46c3ab1d71</code></a>">46c3ab1</a>)</li> <li><strong>reactivity:</strong> pass oldValue to computed getter (<a href="<a href="https://github.com/vuejs/core/issues/11813" class="link">https://github.com/vuejs/core/issues/11813</a>">#11813</a>) (<a href="<a href="https://github.com/vuejs/core/commit/98864a7ef5c8080c407166c8221488a4eacbbc81" class="commit"><code class="nohighlight">98864a7ef5</code></a>">98864a7</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11812" class="link">https://github.com/vuejs/core/issues/11812</a>">#11812</a></li> <li><strong>reactivity:</strong> prevent endless recursion in computed getters (<a href="<a href="https://github.com/vuejs/core/issues/11797" class="link">https://github.com/vuejs/core/issues/11797</a>">#11797</a>) (<a href="<a href="https://github.com/vuejs/core/commit/716275d1b1d2383d8ef0306fcd94558d4d9170f2" class="commit"><code class="nohighlight">716275d1b1</code></a>">716275d</a>)</li> <li><strong>reactivity:</strong> self-referencing computed should refresh (<a href="<a href="https://github.com/vuejs/core/commit/e84c4a608e9dc96fb2a4a29d538bcc64f26103a2" class="commit"><code class="nohighlight">e84c4a608e</code></a>">e84c4a6</a>), closes <a href="<a href="https://github.com//github.com/vuejs/core/pull/11797/issues/issuecomment-2330738633" class="link">https://github.com//github.com/vuejs/core/pull/11797/issues/issuecomment-2330738633</a>">/github.com/vuejs/core/pull/11797#issuecomment-2330738633</a></li> <li><strong>scheduler:</strong> prevent duplicate jobs being queued (<a href="<a href="https://github.com/vuejs/core/issues/11826" class="link">https://github.com/vuejs/core/issues/11826</a>">#11826</a>) (<a href="<a href="https://github.com/vuejs/core/commit/df56cc528793b1d6131a1e64095dd5cb95c56bee" class="commit"><code class="nohighlight">df56cc5287</code></a>">df56cc5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11712" class="link">https://github.com/vuejs/core/issues/11712</a>">#11712</a> <a href="<a href="https://github.com/vuejs/core/issues/11807" class="link">https://github.com/vuejs/core/issues/11807</a>">#11807</a></li> <li><strong>suspense:</strong> avoid updating anchor if activeBranch has not been rendered to the actual container (<a href="<a href="https://github.com/vuejs/core/issues/11818" class="link">https://github.com/vuejs/core/issues/11818</a>">#11818</a>) (<a href="<a href="https://github.com/vuejs/core/commit/3c0d531fa7fe762bfe46fbe63f318adc95221795" class="commit"><code class="nohighlight">3c0d531fa7</code></a>">3c0d531</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11806" class="link">https://github.com/vuejs/core/issues/11806</a>">#11806</a></li> <li><strong>Transition:</strong> handle KeepAlive child unmount in Transition out-in mode (<a href="<a href="https://github.com/vuejs/core/issues/11778" class="link">https://github.com/vuejs/core/issues/11778</a>">#11778</a>) (<a href="<a href="https://github.com/vuejs/core/commit/311655352931863dfcf520b8cf29cebc5b7e1e00" class="commit"><code class="nohighlight">3116553529</code></a>">3116553</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11775" class="link">https://github.com/vuejs/core/issues/11775</a>">#11775</a></li> <li><strong>types:</strong> add HTMLDialogElement missing close event (<a href="<a href="https://github.com/vuejs/core/issues/11811" class="link">https://github.com/vuejs/core/issues/11811</a>">#11811</a>) (<a href="<a href="https://github.com/vuejs/core/commit/3634f7a4c1649ad2e7e969eb4512512868c61d01" class="commit"><code class="nohighlight">3634f7a4c1</code></a>">3634f7a</a>)</li> <li><strong>types:</strong> added name attribute support to details tag (<a href="<a href="https://github.com/vuejs/core/issues/11823" class="link">https://github.com/vuejs/core/issues/11823</a>">#11823</a>) (<a href="<a href="https://github.com/vuejs/core/commit/c74176ec7b4d1d34159ce21d600c04b157ac5549" class="commit"><code class="nohighlight">c74176ec7b</code></a>">c74176e</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11821" class="link">https://github.com/vuejs/core/issues/11821</a>">#11821</a></li> <li><strong>types:</strong> fix defineComponent props inference when setup() has explicit annotation (<a href="<a href="https://github.com/vuejs/core/commit/fca20a39aa4a6f98c8f972bd435ebb7dc535648a" class="commit"><code class="nohighlight">fca20a39aa</code></a>">fca20a3</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11803" class="link">https://github.com/vuejs/core/issues/11803</a>">#11803</a></li> <li><strong>useTemplateRef:</strong> properly fix readonly warning in dev and ensure prod behavior consistency (<a href="<a href="https://github.com/vuejs/core/commit/9b7797d0d1fc773e979e042673d5b9b3151c40fc" class="commit"><code class="nohighlight">9b7797d0d1</code></a>">9b7797d</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11808" class="link">https://github.com/vuejs/core/issues/11808</a>">#11808</a> <a href="<a href="https://github.com/vuejs/core/issues/11816" class="link">https://github.com/vuejs/core/issues/11816</a>">#11816</a> <a href="<a href="https://github.com/vuejs/core/issues/11810" class="link">https://github.com/vuejs/core/issues/11810</a>">#11810</a></li> </ul> <h3 id="user-content-features" dir="auto">Features</h3> <ul dir="auto"> <li><strong>compiler-core:</strong> parse modifiers as expression to provide location data (<a href="<a href="https://github.com/vuejs/core/issues/11819" class="link">https://github.com/vuejs/core/issues/11819</a>">#11819</a>) (<a href="<a href="https://github.com/vuejs/core/commit/3f13203564164eeb2945bdc0b9ef755c37477d75" class="commit"><code class="nohighlight">3f13203564</code></a>">3f13203</a>)</li> </ul> <h2 id="user-content-351httpsgithubcomvuejscorecomparev350v351-2024-09-04" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.0...v3.5.1" class="link">https://github.com/vuejs/core/compare/v3.5.0...v3.5.1</a>">3.5.1</a> (2024-09-04)</h2> <h3 id="user-content-bug-fixes-12" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>build:</strong> improve built-in components treeshakability (<a href="<a href="https://github.com/vuejs/core/commit/4eee630b3122a10d0baf9b91358cfffa92d6fd81" class="commit"><code class="nohighlight">4eee630b31</code></a>">4eee630</a>)</li> <li><strong>reactivity:</strong> handle non-array arguments in reactive <code>concat</code> method (<a href="<a href="https://github.com/vuejs/core/issues/11794" class="link">https://github.com/vuejs/core/issues/11794</a>">#11794</a>) (<a href="<a href="https://github.com/vuejs/core/commit/475977a6f76b77392610e0a3ec2b0e076d1e1d59" class="commit"><code class="nohighlight">475977a6f7</code></a>">475977a</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11792" class="link">https://github.com/vuejs/core/issues/11792</a>">#11792</a></li> <li><strong>Transition:</strong> avoid applying transition hooks on comment vnode (<a href="<a href="https://github.com/vuejs/core/issues/11788" class="link">https://github.com/vuejs/core/issues/11788</a>">#11788</a>) (<a href="<a href="https://github.com/vuejs/core/commit/51912f8a02e35f172f6d30ed7a2f3a92c1407cf9" class="commit"><code class="nohighlight">51912f8a02</code></a>">51912f8</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11782" class="link">https://github.com/vuejs/core/issues/11782</a>">#11782</a></li> <li><strong>types:</strong> avoid using intersection type in <code>Readonly<...></code> to fix JSDoc emit (<a href="<a href="https://github.com/vuejs/core/issues/11799" class="link">https://github.com/vuejs/core/issues/11799</a>">#11799</a>) (<a href="<a href="https://github.com/vuejs/core/commit/7518bc19dc73ba46dcf1eef6e23f9e6e75552675" class="commit"><code class="nohighlight">7518bc19dc</code></a>">7518bc1</a>)</li> <li><strong>useTemplateRef:</strong> fix readonly warning when useTemplateRef has same variable name as template ref (<a href="<a href="https://github.com/vuejs/core/commit/bc63df01992fdbf0b6749ad234153725697ed896" class="commit"><code class="nohighlight">bc63df0199</code></a>">bc63df0</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11795" class="link">https://github.com/vuejs/core/issues/11795</a>">#11795</a> <a href="<a href="https://github.com/vuejs/core/issues/11802" class="link">https://github.com/vuejs/core/issues/11802</a>">#11802</a> <a href="<a href="https://github.com/vuejs/core/issues/11804" class="link">https://github.com/vuejs/core/issues/11804</a>">#11804</a></li> </ul> <h1 id="user-content-350httpsgithubcomvuejscorecomparev350-rc1v350-2024-09-03" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.0-rc.1...v3.5.0" class="link">https://github.com/vuejs/core/compare/v3.5.0-rc.1...v3.5.0</a>">3.5.0</a> (2024-09-03)</h1> <h2 id="user-content-aggregated-features-list-for-35-alpha-to-stable" dir="auto">Aggregated Features List for 3.5 (alpha to stable)</h2> <h3 id="user-content-reactivity" dir="auto">Reactivity</h3> <ul dir="auto"> <li><strong>reactivity</strong>: Refactor reactivity system to use version counting and doubly-linked list tracking (<a href="<a href="https://github.com/vuejs/core/pull/10397" class="link">https://github.com/vuejs/core/pull/10397</a>">#10397</a>) (<a href="<a href="https://github.com/vuejs/core/commit/05eb4e0fefd585125dd60b7f8fe9c36928d921aa" class="commit"><code class="nohighlight">05eb4e0fef</code></a>">05eb4e0</a>)</li> <li><strong>reactivity</strong>: Optimize array tracking (<a href="<a href="https://github.com/vuejs/core/pull/9511" class="link">https://github.com/vuejs/core/pull/9511</a>">#9511</a>) (<a href="<a href="https://github.com/vuejs/core/commit/70196a40cc078f50fcc1110c38c06fbcc70b205e" class="commit"><code class="nohighlight">70196a40cc</code></a>">70196a4</a>)</li> <li><strong>compiler-sfc:</strong> enable reactive props destructure by default (<a href="<a href="https://github.com/vuejs/core/commit/d2dac0e359c47d1ed0aa77eda488e76fd6466d2d" class="commit"><code class="nohighlight">d2dac0e359</code></a>">d2dac0e</a>)</li> <li><strong>reactivity:</strong> <code>onEffectCleanup</code> API (<a href="<a href="https://github.com/vuejs/core/commit/2cc5615590de77126e8df46136de0240dbde5004" class="commit"><code class="nohighlight">2cc5615590</code></a>">2cc5615</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10173" class="link">https://github.com/vuejs/core/issues/10173</a>">#10173</a></li> <li><strong>reactivity:</strong> add <code>failSilently</code> argument for <code>onScopeDispose</code> (<a href="<a href="https://github.com/vuejs/core/commit/9a936aaec489c79433a32791ecf5ddb1739a62bd" class="commit"><code class="nohighlight">9a936aaec4</code></a>">9a936aa</a>)</li> <li><strong>reactivity/watch:</strong> base <code>watch</code>, <code>getCurrentWatcher</code>, and <code>onWatcherCleanup</code> (<a href="<a href="https://github.com/vuejs/core/issues/9927" class="link">https://github.com/vuejs/core/issues/9927</a>">#9927</a>) (<a href="<a href="https://github.com/vuejs/core/commit/205e5b5e277243c3af2c937d9bd46cf671296b72" class="commit"><code class="nohighlight">205e5b5e27</code></a>">205e5b5</a>)</li> <li><strong>reactivity/watch:</strong> add pause/resume for ReactiveEffect, EffectScope, and WatchHandle (<a href="<a href="https://github.com/vuejs/core/issues/9651" class="link">https://github.com/vuejs/core/issues/9651</a>">#9651</a>) (<a href="<a href="https://github.com/vuejs/core/commit/267093c31490050bfcf3ff2b30a2aefee2dad582" class="commit"><code class="nohighlight">267093c314</code></a>">267093c</a>)</li> <li><strong>watch:</strong> support passing number to <code>deep</code> option to control the watch depth (<a href="<a href="https://github.com/vuejs/core/issues/9572" class="link">https://github.com/vuejs/core/issues/9572</a>">#9572</a>) (<a href="<a href="https://github.com/vuejs/core/commit/22f7d96757956ebe0baafe52256aa327908cc51c" class="commit"><code class="nohighlight">22f7d96757</code></a>">22f7d96</a>)</li> <li><strong>types:</strong> export <code>MultiWatchSources</code> type (<a href="<a href="https://github.com/vuejs/core/issues/9563" class="link">https://github.com/vuejs/core/issues/9563</a>">#9563</a>) (<a href="<a href="https://github.com/vuejs/core/commit/998dca59f140420280803233f41707580688562c" class="commit"><code class="nohighlight">998dca59f1</code></a>">998dca5</a>)</li> <li><strong>types:</strong> allow computed getter and setter types to be unrelated (<a href="<a href="https://github.com/vuejs/core/issues/11472" class="link">https://github.com/vuejs/core/issues/11472</a>">#11472</a>) (<a href="<a href="https://github.com/vuejs/core/commit/a01675ef8f99b5acd6832c53051f4415b18609f2" class="commit"><code class="nohighlight">a01675ef8f</code></a>">a01675e</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7271" class="link">https://github.com/vuejs/core/issues/7271</a>">#7271</a></li> </ul> <h3 id="user-content-ssr" dir="auto">SSR</h3> <ul dir="auto"> <li><strong>runtime-core:</strong> <code>useId()</code> and <code>app.config.idPrefix</code> (<a href="<a href="https://github.com/vuejs/core/issues/11404" class="link">https://github.com/vuejs/core/issues/11404</a>">#11404</a>) (<a href="<a href="https://github.com/vuejs/core/commit/73ef1561f6905d69f968c094d0180c61824f1247" class="commit"><code class="nohighlight">73ef1561f6</code></a>">73ef156</a>)</li> <li><strong>hydration:</strong> lazy hydration strategies for async components (<a href="<a href="https://github.com/vuejs/core/issues/11458" class="link">https://github.com/vuejs/core/issues/11458</a>">#11458</a>) (<a href="<a href="https://github.com/vuejs/core/commit/d14a11c1cdcee88452f17ce97758743c863958f4" class="commit"><code class="nohighlight">d14a11c1cd</code></a>">d14a11c</a>)</li> <li><strong>hydration:</strong> support suppressing hydration mismatch via data-allow-mismatch (<a href="<a href="https://github.com/vuejs/core/commit/94fb2b8106a66bcca1a3f922a246a29fdd1274b1" class="commit"><code class="nohighlight">94fb2b8106</code></a>">94fb2b8</a>)</li> </ul> <h3 id="user-content-custom-element" dir="auto">Custom Element</h3> <ul dir="auto"> <li><strong>custom-element:</strong> <code>useHost()</code> helper (<a href="<a href="https://github.com/vuejs/core/commit/775103af37df69d34c79f12c4c1776c47d07f0a0" class="commit"><code class="nohighlight">775103af37</code></a>">775103a</a>)</li> <li><strong>custom-element:</strong> <code>useShadowRoot()</code> helper (<a href="<a href="https://github.com/vuejs/core/commit/5a1a89bd6178cc2f84ba91da7d72aee4c6ec1282" class="commit"><code class="nohighlight">5a1a89bd61</code></a>">5a1a89b</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6113" class="link">https://github.com/vuejs/core/issues/6113</a>">#6113</a> <a href="<a href="https://github.com/vuejs/core/issues/8195" class="link">https://github.com/vuejs/core/issues/8195</a>">#8195</a></li> <li><strong>custom-element:</strong> expose <code>this.$host</code> in Options API (<a href="<a href="https://github.com/vuejs/core/commit/1ef8f46af0cfdec2fed66376772409e0aa25ad50" class="commit"><code class="nohighlight">1ef8f46af0</code></a>">1ef8f46</a>)</li> <li><strong>custom-element:</strong> inject child components styles to custom element shadow root (<a href="<a href="https://github.com/vuejs/core/issues/11517" class="link">https://github.com/vuejs/core/issues/11517</a>">#11517</a>) (<a href="<a href="https://github.com/vuejs/core/commit/56c76a8b05c45f782ed3a16ec77c6292b71a17f1" class="commit"><code class="nohighlight">56c76a8b05</code></a>">56c76a8</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4662" class="link">https://github.com/vuejs/core/issues/4662</a>">#4662</a> <a href="<a href="https://github.com/vuejs/core/issues/7941" class="link">https://github.com/vuejs/core/issues/7941</a>">#7941</a> <a href="<a href="https://github.com/vuejs/core/issues/7942" class="link">https://github.com/vuejs/core/issues/7942</a>">#7942</a></li> <li><strong>custom-element:</strong> support configurable app instance in defineCustomElement (<a href="<a href="https://github.com/vuejs/core/commit/6758c3cd0427f97394d95168c655dae3b7fa62cd" class="commit"><code class="nohighlight">6758c3cd04</code></a>">6758c3c</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4356" class="link">https://github.com/vuejs/core/issues/4356</a>">#4356</a> <a href="<a href="https://github.com/vuejs/core/issues/4635" class="link">https://github.com/vuejs/core/issues/4635</a>">#4635</a></li> <li><strong>custom-element:</strong> support css <code>:host</code> selector by applying css vars on host element (<a href="<a href="https://github.com/vuejs/core/issues/8830" class="link">https://github.com/vuejs/core/issues/8830</a>">#8830</a>) (<a href="<a href="https://github.com/vuejs/core/commit/03a9ea2b88df0842a820e09f7445c4b9189e3fcb" class="commit"><code class="nohighlight">03a9ea2b88</code></a>">03a9ea2</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/8826" class="link">https://github.com/vuejs/core/issues/8826</a>">#8826</a></li> <li><strong>custom-element:</strong> support emit with options (<a href="<a href="https://github.com/vuejs/core/commit/e181bff6dc39d5cef92000c10291243c7d6e4d08" class="commit"><code class="nohighlight">e181bff6dc</code></a>">e181bff</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7605" class="link">https://github.com/vuejs/core/issues/7605</a>">#7605</a></li> <li><strong>custom-element:</strong> support expose on customElement (<a href="<a href="https://github.com/vuejs/core/issues/6256" class="link">https://github.com/vuejs/core/issues/6256</a>">#6256</a>) (<a href="<a href="https://github.com/vuejs/core/commit/af838c1b5ec23552e52e64ffa7db0eb0246c3624" class="commit"><code class="nohighlight">af838c1b5e</code></a>">af838c1</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5540" class="link">https://github.com/vuejs/core/issues/5540</a>">#5540</a></li> <li><strong>custom-element:</strong> support <code>nonce</code> option for injected style tags (<a href="<a href="https://github.com/vuejs/core/commit/bb4a02a70c30e739a3c705b3d96d09258d7d7ded" class="commit"><code class="nohighlight">bb4a02a70c</code></a>">bb4a02a</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6530" class="link">https://github.com/vuejs/core/issues/6530</a>">#6530</a></li> <li><strong>custom-element:</strong> support passing custom-element-specific options via 2nd argument of defineCustomElement (<a href="<a href="https://github.com/vuejs/core/commit/60a88a2b129714186cf6ba66f30f31d733d0311e" class="commit"><code class="nohighlight">60a88a2b12</code></a>">60a88a2</a>)</li> <li><strong>custom-element:</strong> support <code>shadowRoot: false</code> in <code>defineCustomElement()</code> (<a href="<a href="https://github.com/vuejs/core/commit/37d2ce5d8e0fac4a00064f02b05f91f69b2d5d5e" class="commit"><code class="nohighlight">37d2ce5d8e</code></a>">37d2ce5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4314" class="link">https://github.com/vuejs/core/issues/4314</a>">#4314</a> <a href="<a href="https://github.com/vuejs/core/issues/4404" class="link">https://github.com/vuejs/core/issues/4404</a>">#4404</a></li> </ul> <h3 id="user-content-teleport" dir="auto">Teleport</h3> <ul dir="auto"> <li><strong>teleport:</strong> support deferred Teleport (<a href="<a href="https://github.com/vuejs/core/issues/11387" class="link">https://github.com/vuejs/core/issues/11387</a>">#11387</a>) (<a href="<a href="https://github.com/vuejs/core/commit/59a3e88903b10ac2278170a44d5a03f24fef23ef" class="commit"><code class="nohighlight">59a3e88903</code></a>">59a3e88</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/2015" class="link">https://github.com/vuejs/core/issues/2015</a>">#2015</a> <a href="<a href="https://github.com/vuejs/core/issues/11386" class="link">https://github.com/vuejs/core/issues/11386</a>">#11386</a></li> <li><strong>teleport/transition:</strong> support directly nesting Teleport inside Transition (<a href="<a href="https://github.com/vuejs/core/issues/6548" class="link">https://github.com/vuejs/core/issues/6548</a>">#6548</a>) (<a href="<a href="https://github.com/vuejs/core/commit/0e6e3c7eb0e5320b7c1818e025cb4a490fede9c0" class="commit"><code class="nohighlight">0e6e3c7eb0</code></a>">0e6e3c7</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5836" class="link">https://github.com/vuejs/core/issues/5836</a>">#5836</a></li> </ul> <h3 id="user-content-misc" dir="auto">Misc</h3> <ul dir="auto"> <li><strong>runtime-core:</strong> <code>useTemplateRef()</code> (<a href="<a href="https://github.com/vuejs/core/commit/3ba70e49b5856c53611c314d4855d679a546a7df" class="commit"><code class="nohighlight">3ba70e49b5</code></a>">3ba70e4</a>)</li> <li><strong>runtime-core:</strong> add <code>app.onUnmount()</code> for registering cleanup functions (<a href="<a href="https://github.com/vuejs/core/issues/4619" class="link">https://github.com/vuejs/core/issues/4619</a>">#4619</a>) (<a href="<a href="https://github.com/vuejs/core/commit/582a3a382b1adda565bac576b913a88d9e8d7a9e" class="commit"><code class="nohighlight">582a3a382b</code></a>">582a3a3</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4516" class="link">https://github.com/vuejs/core/issues/4516</a>">#4516</a></li> <li><strong>runtime-core:</strong> add <code>app.config.throwUnhandledErrorInProduction</code> (<a href="<a href="https://github.com/vuejs/core/commit/f476b7f030f2dd427ca655fcea36f4933a4b4da0" class="commit"><code class="nohighlight">f476b7f030</code></a>">f476b7f</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7876" class="link">https://github.com/vuejs/core/issues/7876</a>">#7876</a></li> <li><strong>runtime-dom:</strong> Trusted Types compatibility (<a href="<a href="https://github.com/vuejs/core/issues/10844" class="link">https://github.com/vuejs/core/issues/10844</a>">#10844</a>) (<a href="<a href="https://github.com/vuejs/core/commit/6d4eb94853ed1b2b1675bdd7d5ba9c75cc6daed5" class="commit"><code class="nohighlight">6d4eb94853</code></a>">6d4eb94</a>)</li> <li><strong>compiler-core:</strong> support <code>Symbol</code> global in template expressions (<a href="<a href="https://github.com/vuejs/core/issues/9069" class="link">https://github.com/vuejs/core/issues/9069</a>">#9069</a>) (<a href="<a href="https://github.com/vuejs/core/commit/a501a85a7c910868e01a5c70a2abea4e9d9e87f3" class="commit"><code class="nohighlight">a501a85a7c</code></a>">a501a85</a>)</li> <li><strong>types:</strong> export more emit related types (<a href="<a href="https://github.com/vuejs/core/issues/11017" class="link">https://github.com/vuejs/core/issues/11017</a>">#11017</a>) (<a href="<a href="https://github.com/vuejs/core/commit/189573dcee2a16bd3ed36ff5589d43f535e5e733" class="commit"><code class="nohighlight">189573dcee</code></a>">189573d</a>)</li> </ul> <ul dir="auto"> <li><strong>types:</strong> add loading prop to iframe (<a href="<a href="https://github.com/vuejs/core/issues/11767" class="link">https://github.com/vuejs/core/issues/11767</a>">#11767</a>) (<a href="<a href="https://github.com/vuejs/core/commit/d86fe0ec002901dc359a0e85f3a421b4a8538d68" class="commit"><code class="nohighlight">d86fe0ec00</code></a>">d86fe0e</a>)</li> </ul> <h3 id="user-content-internals" dir="auto">Internals</h3> <ul dir="auto"> <li><strong>reactivity:</strong> store value cache on CustomRefs impls (<a href="<a href="https://github.com/vuejs/core/issues/11539" class="link">https://github.com/vuejs/core/issues/11539</a>">#11539</a>) (<a href="<a href="https://github.com/vuejs/core/commit/e044b6e737efc9433d1d84590036b82280da6292" class="commit"><code class="nohighlight">e044b6e737</code></a>">e044b6e</a>)</li> <li><strong>types:</strong> provide internal options for directly using user types in language tools (<a href="<a href="https://github.com/vuejs/core/issues/10801" class="link">https://github.com/vuejs/core/issues/10801</a>">#10801</a>) (<a href="<a href="https://github.com/vuejs/core/commit/75c8cf63a1ef30ac84f91282d66ad3f57c6612e9" class="commit"><code class="nohighlight">75c8cf63a1</code></a>">75c8cf6</a>)</li> <li><strong>types:</strong> provide internal options for using refs type in language tools (<a href="<a href="https://github.com/vuejs/core/issues/11492" class="link">https://github.com/vuejs/core/issues/11492</a>">#11492</a>) (<a href="<a href="https://github.com/vuejs/core/commit/5ffd1a89455807d5069eb2c28eba0379641dca76" class="commit"><code class="nohighlight">5ffd1a8945</code></a>">5ffd1a8</a>)</li> </ul> <h2 id="user-content-bug-fixes-13" dir="auto">Bug Fixes</h2> <ul dir="auto"> <li><strong>compiler-sfc:</strong> fix import usage check for kebab-case same name shorthand binding (<a href="<a href="https://github.com/vuejs/core/commit/0f7c0e5dc0eedada7a5194db87fd0a7dbd1d3354" class="commit"><code class="nohighlight">0f7c0e5dc0</code></a>">0f7c0e5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11745" class="link">https://github.com/vuejs/core/issues/11745</a>">#11745</a> <a href="<a href="https://github.com/vuejs/core/issues/11754" class="link">https://github.com/vuejs/core/issues/11754</a>">#11754</a></li> <li><strong>cssVars:</strong> correctly escape double quotes in SSR (<a href="<a href="https://github.com/vuejs/core/issues/11784" class="link">https://github.com/vuejs/core/issues/11784</a>">#11784</a>) (<a href="<a href="https://github.com/vuejs/core/commit/7b5b6e0275f35748dca6d7eb842f8ab2364c6b9a" class="commit"><code class="nohighlight">7b5b6e0275</code></a>">7b5b6e0</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11779" class="link">https://github.com/vuejs/core/issues/11779</a>">#11779</a></li> <li><strong>deps:</strong> update dependency postcss to ^8.4.44 (<a href="<a href="https://github.com/vuejs/core/issues/11774" class="link">https://github.com/vuejs/core/issues/11774</a>">#11774</a>) (<a href="<a href="https://github.com/vuejs/core/commit/cb843e0be31f9e563ccfc30eca0c06f2a224b505" class="commit"><code class="nohighlight">cb843e0be3</code></a>">cb843e0</a>)</li> <li><strong>hydration:</strong> escape css var name to avoid mismatch (<a href="<a href="https://github.com/vuejs/core/issues/11739" class="link">https://github.com/vuejs/core/issues/11739</a>">#11739</a>) (<a href="<a href="https://github.com/vuejs/core/commit/ca12e776bc53aaa31f2df6bb6edc6be1b2f10c37" class="commit"><code class="nohighlight">ca12e776bc</code></a>">ca12e77</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11735" class="link">https://github.com/vuejs/core/issues/11735</a>">#11735</a></li> <li><strong>hydration:</strong> handle text nodes with 0 during hydration (<a href="<a href="https://github.com/vuejs/core/issues/11772" class="link">https://github.com/vuejs/core/issues/11772</a>">#11772</a>) (<a href="<a href="https://github.com/vuejs/core/commit/c756da24b2d8635cf52b4c7d3abf5bf938852cc5" class="commit"><code class="nohighlight">c756da24b2</code></a>">c756da2</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11771" class="link">https://github.com/vuejs/core/issues/11771</a>">#11771</a></li> <li><strong>reactivity:</strong> correctly handle method calls on user-extended arrays (<a href="<a href="https://github.com/vuejs/core/issues/11760" class="link">https://github.com/vuejs/core/issues/11760</a>">#11760</a>) (<a href="<a href="https://github.com/vuejs/core/commit/9817c80187bec6a3344c74d65fac92262de0fcdd" class="commit"><code class="nohighlight">9817c80187</code></a>">9817c80</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11759" class="link">https://github.com/vuejs/core/issues/11759</a>">#11759</a></li> <li><strong>runtime-dom:</strong> avoid unnecessary prop patch for checkbox (<a href="<a href="https://github.com/vuejs/core/issues/11657" class="link">https://github.com/vuejs/core/issues/11657</a>">#11657</a>) (<a href="<a href="https://github.com/vuejs/core/commit/c3ce9fe3d8fc27d864ce7148cd36da882cfc21ab" class="commit"><code class="nohighlight">c3ce9fe3d8</code></a>">c3ce9fe</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11647" class="link">https://github.com/vuejs/core/issues/11647</a>">#11647</a></li> <li><strong>runtime-dom:</strong> prevent unnecessary DOM update from v-model (<a href="<a href="https://github.com/vuejs/core/issues/11656" class="link">https://github.com/vuejs/core/issues/11656</a>">#11656</a>) (<a href="<a href="https://github.com/vuejs/core/commit/b1be9bd64f2c7c4286fecb25bad5d5edd49efce9" class="commit"><code class="nohighlight">b1be9bd64f</code></a>">b1be9bd</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11647" class="link">https://github.com/vuejs/core/issues/11647</a>">#11647</a></li> <li><strong>server-renderer:</strong> Fix call to serverPrefetch in server renderer with an async setup (<a href="<a href="https://github.com/vuejs/core/issues/10893" class="link">https://github.com/vuejs/core/issues/10893</a>">#10893</a>) (<a href="<a href="https://github.com/vuejs/core/commit/6039e25e04a8c1db5821955f011d57f1615807ab" class="commit"><code class="nohighlight">6039e25e04</code></a>">6039e25</a>)</li> <li><strong>server-renderer:</strong> render <code>className</code> during SSR (<a href="<a href="https://github.com/vuejs/core/issues/11722" class="link">https://github.com/vuejs/core/issues/11722</a>">#11722</a>) (<a href="<a href="https://github.com/vuejs/core/commit/52cdb0f991dc154ae32a2900874d5dbc4e078565" class="commit"><code class="nohighlight">52cdb0f991</code></a>">52cdb0f</a>)</li> <li><strong>types/defineModel:</strong> allow getter and setter types to be unrelated (<a href="<a href="https://github.com/vuejs/core/issues/11699" class="link">https://github.com/vuejs/core/issues/11699</a>">#11699</a>) (<a href="<a href="https://github.com/vuejs/core/commit/fe07f7073617df358c2f8cbc3de433359e873c96" class="commit"><code class="nohighlight">fe07f70736</code></a>">fe07f70</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11697" class="link">https://github.com/vuejs/core/issues/11697</a>">#11697</a></li> </ul> <h1 id="user-content-350-rc1httpsgithubcomvuejscorecomparev350-beta3v350-rc1-2024-08-29" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.0-beta.3...v3.5.0-rc.1" class="link">https://github.com/vuejs/core/compare/v3.5.0-beta.3...v3.5.0-rc.1</a>">3.5.0-rc.1</a> (2024-08-29)</h1> <h3 id="user-content-bug-fixes-14" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>compiler-sfc:</strong> skip circular tsconfig project reference (<a href="<a href="https://github.com/vuejs/core/issues/11680" class="link">https://github.com/vuejs/core/issues/11680</a>">#11680</a>) (<a href="<a href="https://github.com/vuejs/core/commit/9c4c2e51b045218d0c5ca64b4fb58b17d5d580cc" class="commit"><code class="nohighlight">9c4c2e51b0</code></a>">9c4c2e5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11382" class="link">https://github.com/vuejs/core/issues/11382</a>">#11382</a></li> <li><strong>custom-element:</strong> handle keys set on custom elements (<a href="<a href="https://github.com/vuejs/core/issues/11655" class="link">https://github.com/vuejs/core/issues/11655</a>">#11655</a>) (<a href="<a href="https://github.com/vuejs/core/commit/f1d1831f07fe52d5681a5ec9ec310572463abf26" class="commit"><code class="nohighlight">f1d1831f07</code></a>">f1d1831</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11641" class="link">https://github.com/vuejs/core/issues/11641</a>">#11641</a></li> <li><strong>deps:</strong> update dependency monaco-editor to ^0.51.0 (<a href="<a href="https://github.com/vuejs/core/issues/11713" class="link">https://github.com/vuejs/core/issues/11713</a>">#11713</a>) (<a href="<a href="https://github.com/vuejs/core/commit/434f8a97c77f68aeae050e9e4e1f54f63bc4bd26" class="commit"><code class="nohighlight">434f8a97c7</code></a>">434f8a9</a>)</li> <li><strong>keep-alive:</strong> reset keep alive flag when the component is removed from include (<a href="<a href="https://github.com/vuejs/core/issues/11718" class="link">https://github.com/vuejs/core/issues/11718</a>">#11718</a>) (<a href="<a href="https://github.com/vuejs/core/commit/29c321bfd33f9197244dec3d027077e63b2cdf2f" class="commit"><code class="nohighlight">29c321bfd3</code></a>">29c321b</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11717" class="link">https://github.com/vuejs/core/issues/11717</a>">#11717</a></li> <li><strong>reactivity:</strong> avoid infinite recursion when mutating ref wrapped in reactive (<a href="<a href="https://github.com/vuejs/core/commit/313e4bf55214ac1e334a99c329a3ba5daca4f156" class="commit"><code class="nohighlight">313e4bf552</code></a>">313e4bf</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11696" class="link">https://github.com/vuejs/core/issues/11696</a>">#11696</a></li> <li><strong>reactivity:</strong> ensure watcher with once: true are properly removed from effect scope (<a href="<a href="https://github.com/vuejs/core/issues/11665" class="link">https://github.com/vuejs/core/issues/11665</a>">#11665</a>) (<a href="<a href="https://github.com/vuejs/core/commit/fbc0c42bcf6dea5a6ae664223fa19d4375ca39f0" class="commit"><code class="nohighlight">fbc0c42bcf</code></a>">fbc0c42</a>)</li> <li><strong>runtime-dom:</strong> setting innerHTML when patching props should go through trusted types (<a href="<a href="https://github.com/vuejs/core/commit/d875de54e9e03e0768fe550aa4c4886a4baf3bd7" class="commit"><code class="nohighlight">d875de54e9</code></a>">d875de5</a>)</li> <li><strong>types:</strong> GlobalDirective / GlobalComponents should not be records (<a href="<a href="https://github.com/vuejs/core/commit/42e8df62030e7f2c287d9103f045e67b34a63e3b" class="commit"><code class="nohighlight">42e8df6203</code></a>">42e8df6</a>)</li> </ul> <h1 id="user-content-350-beta3httpsgithubcomvuejscorecomparev350-beta2v350-beta3-2024-08-20" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.0-beta.2...v3.5.0-beta.3" class="link">https://github.com/vuejs/core/compare/v3.5.0-beta.2...v3.5.0-beta.3</a>">3.5.0-beta.3</a> (2024-08-20)</h1> <h3 id="user-content-bug-fixes-15" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>reactivity:</strong> extended methods respect reactive (<a href="<a href="https://github.com/vuejs/core/issues/11629" class="link">https://github.com/vuejs/core/issues/11629</a>">#11629</a>) (<a href="<a href="https://github.com/vuejs/core/commit/9de1d101f98bf6081f41038f6974826f190330a0" class="commit"><code class="nohighlight">9de1d101f9</code></a>">9de1d10</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11628" class="link">https://github.com/vuejs/core/issues/11628</a>">#11628</a></li> <li><strong>runtime-core:</strong> correct type inference for PascalCase emits (<a href="<a href="https://github.com/vuejs/core/issues/11579" class="link">https://github.com/vuejs/core/issues/11579</a>">#11579</a>) (<a href="<a href="https://github.com/vuejs/core/commit/d7d0371e74707ee601020f67de88e091cdae2673" class="commit"><code class="nohighlight">d7d0371e74</code></a>">d7d0371</a>), closes <a href="<a href="https://github.com/vuejs/language-tools/issues/4269" class="link">https://github.com/vuejs/language-tools/issues/4269</a>">vuejs/language-tools#4269</a></li> <li><strong>runtime-core:</strong> ensure suspense content inherit scopeId (<a href="<a href="https://github.com/vuejs/core/issues/10652" class="link">https://github.com/vuejs/core/issues/10652</a>">#10652</a>) (<a href="<a href="https://github.com/vuejs/core/commit/ac2a410e46392db63ca4ed2db3c0fa71ebe1e855" class="commit"><code class="nohighlight">ac2a410e46</code></a>">ac2a410</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5148" class="link">https://github.com/vuejs/core/issues/5148</a>">#5148</a></li> <li><strong>runtime-core:</strong> pre jobs without an id should run first (<a href="<a href="https://github.com/vuejs/core/issues/7746" class="link">https://github.com/vuejs/core/issues/7746</a>">#7746</a>) (<a href="<a href="https://github.com/vuejs/core/commit/b332f80f0edb018229a23b43b93bb402b6368a3c" class="commit"><code class="nohighlight">b332f80f0e</code></a>">b332f80</a>)</li> <li><strong>ssr:</strong> apply ssr props to the the fallback vnode-based branch in ssr (<a href="<a href="https://github.com/vuejs/core/issues/7247" class="link">https://github.com/vuejs/core/issues/7247</a>">#7247</a>) (<a href="<a href="https://github.com/vuejs/core/commit/98b83e86d16c635547a1e735e5fb675aea2f0f1b" class="commit"><code class="nohighlight">98b83e86d1</code></a>">98b83e8</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6123" class="link">https://github.com/vuejs/core/issues/6123</a>">#6123</a></li> <li><strong>types/custom-element:</strong> <code>defineCustomElement</code> with required props (<a href="<a href="https://github.com/vuejs/core/issues/11578" class="link">https://github.com/vuejs/core/issues/11578</a>">#11578</a>) (<a href="<a href="https://github.com/vuejs/core/commit/5e0f6d5f8fe7c4eb8f247357c3e2e281726f36db" class="commit"><code class="nohighlight">5e0f6d5f8f</code></a>">5e0f6d5</a>)</li> <li><strong>types:</strong> strip non-prop default values from return type of withDefaults (<a href="<a href="https://github.com/vuejs/core/issues/9998" class="link">https://github.com/vuejs/core/issues/9998</a>">#9998</a>) (<a href="<a href="https://github.com/vuejs/core/commit/44973bb3e790db7d8aa7af4eda21c80cac73a8de" class="commit"><code class="nohighlight">44973bb3e7</code></a>">44973bb</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/9899" class="link">https://github.com/vuejs/core/issues/9899</a>">#9899</a></li> <li><strong>watch:</strong> handle errors in computed used as watch source (<a href="<a href="https://github.com/vuejs/core/issues/11626" class="link">https://github.com/vuejs/core/issues/11626</a>">#11626</a>) (<a href="<a href="https://github.com/vuejs/core/commit/8bcaad4a32cf0f1f89e0259f6a53036620b7fe9f" class="commit"><code class="nohighlight">8bcaad4a32</code></a>">8bcaad4</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11624" class="link">https://github.com/vuejs/core/issues/11624</a>">#11624</a></li> </ul> <h3 id="user-content-features-1" dir="auto">Features</h3> <ul dir="auto"> <li><strong>reactivity:</strong> base <code>watch</code>, <code>getCurrentWatcher</code>, and <code>onWatcherCleanup</code> (<a href="<a href="https://github.com/vuejs/core/issues/9927" class="link">https://github.com/vuejs/core/issues/9927</a>">#9927</a>) (<a href="<a href="https://github.com/vuejs/core/commit/205e5b5e277243c3af2c937d9bd46cf671296b72" class="commit"><code class="nohighlight">205e5b5e27</code></a>">205e5b5</a>)</li> </ul> <h3 id="user-content-performance-improvements-4" dir="auto">Performance Improvements</h3> <ul dir="auto"> <li><strong>runtime-core:</strong> use <code>apply</code> to avoid spreading. (<a href="<a href="https://github.com/vuejs/core/issues/5985" class="link">https://github.com/vuejs/core/issues/5985</a>">#5985</a>) (<a href="<a href="https://github.com/vuejs/core/commit/bb6babca8f206615d4e246457cd54d21bb3bc5a4" class="commit"><code class="nohighlight">bb6babca8f</code></a>">bb6babc</a>)</li> </ul> <h1 id="user-content-350-beta2httpsgithubcomvuejscorecomparev350-beta1v350-beta2-2024-08-15" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.5.0-beta.1...v3.5.0-beta.2" class="link">https://github.com/vuejs/core/compare/v3.5.0-beta.1...v3.5.0-beta.2</a>">3.5.0-beta.2</a> (2024-08-15)</h1> <h3 id="user-content-bug-fixes-16" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>build:</strong> revert entities to 4.5 to avoid runtime resolution errors (<a href="<a href="https://github.com/vuejs/core/commit/e9e08155bf8d00c3327ed7371330eb2ae467e560" class="commit"><code class="nohighlight">e9e08155bf</code></a>">e9e0815</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11603" class="link">https://github.com/vuejs/core/issues/11603</a>">#11603</a></li> <li><strong>compiler-core:</strong> use ast-based check for function expressions when possible (<a href="<a href="https://github.com/vuejs/core/commit/58612294757480974e667652ede5bbcf72b1089d" class="commit"><code class="nohighlight">5861229475</code></a>">5861229</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11615" class="link">https://github.com/vuejs/core/issues/11615</a>">#11615</a></li> <li><strong>compiler-sfc:</strong> fix prefixIdentifier default value (<a href="<a href="https://github.com/vuejs/core/commit/3d6f01571b3fb61b32da599d0419eff4e3ebb231" class="commit"><code class="nohighlight">3d6f01571b</code></a>">3d6f015</a>)</li> <li><strong>compiler-sfc:</strong> handle keyof operator with index object (<a href="<a href="https://github.com/vuejs/core/issues/11581" class="link">https://github.com/vuejs/core/issues/11581</a>">#11581</a>) (<a href="<a href="https://github.com/vuejs/core/commit/fe008152c0612ff3ecc7ad88e7e66a06b1b2bc3f" class="commit"><code class="nohighlight">fe008152c0</code></a>">fe00815</a>)</li> <li><strong>custom-element:</strong> keep instance.isCE for backwards compat (<a href="<a href="https://github.com/vuejs/core/commit/e19fc270428b59456fee43224990138c4d6ccb2d" class="commit"><code class="nohighlight">e19fc27042</code></a>">e19fc27</a>)</li> <li><strong>deps:</strong> update dependency postcss to ^8.4.41 (<a href="<a href="https://github.com/vuejs/core/issues/11585" class="link">https://github.com/vuejs/core/issues/11585</a>">#11585</a>) (<a href="<a href="https://github.com/vuejs/core/commit/4c4e12ae28d67d616924b0601e68adc551959971" class="commit"><code class="nohighlight">4c4e12ae28</code></a>">4c4e12a</a>)</li> <li><strong>keep-alive:</strong> ensure include/exclude regexp work with global flag (<a href="<a href="https://github.com/vuejs/core/issues/11595" class="link">https://github.com/vuejs/core/issues/11595</a>">#11595</a>) (<a href="<a href="https://github.com/vuejs/core/commit/3653bc0f45d6fedf84e29b64ca52584359c383c0" class="commit"><code class="nohighlight">3653bc0f45</code></a>">3653bc0</a>)</li> <li><strong>reactivity:</strong> ensure extended method arguments are not lost (<a href="<a href="https://github.com/vuejs/core/issues/11574" class="link">https://github.com/vuejs/core/issues/11574</a>">#11574</a>) (<a href="<a href="https://github.com/vuejs/core/commit/4085def1bae42d01ee3c22c731cc4a02096464ee" class="commit"><code class="nohighlight">4085def1ba</code></a>">4085def</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11570" class="link">https://github.com/vuejs/core/issues/11570</a>">#11570</a></li> <li><strong>reactivity:</strong> sync watch should be executed correctly (<a href="<a href="https://github.com/vuejs/core/issues/11589" class="link">https://github.com/vuejs/core/issues/11589</a>">#11589</a>) (<a href="<a href="https://github.com/vuejs/core/commit/3bda3e83fd9e2fbe451a1c79dae82ff6a7467683" class="commit"><code class="nohighlight">3bda3e83fd</code></a>">3bda3e8</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11577" class="link">https://github.com/vuejs/core/issues/11577</a>">#11577</a></li> <li><strong>types/computed:</strong> ensure type safety for <code>WritableComputedRef</code> (<a href="<a href="https://github.com/vuejs/core/issues/11608" class="link">https://github.com/vuejs/core/issues/11608</a>">#11608</a>) (<a href="<a href="https://github.com/vuejs/core/commit/5cf5a1620d9a97382d386c277265d9dd051fe484" class="commit"><code class="nohighlight">5cf5a1620d</code></a>">5cf5a16</a>)</li> <li><strong>types:</strong> add fallback stub for DOM types when DOM lib is absent (<a href="<a href="https://github.com/vuejs/core/issues/11598" class="link">https://github.com/vuejs/core/issues/11598</a>">#11598</a>) (<a href="<a href="https://github.com/vuejs/core/commit/fee669764fbf475adce9e47a7a73b4937ab31ffc" class="commit"><code class="nohighlight">fee669764f</code></a>">fee6697</a>)</li> </ul> <h3 id="user-content-features-2" dir="auto">Features</h3> <ul dir="auto"> <li><strong>deprecated:</strong> remove deprecated parseExpressions option (<a href="<a href="https://github.com/vuejs/core/issues/11597" class="link">https://github.com/vuejs/core/issues/11597</a>">#11597</a>) (<a href="<a href="https://github.com/vuejs/core/commit/4e7d5db4d276a5d4aaf3af7d43cfd28c171db307" class="commit"><code class="nohighlight">4e7d5db4d2</code></a>">4e7d5db</a>)</li> </ul> <h1 id="user-content-350-beta1httpsgithubcomvuejscorecomparev3437v350-beta1-2024-08-08" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.37...v3.5.0-beta.1" class="link">https://github.com/vuejs/core/compare/v3.4.37...v3.5.0-beta.1</a>">3.5.0-beta.1</a> (2024-08-08)</h1> <h3 id="user-content-bug-fixes-17" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>custom-element:</strong> delay mounting of custom elements with async parent (<a href="<a href="https://github.com/vuejs/core/commit/37ccb9b9a0e4381f9465e0fc6459609003030da4" class="commit"><code class="nohighlight">37ccb9b9a0</code></a>">37ccb9b</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/8127" class="link">https://github.com/vuejs/core/issues/8127</a>">#8127</a> <a href="<a href="https://github.com/vuejs/core/issues/9341" class="link">https://github.com/vuejs/core/issues/9341</a>">#9341</a> <a href="<a href="https://github.com/vuejs/core/issues/9351" class="link">https://github.com/vuejs/core/issues/9351</a>">#9351</a> <a href="<a href="https://github.com/vuejs/core/issues/9351" class="link">https://github.com/vuejs/core/issues/9351</a>">#9351</a></li> <li><strong>custom-element:</strong> delete prop on attribute removal (<a href="<a href="https://github.com/vuejs/core/commit/506c4c53fdf9766c2ce9517ad58d501ef6b1b9de" class="commit"><code class="nohighlight">506c4c53fd</code></a>">506c4c5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11276" class="link">https://github.com/vuejs/core/issues/11276</a>">#11276</a></li> <li><strong>custom-element:</strong> ignore scoped id (<a href="<a href="https://github.com/vuejs/core/commit/7f2c505f92026408a8262ba9b5104a465be19446" class="commit"><code class="nohighlight">7f2c505f92</code></a>">7f2c505</a>)</li> <li><strong>custom-element:</strong> reflect prop default value on custom element (<a href="<a href="https://github.com/vuejs/core/commit/63689ed77601d5f9b78540f810612806c3a5de15" class="commit"><code class="nohighlight">63689ed776</code></a>">63689ed</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/9006" class="link">https://github.com/vuejs/core/issues/9006</a>">#9006</a> <a href="<a href="https://github.com/vuejs/core/issues/10537" class="link">https://github.com/vuejs/core/issues/10537</a>">#10537</a></li> <li><strong>custom-element:</strong> support early-set domProps for async custom elements (<a href="<a href="https://github.com/vuejs/core/commit/a07e7bf5536a6b3db70ba9bb1c3f366dac1bf5a0" class="commit"><code class="nohighlight">a07e7bf553</code></a>">a07e7bf</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11081" class="link">https://github.com/vuejs/core/issues/11081</a>">#11081</a> <a href="<a href="https://github.com/vuejs/core/issues/11082" class="link">https://github.com/vuejs/core/issues/11082</a>">#11082</a></li> <li><strong>types/custome-element:</strong> <code>defineCustomElement</code> props inference with array emits (<a href="<a href="https://github.com/vuejs/core/issues/11384" class="link">https://github.com/vuejs/core/issues/11384</a>">#11384</a>) (<a href="<a href="https://github.com/vuejs/core/commit/e94b01bd8a1ec740eddc823839ab2627b307c1b0" class="commit"><code class="nohighlight">e94b01bd8a</code></a>">e94b01b</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11353" class="link">https://github.com/vuejs/core/issues/11353</a>">#11353</a></li> <li><strong>types:</strong> allow using InjectionKey as valid property key (<a href="<a href="https://github.com/vuejs/core/commit/321d80758c42fccbd39ecbb63f1a4f6632a1580a" class="commit"><code class="nohighlight">321d80758c</code></a>">321d807</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5089" class="link">https://github.com/vuejs/core/issues/5089</a>">#5089</a></li> </ul> <h3 id="user-content-features-3" dir="auto">Features</h3> <ul dir="auto"> <li><strong>custom-element:</strong> expose this.$host in Options API (<a href="<a href="https://github.com/vuejs/core/commit/1ef8f46af0cfdec2fed66376772409e0aa25ad50" class="commit"><code class="nohighlight">1ef8f46af0</code></a>">1ef8f46</a>)</li> <li><strong>custom-element:</strong> inject child components styles to custom element shadow root (<a href="<a href="https://github.com/vuejs/core/issues/11517" class="link">https://github.com/vuejs/core/issues/11517</a>">#11517</a>) (<a href="<a href="https://github.com/vuejs/core/commit/56c76a8b05c45f782ed3a16ec77c6292b71a17f1" class="commit"><code class="nohighlight">56c76a8b05</code></a>">56c76a8</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4662" class="link">https://github.com/vuejs/core/issues/4662</a>">#4662</a> <a href="<a href="https://github.com/vuejs/core/issues/7941" class="link">https://github.com/vuejs/core/issues/7941</a>">#7941</a> <a href="<a href="https://github.com/vuejs/core/issues/7942" class="link">https://github.com/vuejs/core/issues/7942</a>">#7942</a></li> <li><strong>custom-element:</strong> support configurable app instance in defineCustomElement (<a href="<a href="https://github.com/vuejs/core/commit/6758c3cd0427f97394d95168c655dae3b7fa62cd" class="commit"><code class="nohighlight">6758c3cd04</code></a>">6758c3c</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4356" class="link">https://github.com/vuejs/core/issues/4356</a>">#4356</a> <a href="<a href="https://github.com/vuejs/core/issues/4635" class="link">https://github.com/vuejs/core/issues/4635</a>">#4635</a></li> <li><strong>custom-element:</strong> support css <code>:host</code> selector by applying css vars on host element (<a href="<a href="https://github.com/vuejs/core/issues/8830" class="link">https://github.com/vuejs/core/issues/8830</a>">#8830</a>) (<a href="<a href="https://github.com/vuejs/core/commit/03a9ea2b88df0842a820e09f7445c4b9189e3fcb" class="commit"><code class="nohighlight">03a9ea2b88</code></a>">03a9ea2</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/8826" class="link">https://github.com/vuejs/core/issues/8826</a>">#8826</a></li> <li><strong>custom-element:</strong> support emit with options (<a href="<a href="https://github.com/vuejs/core/commit/e181bff6dc39d5cef92000c10291243c7d6e4d08" class="commit"><code class="nohighlight">e181bff6dc</code></a>">e181bff</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7605" class="link">https://github.com/vuejs/core/issues/7605</a>">#7605</a></li> <li><strong>custom-element:</strong> support for expose on customElement (<a href="<a href="https://github.com/vuejs/core/issues/6256" class="link">https://github.com/vuejs/core/issues/6256</a>">#6256</a>) (<a href="<a href="https://github.com/vuejs/core/commit/af838c1b5ec23552e52e64ffa7db0eb0246c3624" class="commit"><code class="nohighlight">af838c1b5e</code></a>">af838c1</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5540" class="link">https://github.com/vuejs/core/issues/5540</a>">#5540</a></li> <li><strong>custom-element:</strong> support nonce option for injected style tags (<a href="<a href="https://github.com/vuejs/core/commit/bb4a02a70c30e739a3c705b3d96d09258d7d7ded" class="commit"><code class="nohighlight">bb4a02a70c</code></a>">bb4a02a</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6530" class="link">https://github.com/vuejs/core/issues/6530</a>">#6530</a></li> <li><strong>custom-element:</strong> support passing custom-element-specific options via 2nd argument of defineCustomElement (<a href="<a href="https://github.com/vuejs/core/commit/60a88a2b129714186cf6ba66f30f31d733d0311e" class="commit"><code class="nohighlight">60a88a2b12</code></a>">60a88a2</a>)</li> <li><strong>custom-element:</strong> support shadowRoot: false in defineCustomElement() (<a href="<a href="https://github.com/vuejs/core/commit/37d2ce5d8e0fac4a00064f02b05f91f69b2d5d5e" class="commit"><code class="nohighlight">37d2ce5d8e</code></a>">37d2ce5</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4314" class="link">https://github.com/vuejs/core/issues/4314</a>">#4314</a> <a href="<a href="https://github.com/vuejs/core/issues/4404" class="link">https://github.com/vuejs/core/issues/4404</a>">#4404</a></li> <li><strong>custom-element:</strong> useHost() helper (<a href="<a href="https://github.com/vuejs/core/commit/775103af37df69d34c79f12c4c1776c47d07f0a0" class="commit"><code class="nohighlight">775103af37</code></a>">775103a</a>)</li> <li><strong>custom-element:</strong> useShadowRoot() helper (<a href="<a href="https://github.com/vuejs/core/commit/5a1a89bd6178cc2f84ba91da7d72aee4c6ec1282" class="commit"><code class="nohighlight">5a1a89bd61</code></a>">5a1a89b</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6113" class="link">https://github.com/vuejs/core/issues/6113</a>">#6113</a> <a href="<a href="https://github.com/vuejs/core/issues/8195" class="link">https://github.com/vuejs/core/issues/8195</a>">#8195</a></li> <li><strong>hydration:</strong> allow fine tuning of lazy hydration strategy triggers (<a href="<a href="https://github.com/vuejs/core/issues/11530" class="link">https://github.com/vuejs/core/issues/11530</a>">#11530</a>) (<a href="<a href="https://github.com/vuejs/core/commit/261c8b111d046204bd22392a8b920e3c3d4def48" class="commit"><code class="nohighlight">261c8b111d</code></a>">261c8b1</a>)</li> <li><strong>reactivity/watch:</strong> add pause/resume for ReactiveEffect, EffectScope, and WatchHandle (<a href="<a href="https://github.com/vuejs/core/issues/9651" class="link">https://github.com/vuejs/core/issues/9651</a>">#9651</a>) (<a href="<a href="https://github.com/vuejs/core/commit/267093c31490050bfcf3ff2b30a2aefee2dad582" class="commit"><code class="nohighlight">267093c314</code></a>">267093c</a>)</li> <li><strong>reactivity:</strong> store value cache on CustomRefs impls (<a href="<a href="https://github.com/vuejs/core/issues/11539" class="link">https://github.com/vuejs/core/issues/11539</a>">#11539</a>) (<a href="<a href="https://github.com/vuejs/core/commit/e044b6e737efc9433d1d84590036b82280da6292" class="commit"><code class="nohighlight">e044b6e737</code></a>">e044b6e</a>)</li> <li><strong>runtime-dom:</strong> Trusted Types compatibility (<a href="<a href="https://github.com/vuejs/core/issues/10844" class="link">https://github.com/vuejs/core/issues/10844</a>">#10844</a>) (<a href="<a href="https://github.com/vuejs/core/commit/6d4eb94853ed1b2b1675bdd7d5ba9c75cc6daed5" class="commit"><code class="nohighlight">6d4eb94853</code></a>">6d4eb94</a>)</li> <li>support specifying allowed keys via generic argument in useTemplateRef() (<a href="<a href="https://github.com/vuejs/core/commit/1fbfa6962b48634ff60837084b82dd57f215c109" class="commit"><code class="nohighlight">1fbfa6962b</code></a>">1fbfa69</a>)</li> <li><strong>types:</strong> allow computed getter and setter types to be unrelated (<a href="<a href="https://github.com/vuejs/core/issues/11472" class="link">https://github.com/vuejs/core/issues/11472</a>">#11472</a>) (<a href="<a href="https://github.com/vuejs/core/commit/a01675ef8f99b5acd6832c53051f4415b18609f2" class="commit"><code class="nohighlight">a01675ef8f</code></a>">a01675e</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7271" class="link">https://github.com/vuejs/core/issues/7271</a>">#7271</a></li> <li><strong>types:</strong> export <code>MultiWatchSources</code> type (<a href="<a href="https://github.com/vuejs/core/issues/9563" class="link">https://github.com/vuejs/core/issues/9563</a>">#9563</a>) (<a href="<a href="https://github.com/vuejs/core/commit/998dca59f140420280803233f41707580688562c" class="commit"><code class="nohighlight">998dca59f1</code></a>">998dca5</a>)</li> <li><strong>types:</strong> provide internal options for using refs type in language tools (<a href="<a href="https://github.com/vuejs/core/issues/11492" class="link">https://github.com/vuejs/core/issues/11492</a>">#11492</a>) (<a href="<a href="https://github.com/vuejs/core/commit/5ffd1a89455807d5069eb2c28eba0379641dca76" class="commit"><code class="nohighlight">5ffd1a8945</code></a>">5ffd1a8</a>)</li> <li><strong>watch:</strong> support passing number to <code>deep</code> option to control the watch depth (<a href="<a href="https://github.com/vuejs/core/issues/9572" class="link">https://github.com/vuejs/core/issues/9572</a>">#9572</a>) (<a href="<a href="https://github.com/vuejs/core/commit/22f7d96757956ebe0baafe52256aa327908cc51c" class="commit"><code class="nohighlight">22f7d96757</code></a>">22f7d96</a>)</li> </ul> <h1 id="user-content-350-alpha5httpsgithubcomvuejscorecomparev3435v350-alpha5-2024-07-31" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.35...v3.5.0-alpha.5" class="link">https://github.com/vuejs/core/compare/v3.4.35...v3.5.0-alpha.5</a>">3.5.0-alpha.5</a> (2024-07-31)</h1> <h3 id="user-content-features-4" dir="auto">Features</h3> <ul dir="auto"> <li><strong>hydration:</strong> support suppressing hydration mismatch via data-allow-mismatch (<a href="<a href="https://github.com/vuejs/core/commit/94fb2b8106a66bcca1a3f922a246a29fdd1274b1" class="commit"><code class="nohighlight">94fb2b8106</code></a>">94fb2b8</a>)</li> <li>lazy hydration strategies for async components (<a href="<a href="https://github.com/vuejs/core/issues/11458" class="link">https://github.com/vuejs/core/issues/11458</a>">#11458</a>) (<a href="<a href="https://github.com/vuejs/core/commit/d14a11c1cdcee88452f17ce97758743c863958f4" class="commit"><code class="nohighlight">d14a11c1cd</code></a>">d14a11c</a>)</li> </ul> <h1 id="user-content-350-alpha4httpsgithubcomvuejscorecomparev3434v350-alpha4-2024-07-24" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.34...v3.5.0-alpha.4" class="link">https://github.com/vuejs/core/compare/v3.4.34...v3.5.0-alpha.4</a>">3.5.0-alpha.4</a> (2024-07-24)</h1> <h3 id="user-content-bug-fixes-18" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>suspense/hydration:</strong> fix hydration timing of async component inside suspense (<a href="<a href="https://github.com/vuejs/core/commit/1b8e197a5b65d67a9703b8511786fb81df9aa7cc" class="commit"><code class="nohighlight">1b8e197a5b</code></a>">1b8e197</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/6638" class="link">https://github.com/vuejs/core/issues/6638</a>">#6638</a></li> <li><strong>useId:</strong> properly mark async boundary for already resolved async component (<a href="<a href="https://github.com/vuejs/core/commit/cd281725781ada2ab279e919031ae307e146a9d9" class="commit"><code class="nohighlight">cd28172578</code></a>">cd28172</a>)</li> </ul> <h1 id="user-content-350-alpha3httpsgithubcomvuejscorecomparev3433v350-alpha3-2024-07-19" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.33...v3.5.0-alpha.3" class="link">https://github.com/vuejs/core/compare/v3.4.33...v3.5.0-alpha.3</a>">3.5.0-alpha.3</a> (2024-07-19)</h1> <h3 id="user-content-bug-fixes-19" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>build:</strong> enable SSR branches in esm-browser builds (<a href="<a href="https://github.com/vuejs/core/commit/b14cd9a68bab082332b0169be075be357be076ca" class="commit"><code class="nohighlight">b14cd9a68b</code></a>">b14cd9a</a>)</li> <li><strong>compiler-core:</strong> change node hoisting to caching per instance (<a href="<a href="https://github.com/vuejs/core/issues/11067" class="link">https://github.com/vuejs/core/issues/11067</a>">#11067</a>) (<a href="<a href="https://github.com/vuejs/core/commit/cd0ea0d479a276583fa181d8ecbc97fb0e4a9dce" class="commit"><code class="nohighlight">cd0ea0d479</code></a>">cd0ea0d</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5256" class="link">https://github.com/vuejs/core/issues/5256</a>">#5256</a> <a href="<a href="https://github.com/vuejs/core/issues/9219" class="link">https://github.com/vuejs/core/issues/9219</a>">#9219</a> <a href="<a href="https://github.com/vuejs/core/issues/10959" class="link">https://github.com/vuejs/core/issues/10959</a>">#10959</a></li> <li><strong>compiler-sfc:</strong> should properly walk desutructured props when reactive destructure is not enabled (<a href="<a href="https://github.com/vuejs/core/commit/0fd6193def2380916eb51a118f37f2d9ec2ace23" class="commit"><code class="nohighlight">0fd6193def</code></a>">0fd6193</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/11325" class="link">https://github.com/vuejs/core/issues/11325</a>">#11325</a></li> <li><strong>types:</strong> respect props with default on instance type when using __typeProps (<a href="<a href="https://github.com/vuejs/core/commit/96e473833422342c5ca371ae1aeb186dec9a55e3" class="commit"><code class="nohighlight">96e4738334</code></a>">96e4738</a>)</li> </ul> <h3 id="user-content-features-5" dir="auto">Features</h3> <ul dir="auto"> <li><strong>runtime-core:</strong> useTemplateRef() (<a href="<a href="https://github.com/vuejs/core/commit/3ba70e49b5856c53611c314d4855d679a546a7df" class="commit"><code class="nohighlight">3ba70e49b5</code></a>">3ba70e4</a>)</li> <li><strong>runtime-core:</strong> useId() and app.config.idPrefix (<a href="<a href="https://github.com/vuejs/core/issues/11404" class="link">https://github.com/vuejs/core/issues/11404</a>">#11404</a>) (<a href="<a href="https://github.com/vuejs/core/commit/73ef1561f6905d69f968c094d0180c61824f1247" class="commit"><code class="nohighlight">73ef1561f6</code></a>">73ef156</a>)</li> <li><strong>runtime-core:</strong> add app.config.throwUnhandledErrorInProduction (<a href="<a href="https://github.com/vuejs/core/commit/f476b7f030f2dd427ca655fcea36f4933a4b4da0" class="commit"><code class="nohighlight">f476b7f030</code></a>">f476b7f</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/7876" class="link">https://github.com/vuejs/core/issues/7876</a>">#7876</a></li> <li><strong>teleport:</strong> support deferred Teleport (<a href="<a href="https://github.com/vuejs/core/issues/11387" class="link">https://github.com/vuejs/core/issues/11387</a>">#11387</a>) (<a href="<a href="https://github.com/vuejs/core/commit/59a3e88903b10ac2278170a44d5a03f24fef23ef" class="commit"><code class="nohighlight">59a3e88903</code></a>">59a3e88</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/2015" class="link">https://github.com/vuejs/core/issues/2015</a>">#2015</a> <a href="<a href="https://github.com/vuejs/core/issues/11386" class="link">https://github.com/vuejs/core/issues/11386</a>">#11386</a></li> <li><strong>compiler-core:</strong> support <code>Symbol</code> global in template expressions (<a href="<a href="https://github.com/vuejs/core/issues/9069" class="link">https://github.com/vuejs/core/issues/9069</a>">#9069</a>) (<a href="<a href="https://github.com/vuejs/core/commit/a501a85a7c910868e01a5c70a2abea4e9d9e87f3" class="commit"><code class="nohighlight">a501a85a7c</code></a>">a501a85</a>)</li> <li><strong>types:</strong> export more emit related types (<a href="<a href="https://github.com/vuejs/core/issues/11017" class="link">https://github.com/vuejs/core/issues/11017</a>">#11017</a>) (<a href="<a href="https://github.com/vuejs/core/commit/189573dcee2a16bd3ed36ff5589d43f535e5e733" class="commit"><code class="nohighlight">189573dcee</code></a>">189573d</a>)</li> </ul> <h1 id="user-content-350-alpha2httpsgithubcomvuejscorecomparev3426v350-alpha2-2024-05-04" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.26...v3.5.0-alpha.2" class="link">https://github.com/vuejs/core/compare/v3.4.26...v3.5.0-alpha.2</a>">3.5.0-alpha.2</a> (2024-05-04)</h1> <h3 id="user-content-bug-fixes-20" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>types:</strong> fix app.component() typing with inline defineComponent (<a href="<a href="https://github.com/vuejs/core/commit/908f70adc06038d1ea253d96f4024367f4a7545d" class="commit"><code class="nohighlight">908f70adc0</code></a>">908f70a</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10843" class="link">https://github.com/vuejs/core/issues/10843</a>">#10843</a></li> <li><strong>types:</strong> fix compat with generated types that rely on CreateComponentPublicInstance (<a href="<a href="https://github.com/vuejs/core/commit/c146186396d0c1a65423b8c9a21251c5a6467336" class="commit"><code class="nohighlight">c146186396</code></a>">c146186</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10842" class="link">https://github.com/vuejs/core/issues/10842</a>">#10842</a></li> <li><strong>types:</strong> props in defineOptions type should be optional (<a href="<a href="https://github.com/vuejs/core/commit/124c4cac833a28ae9bc8edc576c1d0c7c41f5985" class="commit"><code class="nohighlight">124c4cac83</code></a>">124c4ca</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10841" class="link">https://github.com/vuejs/core/issues/10841</a>">#10841</a></li> </ul> <h3 id="user-content-features-6" dir="auto">Features</h3> <ul dir="auto"> <li><strong>runtime-core:</strong> add app.onUnmount() for registering cleanup functions (<a href="<a href="https://github.com/vuejs/core/issues/4619" class="link">https://github.com/vuejs/core/issues/4619</a>">#4619</a>) (<a href="<a href="https://github.com/vuejs/core/commit/582a3a382b1adda565bac576b913a88d9e8d7a9e" class="commit"><code class="nohighlight">582a3a382b</code></a>">582a3a3</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4516" class="link">https://github.com/vuejs/core/issues/4516</a>">#4516</a></li> </ul> <h1 id="user-content-350-alpha1httpsgithubcomvuejscorecomparev3425v350-alpha1-2024-04-29" dir="auto"><a href="<a href="https://github.com/vuejs/core/compare/v3.4.25...v3.5.0-alpha.1" class="link">https://github.com/vuejs/core/compare/v3.4.25...v3.5.0-alpha.1</a>">3.5.0-alpha.1</a> (2024-04-29)</h1> <h3 id="user-content-bug-fixes-21" dir="auto">Bug Fixes</h3> <ul dir="auto"> <li><strong>reactivity:</strong> fix call sequence of ontrigger in effect (<a href="<a href="https://github.com/vuejs/core/issues/10501" class="link">https://github.com/vuejs/core/issues/10501</a>">#10501</a>) (<a href="<a href="https://github.com/vuejs/core/commit/28841fee43a45c37905c2c1ed9ace23067539045" class="commit"><code class="nohighlight">28841fee43</code></a>">28841fe</a>)</li> </ul> <h3 id="user-content-features-7" dir="auto">Features</h3> <ul dir="auto"> <li><strong>compiler-sfc:</strong> enable reactive props destructure by default (<a href="<a href="https://github.com/vuejs/core/commit/d2dac0e359c47d1ed0aa77eda488e76fd6466d2d" class="commit"><code class="nohighlight">d2dac0e359</code></a>">d2dac0e</a>)</li> <li><strong>reactivity:</strong> <code>onEffectCleanup</code> API (<a href="<a href="https://github.com/vuejs/core/commit/2cc5615590de77126e8df46136de0240dbde5004" class="commit"><code class="nohighlight">2cc5615590</code></a>">2cc5615</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/10173" class="link">https://github.com/vuejs/core/issues/10173</a>">#10173</a></li> <li><strong>reactivity:</strong> add failSilently argument for onScopeDispose (<a href="<a href="https://github.com/vuejs/core/commit/9a936aaec489c79433a32791ecf5ddb1739a62bd" class="commit"><code class="nohighlight">9a936aaec4</code></a>">9a936aa</a>)</li> <li><strong>transition:</strong> support directly nesting Teleport inside Transition (<a href="<a href="https://github.com/vuejs/core/issues/6548" class="link">https://github.com/vuejs/core/issues/6548</a>">#6548</a>) (<a href="<a href="https://github.com/vuejs/core/commit/0e6e3c7eb0e5320b7c1818e025cb4a490fede9c0" class="commit"><code class="nohighlight">0e6e3c7eb0</code></a>">0e6e3c7</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/5836" class="link">https://github.com/vuejs/core/issues/5836</a>">#5836</a></li> <li><strong>types:</strong> provide internal options for directly using user types in language tools (<a href="<a href="https://github.com/vuejs/core/issues/10801" class="link">https://github.com/vuejs/core/issues/10801</a>">#10801</a>) (<a href="<a href="https://github.com/vuejs/core/commit/75c8cf63a1ef30ac84f91282d66ad3f57c6612e9" class="commit"><code class="nohighlight">75c8cf63a1</code></a>">75c8cf6</a>)</li> </ul> <h3 id="user-content-performance-improvements-5" dir="auto">Performance Improvements</h3> <ul dir="auto"> <li><strong>reactivity:</strong> optimize array tracking (<a href="<a href="https://github.com/vuejs/core/issues/9511" class="link">https://github.com/vuejs/core/issues/9511</a>">#9511</a>) (<a href="<a href="https://github.com/vuejs/core/commit/70196a40cc078f50fcc1110c38c06fbcc70b205e" class="commit"><code class="nohighlight">70196a40cc</code></a>">70196a4</a>), closes <a href="<a href="https://github.com/vuejs/core/issues/4318" class="link">https://github.com/vuejs/core/issues/4318</a>">#4318</a></li> </ul> <h2 id="user-content-previous-changelogs" dir="auto">Previous Changelogs</h2> <h3 id="user-content-34x-2023-10-28---2024-08-15" dir="auto">3.4.x (2023-10-28 - 2024-08-15)</h3> <p dir="auto">See <a href="/Vue/core/src/commit/bce252c412a6b9dbcf5ef9e12a5c826b3614f7ef/changelogs/CHANGELOG-3.4.md">3.4 changelog</a></p> <h3 id="user-content-33x-2023-02-05---2023-12-29" dir="auto">3.3.x (2023-02-05 - 2023-12-29)</h3> <p dir="auto">See <a href="/Vue/core/src/commit/bce252c412a6b9dbcf5ef9e12a5c826b3614f7ef/changelogs/CHANGELOG-3.3.md">3.3 changelog</a></p> <h3 id="user-content-32x-2021-07-16---2023-02-02" dir="auto">3.2.x (2021-07-16 - 2023-02-02)</h3> <p dir="auto">See <a href="/Vue/core/src/commit/bce252c412a6b9dbcf5ef9e12a5c826b3614f7ef/changelogs/CHANGELOG-3.2.md">3.2 changelog</a></p> <h3 id="user-content-31x-2021-05-08---2021-07-16" dir="auto">3.1.x (2021-05-08 - 2021-07-16)</h3> <p dir="auto">See <a href="/Vue/core/src/commit/bce252c412a6b9dbcf5ef9e12a5c826b3614f7ef/changelogs/CHANGELOG-3.1.md">3.1 changelog</a></p> <h3 id="user-content-30x-2019-12-20---2021-04-01" dir="auto">3.0.x (2019-12-20 - 2021-04-01)</h3> <p dir="auto">See <a href="/Vue/core/src/commit/bce252c412a6b9dbcf5ef9e12a5c826b3614f7ef/changelogs/CHANGELOG-3.0.md">3.0 changelog</a></p> </body></html>