Update dependency vue to v3
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
vue (source) | peerDependencies | major | ^2.7.14 -> ^2.7.14 || ^3.0.0 |
Release Notes
vuejs/core (vue)
v3.5.13
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
- reactivty: 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)
v3.5.12
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
v3.5.11
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)
v3.5.10
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
v3.5.9
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)
v3.5.8
Bug Fixes
v3.5.7
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
v3.5.6
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
v3.5.5
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 (3c4bf76)
- compiler-sfc: nested css supports atrule and comment (#11899) (0e7bc71), closes #11896
- custom-element: handle nested customElement mount w/ shadowRoot false (#11861) (f2d8019), closes #11851 #11871
- hmr: reload async child wrapped in Suspense + KeepAlive (#11907) (10a2c60), closes #11868
-
hydration: fix mismatch of leading newline in
<textarea>
and<pre>
(a5f3c2e), closes #11873 #11874 - reactivity: properly clean up deps, fix memory leak (8ea5d6d), closes #11901
- runtime-core: properly update async component nested in KeepAlive (#11917) (7fe6c79), closes #11916
- TransitionGroup: not warn unkeyed text children with whitespece preserve (#11888) (7571f20), closes #11885
v3.5.4
Bug Fixes
- compiler-sfc: correct scoped injection for nesting selector (#11854) (b1de75e), closes #10567
- reactivity: fix markRaw error on already marked object (#11864) (67d6596), closes #11862
- Revert "fix: Revert "fix(reactivity): self-referencing computed should refresh"" (e596378)
- runtime-core: handle shallow reactive arrays in renderList correctly (#11870) (ced59ab), closes #11869
-
types: correctly infer
TypeEmits
with both tuple and function syntax (#11840) (dad6738), closes #11836
Performance Improvements
v3.5.3
Bug Fixes
- hydration: check __asyncHydrate presence for vue3-lazy-hydration compat (#11825) (8e6c337), closes #11793
- Revert "fix(reactivity): self-referencing computed should refresh" (35c760f)
- ssr: respect app.config.warnHandler during ssr (bf3d9a2), closes #11830
- Transition: handle KeepAlive child unmount in Transition out-in mode (#11833) (6b7901d), closes #11775
- useId: make generated IDs selector compatible (babfb4c), closes #11828
v3.5.2
Bug Fixes
- reactivity: make toRaw work on proxies created by proxyRef (46c3ab1)
- reactivity: pass oldValue to computed getter (#11813) (98864a7), closes #11812
- reactivity: prevent endless recursion in computed getters (#11797) (716275d)
- reactivity: self-referencing computed should refresh (e84c4a6), closes /github.com/vuejs/core/pull/11797#issuecomment-2330738633
- scheduler: prevent duplicate jobs being queued (#11826) (df56cc5), closes #11712 #11807
- suspense: avoid updating anchor if activeBranch has not been rendered to the actual container (#11818) (3c0d531), closes #11806
- Transition: handle KeepAlive child unmount in Transition out-in mode (#11778) (3116553), closes #11775
- types: add HTMLDialogElement missing close event (#11811) (3634f7a)
- types: added name attribute support to details tag (#11823) (c74176e), closes #11821
- types: fix defineComponent props inference when setup() has explicit annotation (fca20a3), closes #11803
- useTemplateRef: properly fix readonly warning in dev and ensure prod behavior consistency (9b7797d), closes #11808 #11816 #11810
Features
v3.5.1
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
- reactivty: 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)
v3.5.0
Aggregated Features List for 3.5 (alpha to stable)
Reactivity
- reactivity: Refactor reactivity system to use version counting and doubly-linked list tracking (#10397) (05eb4e0)
- reactivity: Optimize array tracking (#9511) (70196a4)
- compiler-sfc: enable reactive props destructure by default (d2dac0e)
-
reactivity:
onEffectCleanup
API (2cc5615), closes #10173 -
reactivity: add
failSilently
argument foronScopeDispose
(9a936aa) -
reactivity/watch: base
watch
,getCurrentWatcher
, andonWatcherCleanup
(#9927) (205e5b5) - reactivity/watch: add pause/resume for ReactiveEffect, EffectScope, and WatchHandle (#9651) (267093c)
-
watch: support passing number to
deep
option to control the watch depth (#9572) (22f7d96) -
types: export
MultiWatchSources
type (#9563) (998dca5) - types: allow computed getter and setter types to be unrelated (#11472) (a01675e), closes #7271
SSR
-
runtime-core:
useId()
andapp.config.idPrefix
(#11404) (73ef156) - hydration: lazy hydration strategies for async components (#11458) (d14a11c)
- hydration: support suppressing hydration mismatch via data-allow-mismatch (94fb2b8)
Custom Element
-
custom-element:
useHost()
helper (775103a) -
custom-element:
useShadowRoot()
helper (5a1a89b), closes #6113 #8195 -
custom-element: expose
this.$host
in Options API (1ef8f46) - custom-element: inject child components styles to custom element shadow root (#11517) (56c76a8), closes #4662 #7941 #7942
- custom-element: support configurable app instance in defineCustomElement (6758c3c), closes #4356 #4635
-
custom-element: support css
:host
selector by applying css vars on host element (#8830) (03a9ea2), closes #8826 - custom-element: support emit with options (e181bff), closes #7605
- custom-element: support expose on customElement (#6256) (af838c1), closes #5540
-
custom-element: support
nonce
option for injected style tags (bb4a02a), closes #6530 - custom-element: support passing custom-element-specific options via 2nd argument of defineCustomElement (60a88a2)
-
custom-element: support
shadowRoot: false
indefineCustomElement()
(37d2ce5), closes #4314 #4404
Teleport
- teleport: support deferred Teleport (#11387) (59a3e88), closes #2015 #11386
- teleport/transition: support directly nesting Teleport inside Transition (#6548) (0e6e3c7), closes #5836
Misc
-
runtime-core:
useTemplateRef()
(3ba70e4) -
runtime-core: add
app.onUnmount()
for registering cleanup functions (#4619) (582a3a3), closes #4516 -
runtime-core: add
app.config.throwUnhandledErrorInProduction
(f476b7f), closes #7876 - runtime-dom: Trusted Types compatibility (#10844) (6d4eb94)
-
compiler-core: support
Symbol
global in template expressions (#9069) (a501a85) - types: export more emit related types (#11017) (189573d)
Internals
- reactivity: store value cache on CustomRefs impls (#11539) (e044b6e)
- types: provide internal options for directly using user types in language tools (#10801) (75c8cf6)
- types: provide internal options for using refs type in language tools (#11492) (5ffd1a8)
Bug Fixes
- compiler-sfc: fix import usage check for kebab-case same name shorthand binding (0f7c0e5), closes #11745 #11754
- cssVars: correctly escape double quotes in SSR (#11784) (7b5b6e0), closes #11779
- deps: update dependency postcss to ^8.4.44 (#11774) (cb843e0)
- hydration: escape css var name to avoid mismatch (#11739) (ca12e77), closes #11735
- hydration: handle text nodes with 0 during hydration (#11772) (c756da2), closes #11771
- reactivity: correctly handle method calls on user-extended arrays (#11760) (9817c80), closes #11759
- runtime-dom: avoid unnecessary prop patch for checkbox (#11657) (c3ce9fe), closes #11647
- runtime-dom: prevent unnecessary DOM update from v-model (#11656) (b1be9bd), closes #11647
- server-renderer: Fix call to serverPrefetch in server renderer with an async setup (#10893) (6039e25)
-
server-renderer: render
className
during SSR (#11722) (52cdb0f) - types/defineModel: allow getter and setter types to be unrelated (#11699) (fe07f70), closes #11697
v3.4.38
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.37
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.36
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.35
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.34
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.33
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.32
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.31
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.30
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.29
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.28
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.27
For stable releases, please refer to CHANGELOG.md for details.
For pre-releases, please refer to CHANGELOG.md of the minor
branch.
v3.4.26
Please refer to CHANGELOG.md for details.
v3.4.25
Please refer to CHANGELOG.md for details.
v3.4.24
Please refer to CHANGELOG.md for details.
v3.4.23
Please refer to CHANGELOG.md for details.
v3.4.22
Please refer to CHANGELOG.md for details.
v3.4.21
Please refer to CHANGELOG.md for details.
v3.4.20
Please refer to CHANGELOG.md for details.
v3.4.19
Please refer to CHANGELOG.md for details.
v3.4.18
Please refer to CHANGELOG.md for details.
v3.4.17
Please refer to CHANGELOG.md for details.
v3.4.16
Please refer to CHANGELOG.md for details.
v3.4.15
Please refer to CHANGELOG.md for details.
v3.4.14
Please refer to CHANGELOG.md for details.
v3.4.13
Please refer to CHANGELOG.md for details.
v3.4.12
Please refer to CHANGELOG.md for details.
v3.4.11
Please refer to CHANGELOG.md for details.
v3.4.10
Please refer to CHANGELOG.md for details.
v3.4.9
Please refer to CHANGELOG.md for details.
v3.4.8
Please refer to CHANGELOG.md for details.
v3.4.7
Please refer to CHANGELOG.md for details.
v3.4.6
Please refer to CHANGELOG.md for details.
v3.4.5
Please refer to CHANGELOG.md for details.
v3.4.4
Please refer to CHANGELOG.md for details.
v3.4.3
Please refer to CHANGELOG.md for details.
v3.4.2
Please refer to CHANGELOG.md for details.
v3.4.1
Please refer to CHANGELOG.md for details.
v3.4.0
Please refer to CHANGELOG.md for details.
v3.3.13
Please refer to CHANGELOG.md for details.
v3.3.12
Please refer to CHANGELOG.md for details.
v3.3.11
Please refer to CHANGELOG.md for details.
v3.3.10
Please refer to CHANGELOG.md for details.
v3.3.9
Please refer to CHANGELOG.md for details.
v3.3.8
Please refer to CHANGELOG.md for details.
v3.3.7
Please refer to CHANGELOG.md for details.
v3.3.6
Please refer to CHANGELOG.md for details.
v3.3.5
Please refer to CHANGELOG.md for details.
v3.3.4
Please refer to CHANGELOG.md for details.
v3.3.3
Please refer to CHANGELOG.md for details.
v3.3.2
Please refer to CHANGELOG.md for details.
v3.3.1
Please refer to CHANGELOG.md for details.
v3.3.0
: "Rurouni Kenshin"
Please refer to the release blog post for details.
v3.2.47
Please refer to CHANGELOG.md for details.
v3.2.46
Please refer to CHANGELOG.md for details.
v3.2.45
Please refer to CHANGELOG.md for details.
v3.2.44
Please refer to CHANGELOG.md for details.
v3.2.43
Please refer to CHANGELOG.md for details.
v3.2.42
Please refer to CHANGELOG.md for details.
v3.2.41
Please refer to CHANGELOG.md for details.
v3.2.40
Please refer to CHANGELOG.md for details.
v3.2.39
Please refer to CHANGELOG.md for details.
v3.2.38
Please refer to CHANGELOG.md for details.
v3.2.37
Please refer to CHANGELOG.md for details.
v3.2.36
Please refer to CHANGELOG.md for details.
v3.2.35
Please refer to CHANGELOG.md for details.
v3.2.34
Please refer to CHANGELOG.md for details.
v3.2.33
Please refer to CHANGELOG.md for details.
v3.2.32
Please refer to CHANGELOG.md for details.
v3.2.31
Please refer to CHANGELOG.md for details.
v3.2.30
Please refer to CHANGELOG.md for details.
v3.2.29
Please refer to CHANGELOG.md for details.
v3.2.28
Please refer to CHANGELOG.md for details.
v3.2.27
Please refer to CHANGELOG.md for details.
v3.2.26
Please refer to CHANGELOG.md for details.
v3.2.25
Please refer to CHANGELOG.md for details.
v3.2.24
Please refer to CHANGELOG.md for details.
v3.2.23
Please refer to CHANGELOG.md for details.
v3.2.22
Please refer to CHANGELOG.md for details.
v3.2.21
Please refer to CHANGELOG.md for details.
v3.2.20
Please refer to CHANGELOG.md for details.
v3.2.19
Please refer to CHANGELOG.md for details.
v3.2.18
Please refer to CHANGELOG.md for details.
v3.2.17
Please refer to CHANGELOG.md for details.
v3.2.16
Please refer to CHANGELOG.md for details.
v3.2.15
Please refer to CHANGELOG.md for details.
v3.2.14
Please refer to CHANGELOG.md for details.
v3.2.13
Please refer to CHANGELOG.md for details.
v3.2.12
Please refer to CHANGELOG.md for details.
v3.2.11
Please refer to CHANGELOG.md for details.
v3.2.10
Please refer to CHANGELOG.md for details.
v3.2.9
Please refer to CHANGELOG.md for details.
v3.2.8
Please refer to CHANGELOG.md for details.
v3.2.7
Please refer to CHANGELOG.md for details.
v3.2.6
Please refer to CHANGELOG.md for details.
v3.2.5
Please refer to CHANGELOG.md for details.
v3.2.4
Please refer to CHANGELOG.md for details.
v3.2.3
Please refer to CHANGELOG.md for details.
v3.2.2
Please refer to CHANGELOG.md for details.
v3.2.1
Please refer to CHANGELOG.md for details.
v3.2.0
: Quintessential Quintuplets
Please refer to the release blog post and CHANGELOG.md for details.
v3.1.5
Please refer to CHANGELOG.md for details.
v3.1.4
Please refer to CHANGELOG.md for details.
v3.1.3
Please refer to CHANGELOG.md for details.
v3.1.2
Please refer to CHANGELOG.md for details.
v3.1.1
Please refer to CHANGELOG.md for details.
v3.1.0
: Pluto
Features
- Migration Build: a build of Vue 3 that provides Vue 2 compatible behavior. The Migration Build is intended to help migrating existing Vue 2 apps to Vue 3.
- compiler-core: whitespace handling strategy (dee3d6a)
- support component-level
compilerOptions
when using runtime compiler (ce0bbe0) -
config: support configuring runtime compiler via
app.config.compilerOptions
(091e6d6) - support casting plain element to component via is="vue:xxx" (af9e699)
- devtools: improved KeepAlive support (03ae300)
- devtools: performance events (f7c54ca)
- onServerPrefetch (#3070) (349eb0f)
Performance Improvements
- only trigger
$attrs
update when it has actually changed (5566d39) - compiler: skip unncessary checks when parsing end tag (048ac29)
- avoid deopt for props/emits normalization when global mixins are used (51d2be2)
Deprecations
-
app.config.isCustomElement
has been deprecated and should be now nested underapp.config.compilerOptions
. [Docs] -
delimiters
component option has been deprecated and should now be nested under thecompilerOptions
component option. [Docs] -
v-is
has been deprecated in favor ofis="vue:xxx"
[Docs]
Minor Breaking Changes
-
this.$props
and theprops
object passed tosetup()
now always contain all the keys for declared props, even for props that are absent (4fe4de0). This has always been the behavior in Vue 2 and is therefore considered a fix (see reasoning in #3288). However, this could break Vue 3 code that relied on the keys for prop absence checks. The workaround is to use a Symbol default value for props that need absence checks:const isAbsent = Symbol() export default { props: { foo: { default: isAbsent } }, setup(props) { if (props.foo === isAbsent) { // foo is absent } } }
-
optionMergeStrategies
functions no longer receive the component instance as the 3rd argument. The argument was technically internal in Vue 2 and only used for generating warnings, and should not be needed in userland code. This removal enables much more efficient caching of option merging.
Bug Fixes
- compat: revert private properties on $options in comapt mode (ad844cf), closes #3883
- runtime-core: fix fragment update inside de-opt slots (5bce2ae), closes #3881
- compat: fix deep data merge with extended constructor (c7efb96), closes #3852
- compiler-sfc: fix style injection when using normal script + setup (8b94464), closes #3688
- compiler-sfc: fix template expression assignment codegen for script setup let refs (#3626) (2c7bd42), closes #3625
- runtime-core: align option merge behavior with Vue 2 (e2ca67b), closes #3566 #2791
- runtime-dom/v-model: only set selectedIndex when the value changes (#3845) (ecd97ee)
- suspense: fix suspense regression for errored template component (44996d1), closes #3857
- watch: avoid traversing objects that are marked non-reactive (9acc9a1)
- compiler-core: improve the isMemberExpression function (#3675) (9b2e894)
- compiler-dom: fix in-browser attribute value decoding w/ html tags (6690372), closes #3001
- compiler-sfc: correctly remove parens used for wrapping (#3582) (6bfb50a), closes #3581
- reactivity: ensure computed always expose value (03a7a73), closes #3099 #910
- runtime-core: fix cases of reused children arrays in render functions (#3670) (a641eb2), closes #3666
- runtime-core: fix resolving inheritAttrs from mixins (#3742) (d6607c9), closes #3741
- runtime-core: should disable tracking inside directive lifecycle hooks (#3699) (ff50e8d)
- runtime-core: stricter compat root mount check (32e2133)
-
runtime-dom: should remove attribute when binding
null
tovalue
(#3564) (e3f5dcb) - suspense: fix suspense patching in optimized mode (9f24195), closes #3828
- transition: fix higher order transition components with merged listeners (071986a), closes #3227
- keep-alive: include/exclude should work with async component (#3531) (9e3708c), closes #3529
- runtime-core: properly check forwarded slots type (#3781) (e8ddf86), closes #3779
- runtime-core: should not track dynamic children when the user calls a compiled slot inside template expression (#3554) (2010607), closes #3548 #3569
- runtime-core/teleport: ensure the nested teleport can be unmounted correctly (#3629) (4e3f82f), closes #3623
- scheduler: handle preFlush cb queued inside postFlush cb (b57e995), closes #3806
- ssr: handle hydrated async component unmounted before resolve (b46a4dc), closes #3787
- watch: should not leak this context to setup watch getters (1526f94), closes #3603
- compat: avoid accidentally delete the modelValue prop (#3772) (4f17be7)
- compat: enum coercion warning (#3755) (f01aadf)
- compiler-core: fix whitespace management for slots with whitespace: 'preserve' (#3767) (47da921), closes #3766
- compiler-dom: comments in the v-if branchs should be ignored when used in Transition (#3622) (7c74feb), closes #3619
- compiler-sfc: support tsx in setup script (#3825) (01e8ba8), closes #3808
- compiler-ssr: disable hoisting in compiler-ssr (3ef1fcc), closes #3536
- devtools: send update to component owning the slot (1355ee2)
- runtime-core: avoid double-setting props when casting (0255be2), closes #3371 #3384
- runtime-core: avoid the proxy object polluting the slots of the internal instance (#3698) (4ce0df6), closes #3695
-
types: declared prop keys should always exist in
props
argument (#3726) (9b160b9) -
types/reactivity: error TS4058 caused by
RefSymbol
(#2548) (90aa835) - compat: correctly merge lifecycle hooks when using Vue.extend (#3762) (2bfb8b5), closes #3761
- compiler-core: bail out to array children when the element has custom directives + only one text child node (#3757) (a56ab14)
- compat: handle and warn config.optionMergeStrategies (94e69fd)
- compiler-core: preserve comment content in production when comments option is enabled (e486254)
- hmr: don't remove __file key from component type (9db3cbb)
- hydration: fix update before async component is hydrated (#3563) (c8d9683), closes #3560
- reactivity: fix tracking for readonly + reactive Map (#3604) (5036c51), closes #3602
- runtime-core: ensure declare prop keys are always present (4fe4de0), closes #3288
- runtime-core: watching multiple sources: computed (#3066) (e7300eb), closes #3068
- Teleport: avoid changing the reference of vnode.dynamicChildren (#3642) (43f7815), closes #3641
- watch: avoid traversing non-plain objects (62b8f4a)
- watch: this.$watch should support watching keypath (870f2a7)
v3.0.11
Please refer to CHANGELOG.md for details.
v3.0.10
Please refer to CHANGELOG.md for details.
v3.0.9
Please refer to CHANGELOG.md for details.
v3.0.8
Please refer to CHANGELOG.md for details.
v3.0.7
Please refer to CHANGELOG.md for details.
v3.0.6
Please refer to CHANGELOG.md for details.
v3.0.5
Please refer to CHANGELOG.md for details.
v3.0.4
Please refer to CHANGELOG.md for details.
v3.0.3
Please refer to CHANGELOG.md for details.
v3.0.2
Please refer to CHANGELOG.md for details.
v3.0.1
Please refer to CHANGELOG.md for details.
v3.0.0
: One Piece
Today we are proud to announce the official release of Vue.js 3.0 "One Piece". This new major version of the framework provides improved performance, smaller bundle sizes, better TypeScript integration, new APIs for tackling large scale use cases, and a solid foundation for long-term future iterations of the framework.
The 3.0 release represents over 2 years of development efforts, featuring 30+ RFCs, 2,600+ commits, 628 pull requests from 99 contributors, plus tremendous amount of development and documentation work outside of the core repo. We would like to express our deepest gratitude towards our team members for taking on this challenge, our contributors for the pull requests, our sponsors and backers for the financial support, and the wider community for participating in our design discussions and providing feedback for the pre-release versions. Vue is an independent project created for the community and sustained by the community, and Vue 3.0 wouldn't have been possible without your consistent support.
Taking the "Progressive Framework" Concept Further
Vue had a simple mission from its humble beginning: to be an approachable framework that anyone can quickly learn. As our user base grew, the framework also grew in scope to adapt to the increasing demands. Over time, it evolved into what we call a "Progressive Framework": a framework that can be learned and adopted incrementally, while providing continued support as the user tackles more and more demanding scenarios.
Today, with over 1.3 million users worldwide*, we are seeing Vue being used in a wildly diverse range of scenarios, from sprinkling interactivity on traditional server-rendered pages, to full-blown single page applications with hundreds of components. Vue 3 takes this flexibility even further.
Layered internal modules
Vue 3.0 core can still be used via a simple <script>
tag, but its internals has been re-written from the ground up into a collection of decoupled modules. The new architecture provides better maintainability, and allows end users to shave off up to half of the runtime size via tree-shaking.
These modules also exposes lower-level APIs that unlocks many advanced use cases:
- The compiler supports custom AST transforms for build-time customizations (e.g. build-time i18n)
- The core runtime provides first-class API for creating custom renderers targeting different render targets (e.g. native mobile, WebGL or terminals). The default DOM renderer is built using the same API.
- The
@vue/reactivity
module exports functions that provide direct access to Vue's reactivity system, and can be used as a standalone package. It can be used to pair with other templating solutions (e.g. lit-html) or even in non-UI scenarios.
New APIs for tackling scale
The 2.x Object-based API is largely intact in Vue 3. However, 3.0 also introduces the Composition API - a new set of APIs aimed at addressing the pain points of Vue usage in large scale applications. The Composition API builds on top of the reactivity API and enables logic composition and reuse similar to React hooks, more flexible code organization patterns, and more reliable type inference than the 2.x Object-based API.
Composition API can also be used with Vue 2.x via the @vue/composition-api plugin, and there are already Composition API utility libraries that work for both Vue 2 and 3 (e.g. vueuse, vue-composable).
Performance Improvements
Vue 3 has demonstrated significant performance improvements over Vue 2 in terms of bundle size (up to 41% lighter with tree-shaking), initial render (up to 55% faster), updates (up to 133% faster), and memory usage (up to 54% less).
In Vue 3, we have taken the approach of "compiler-informed Virtual DOM": the template compiler performs aggressive optimizations and generates render function code that hoists static content, leaves runtime hints for binding types, and most importantly, flattens the dynamic nodes inside a template to reduce the cost of runtime traversal. The user therefore gets the best of both worlds: compiler-optimized performance from templates, or direct control via manual render functions when the use case demands.
Improved TypeScript integration
Vue 3's codebase is written in TypeScript, with automatically generated, tested, and bundled type definitions so they are always up-to-date. Composition API works great with type inference. Vetur, our official VSCode extension, now supports template expression and props type checking leveraging Vue 3's improved internal typing. Oh, and Vue 3's typing fully supports TSX if that's your preference.
Experimental Features
We have proposed two new features for Singe-File Components (SFC, aka .vue
files):
<script setup>
: syntactic sugar for using Composition API inside SFCs<style vars>
: state-driven CSS variables inside SFCs
These features are already implemented and available in Vue 3.0, but are provided only for the purpose of gathering feedback. They will remain experimental until the RFCs are merged.
We have also implemented a currently undocumented <Suspense>
component, which allows waiting on nested async dependencies (async components or component with async setup()
) on initial render or branch switch. We are testing and iterating on this feature with the Nuxt.js team (Nuxt 3 is on the way) and will likely solidify it in 3.1.
Phased Release Process
The release of Vue 3.0 marks the general readiness of the framework. While some of the frameworks sub projects may still need further work to reach stable status (specifically router and Vuex integration in the devtools), we believe it's suitable to start new, green-field projects with Vue 3 today. We also encourage library authors to start upgrading your projects to support Vue 3.
Check out the Vue 3 Libraries Guide for details on all framework sub projects.
Migration and IE11 Support
We have pushed back the migration build (v3 build with v2 compatible behavior + migration warnings) and the IE11 build due to time constraints, and are aiming to focus on them in Q4 2020. Therefore, users planning to migrate an existing v2 app or require IE11 support should be aware of these limitations at this time.
Next Steps
For the near term after release, we will focus on:
- Migration build
- IE11 support
- Router and Vuex integration in new devtools
- Further improvements to template type inference in Vetur
For the time being, the documentation websites, GitHub branches, and npm dist tags for Vue 3 and v3-targeting projects will remain under next
-denoted status. This means npm install vue
will still install Vue 2.x and npm install vue@next
will install Vue 3. We are planning to switch all doc links, branches and dist tags to default to 3.0 by end of 2020.
At the same time, we have started planning for 2.7, which will be the last planned minor release of the 2.x release line. 2.7 will be backporting compatible improvements from v3, and emit warnings on usage of APIs that are removed/changed in v3 to help with potential migration. We are planning to work on 2.7 in Q1 2021, which will directly become LTS upon release with an 18 months maintenance lifespan.
Trying It Out
To learn more about Vue 3.0, check out our new documentation website. If you are an existing Vue 2.x user, go directly to the Migration Guide.
- *based on Vue Devtools Chrome extension weekly active users as reported by Google.
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.