111 KiB
3.4.38 (2024-08-15)
Bug Fixes
- build: revert entities to 4.5 to avoid runtime resolution errors (f349af7), closes #11603
- compiler-core: use ast-based check for function expressions when possible (236cac3), closes #11615
- compiler-sfc: handle keyof operator with index object (#11581) (74d26db)
- types: add fallback stub for DOM types when DOM lib is absent (#11598) (4db0085)
3.4.37 (2024-08-08)
Bug Fixes
- compiler-core: use
isProp.arg.loc
instead ofisProp.loc
(#11547) (236fb7a) - custom-element: fix custom-element double render on immediate prop change (978ff3c), closes #9885 #11335
- defineModel: detect changes respect custom getter and setter (#11543) (e042888), closes #11541 #11526 #11527
- keep-alive: avoid cache suspense comment root (#11479) (a917c05)
- keep-alive: fix render error in cached is undefined (#11496) (81351dc), closes #11427 #11431
- Revert "fix(types/ref): allow getter and setter types to be unrelated (#11442)" (b1abac0)
- Revert "fix(types/ref): correct type inference for nested refs (#11536)" (3a56315)
- runtime-core: fix warning for missing event handler (#11489) (e359ff0), closes #4803 #8268
- runtime-core: prioritize using the provides from currentApp in nested createApp (#11502) (7e75de0), closes #11488
- Note: this change will break
inject
calls inside Pinia stores that expects to be able to inject provided values from the component using the store. This is expected because the usage is relying on previously incorrect behavior.
- Note: this change will break
- runtime-dom: apply css vars before mount (#11538) (fdc2a31), closes #11533
- ssr: ensure content is valid when rendering normal slot (#11491) (6c90324), closes #11326
- types/ref: correct type inference for nested refs (#11536) (536f623), closes #11532 #11537
- types: allow
DirectiveArguments
third parameter to accept undefined (#11540) (1058ce8)
3.4.36 (2024-08-06)
Bug Fixes
- compiler-core: fix expression transform for try...catch block params (077a1ae), closes #11465 #11467
- compiler-core: properly handle for loop variable declarations in expression transforms (67bb820), ref #11467
- compiler-ssr: don't render v-if comments in TransitionGroup + static tag (#11515) (275354c), closes #11514
- hydration: force hydrate custom element dynamic props (7d473b7), closes #7203 #8038
- ssr: respect textContent/innerHTML from getSSRProps in optimized SSR output (79602f9), closes #8112
- types/withDefaults: ensure default values of type
any
do not includeundefined
(#11490) (4592b63)
3.4.35 (2024-07-31)
Bug Fixes
- teleport/ssr: fix Teleport hydration regression due to targetStart anchor addition (7b18cdb)
- teleport/ssr: ensure targetAnchor and targetStart not null during hydration (#11456) (12667da), closes #11400
- types/ref: allow getter and setter types to be unrelated (#11442) (e0b2975)
Performance Improvements
3.4.34 (2024-07-24)
3.4.33 (2024-07-19)
Bug Fixes
3.4.32 (2024-07-17)
Bug Fixes
- build: use consistent minify options from previous terser config (789675f)
- compiler-sfc: correctly resolve type annotation for declared function (#11279) (b287aee), closes #11266
- defineModel: force local update when setter results in same emitted value (de174e1), closes #10279 #10301
- hmr: hmr reload should work with async component (#11248) (c8b9794)
- hydration: fix tracking of reactive style objects in production (c10e40a), closes #11372
- hydration: handle consectuvie text nodes during hydration (f44c3b3), closes #7285 #7301
- reactivity: ensure
unref
correctly resolves type forShallowRef
(#11360) (a509e30), closes #11356 - reactivity: shallowReactive map "unwraps" the nested refs (#8503) (50ddafe), closes #8501 #11249
- runtime-core: avoid recursive warning (3ee7b4c), closes #8074
- runtime-core: bail manually rendered compiler slot fragments in all cases (3d34f40), closes #10870
- runtime-core: do not emit when defineModel ref is set with same value (#11162) (f1bb0ae), closes #11125
- runtime-core: errors during component patch should be caught by error handlers (ee0248a)
- runtime-core: force diff slot fallback content and provided content (d76dd9c), closes #7256 #9200 #9308 #7266 #9213
- runtime-core: more edge case fix for manually rendered compiled slot (685e3f3), closes #11336
- runtime-core: use separate prop caches for components and mixins (#11350) (b0aa234), closes #7998
- runtime-dom: properly handle innerHTML unmount into new children (#11159) (3e9e32e), closes #9135
- teleport: skip teleported nodes when locating patch anchor (8655ced), closes #9071 #9134 #9313 #9313
- v-model: component v-model modifiers trim and number when cases don't match (#9609) (7fb6eb8), closes #4848 #4850 #4850
- v-once: properly unmount v-once cached trees (d343a0d), closes #5154 #8809
Performance Improvements
- server-renderer: avoid unnecessary checks in
createBuffer
(#11364) (fc205bf) - server-renderer: optimize
unrollBuffer
by avoiding promises (#11340) (05779a7)
3.4.31 (2024-06-28)
Bug Fixes
- compiler-core: handle inline comments with undefined bindings (#11217) (746352a), closes #11216
- shared: unwrap refs in toDisplayString (#7306) (0126cff), closes #5578 #5593 #11199 #11201
Reverts
- Revert "fix(reactivity): avoid infinite loop when render access a side effect computed (#11135)" (e0df985)
- Revert "fix(reactivity): fix side effect computed dirty level (#11183)" (6c303ea), closes #11183
3.4.30 (2024-06-22)
Note: this release contains a fix (#11150) that requires vue-tsc
to also be updated in sync to ^2.0.22. See #11196
Bug Fixes
- compiler-core: should not remove slot node with
v-else
(#11150) (e102670) - hydration: fix css vars hydration mismatch false positive on attr-fallthrough (#11190) (7ad67ce), closes #11188
- hydration: skip prop mismatch check for directives that mutate DOM in created (3169c91), closes #11189
- reactivity: fix side effect computed dirty level (#11183) (3bd79e3), closes #11181 #11169
- runtime-core: ensure unmount dynamic components in optimized mode (#11171) (220fe24), closes #11168
- runtime-core: update devtool __vnode on patch, avoid memory leak during dev (a959781), closes #11192
- runtime-dom: ensure only symbols are explicitly stringified during attribute patching (#11182) (a2e35d6), closes #11177
- runtime-dom: prevent setting state as attribute for custom elements (#11165) (8ae4c29), closes #11163
Performance Improvements
3.4.29 (2024-06-14)
Bug Fixes
- build: fix accidental inclusion of runtime-core in server-renderer cjs build (11cc12b), closes #11137
- compiler-sfc: fix missing scope for extends error message (4ec387b)
- compiler-sfc: fix parsing of mts, d.mts, and mtsx files (a476692)
- compiler-sfc: support @vue-ignore comment on more type sources (a23e99b)
- custom-element: support same direct setup function signature in defineCustomElement (7c8b126), closes #11116
- reactivity: avoid infinite loop when render access a side effect computed (#11135) (8296e19), closes #11121
3.4.28 (2024-06-14)
Bug Fixes
- compat: correctly transform non-identifier expressions in legacy filter syntax (#10896) (07b3c4b), closes #10852
- compat: ensure proper handling of render fuction from SFC using Vue.extend (#7781) (c73847f), closes #7766
- compat: only warn ATTR_FALSE_VALUE when enabled (04729ba), closes #11126
- compile-sfc: register props destructure rest id as setup bindings (#10888) (b2b5f57), closes #10885
- compile-sfc: Support project reference with folder, (#10908) (bdeac37), closes #10907
- compiler-core: allow unicode to appear in simple identifiers (#6765) (3ea9644), closes #6367
- compiler-core: change v-for key type to match Object.keys (#10963) (9fead52), closes #8819
- compiler-core: emit TS-compatible function declaration when requested (#9363) (5d25850)
- compiler-core: fix :key shorthand on v-for (#10942) (29425df), closes #10882 #10939
- compiler-core: make
ForIteratorExpression
'sreturns
property optional (#11011) (5b8c1af) - compiler-core: should set
<math>
tag as block to retain MathML namespace after patching (#10891) (87c5443) - compiler-core: v-for expression missing source with spaces should emit error (#5821) (b9ca202), closes #5819
- compiler-sfc: improve type resolving for the keyof operator (#10921) (293cf4e), closes #10920 #11002
- compiler-sfc: support as keyword with template literal types (#11100) (2594b1d), closes #10962
- compiler-sfc: support type resolve for keyof for intersection & union types (#11132) (495263a), closes #11129
- compiler-sfc: throw error when import macro as alias (#11041) (34a97ed)
- correct the type of
<details>
'sonToggle
event handler (#10938) (fd18ce7), closes #10928 - custom-element: disconnect MutationObserver in nextTick in case that custom elements are moved (#10613) (bbb5be2), closes #10610
- custom-elements: compatibility of createElement in older versions of Chrome (#9615) (a88295d), closes #9614
- hmr: avoid infinite recursion when reloading hmr components (#6936) (36bd9b0), closes #6930
- hydration: log hydration error even when using async components (#9403) (5afc76c), closes #9369
- KeepAlive: properly cache nested Suspense subtree (#10912) (07764fe)
- npm: explicitly add
@vue/reactivity
as dependency of@vue/runtime-dom
(#10468) (ec424f6) - reactivity: pass oldValue in debug info when triggering refs (#8210) (3b0a56a), closes vuejs/pinia#2061
- runtime-core: avoid traversing static children for vnodes w/ PatchFlags.BAIL (#11115) (b557d3f), closes #10547
- runtime-core: do not fire mount/activated hooks if unmounted before mounted (#9370) (aa156ed), closes #8898 #9264 #9617
- runtime-core: ensure suspense creates dep component's render effect with correct optimized flag (#7689) (c521f95), closes #7688
- runtime-core: fix missed updates when passing text vnode to
<component :is>
(#8304) (b310ec3), closes #8298 - runtime-core: fix stale v-memo after v-if toggle (#6606) (edf2638), closes #6593
- runtime-core: fix Transition for components with root-level v-if (#7678) (ef2e737), closes #7649
- runtime-dom: also set attribute for form element state (537a571), closes #6007 #6012
- runtime-dom: support Symbol for input value bindings (#10608) (188f3ae), closes #10597
- shared: ensure invokeArrayFns handles undefined arguments (#10869) (9b40d0f), closes #10863
- ssr: directive binding.instance should respect exposed during ssr (df686ab), closes #7499 #7502
- ssr: fix hydration for node with empty text node (#7216) (d1011c0)
- ssr: fix the bug that multi slot scope id does not work on component (#6100) (4c74302), closes #6093
- teleport: do not throw target warning when teleport is disabled (#9818) (15ee43f)
- transition: ensure Transition enterHooks are updated after clone (#11066) (671cf29), closes #11061
- types/apiWatch: correct type inference for reactive array (#11036) (aae2d78), closes #9416
- types: improve
app.provide
type checking (#10603) (612bbf0), closes #10602 - types: support generic argument in setup context expose method (#8507) (635a59b)
- v-model: fix the lazy modifier is not reset by other modifications (#8547) (a52a02f), closes #8546 #6564 #6773
- watch: support traversing symbol properties in deep watcher (#10969) (a3e8aaf), closes #402
3.4.27 (2024-05-06)
Bug Fixes
- compat: include legacy scoped slots (#10868) (8366126), closes #8869
- compiler-core: add support for arrow aysnc function with unbracketed (#5789) (ca7d421), closes #5788
- compiler-dom: restrict createStaticVNode usage with option elements (#10846) (0e3d617), closes #6568 #7434
- compiler-sfc: handle keyof operator (#10874) (10d34a5), closes #10871
- hydration: handle edge case of style mismatch without style attribute (f2c1412), closes #10786
3.4.26 (2024-04-29)
Bug Fixes
- compiler-core: fix bail constant for globals (fefce06)
- compiler-core: remove unnecessary constant bail check (09b4df8), closes #10807
- runtime-core: attrs should be readonly in functional components (#10767) (e8fd644)
- runtime-core: ensure slot compiler marker writable (#10825) (9c2de62), closes #10818
- runtime-core: properly handle inherit transition during clone VNode (#10809) (638a79f), closes #3716 #10497 #4091
- Transition: re-fix #10620 (#10832) (accf839), closes #10632 #10827
3.4.25 (2024-04-24)
Bug Fixes
- defineModel: align prod mode runtime type generation with defineProps (4253a57), closes #10769
- runtime-core: properly get keepAlive child (#10772) (3724693), closes #10771
- runtime-core: use normal object as internal prototype for attrs and slots (064e82f), closes /github.com/vuejs/core/commit/6df53d85a207986128159d88565e6e7045db2add#r141304923
3.4.24 (2024-04-22)
Bug Fixes
- compiler-core: handle template ref bound via v-bind object on v-for (#10706) (da7adef), closes #10696
- compiler-core: properly parse await expressions in edge cases (b92c25f), closes #10754
- compiler-sfc: handle readonly operator and ReadonlyArray/Map/Set types (5cef52a), closes #10726
- compiler-ssr: fix hydration mismatch for conditional slot in transition (f12c81e), closes #10743
- compiler-ssr: fix v-html SSR for nullish values (1ff4076), closes #10725
- deps: update compiler (#10760) (15df5c1)
- runtime-core: fix edge case of KeepAlive inside Transition with slot children (#10719) (e51ca61), closes #10708
- runtime-core: further fix slots _ctx check (cde7f05), closes #10724
- runtime-core: props should be readonly via direct template access (b93f264), closes #8216 #10736
- transition: transition is breaking/flickering when enter is canceled (#10688) (65109a7)
3.4.23 (2024-04-16)
Bug Fixes
- runtime-core: fix regression for $attrs tracking in slots (6930e60), closes #10710
- runtime-core: use same internal object mechanism for slots (6df53d8), closes #10709
3.4.22 (2024-04-15)
Bug Fixes
- compat: fix $options mutation + adjust private API initialization (d58d133), closes #10626 #10636
- compile-sfc: analyze v-bind shorthand usage in template (#10518) (e5919d4), closes #10515
- compiler-core: fix loc.source for end tags with whitespace before > (16174da), closes #10694 #10695
- compiler-core: fix v-bind shorthand for component :is (04af950), closes #10469 #10471
- compiler-sfc: :is() and :where() in compound selectors (#10522) (660cadc), closes #10511
- compiler-sfc: also search for
.tsx
when type import's extension is omitted (#10637) (34106bc), closes #10635 - compiler-sfc: fix defineModel coercion for boolean + string union types (#9603) (0cef65c), closes #9587 #10676
- compiler-sfc: fix universal selector scope (#10551) (54a6afa), closes #10548
- compiler-sfc: use options module name if options provide runtimeModuleName options (#10457) (e76d743), closes #10454
- custom-element: avoid setting attr to null if it is removed (#9012) (b49306a), closes #9006 #10324
- hydration: properly handle optimized mode during hydrate node (#10638) (2ec06fd), closes #10607
- reactivity: computed should not be detected as true by isProxy (#10401) (9da34d7)
- reactivity: fix hasOwnProperty key coercion edge cases (969c5fb)
- reactivity: fix tracking when hasOwnProperty is called with non-string value (c3c5dc9), closes #10455 #10464
- runtime-core: fix errorHandler causes an infinite loop during execution (#9575) (ab59bed)
- runtime-core: handle invalid values in callWithAsyncErrorHandling (53d15d3)
- runtime-core: show hydration mismatch details for non-rectified mismatches too when PROD_HYDRATION_MISMATCH_DETAILS is set (#10599) (0dea7f9)
- runtime-dom:
v-model
string/number coercion for multiselect options (#10576) (db374e5) - runtime-dom: fix css v-bind for suspensed components (#8523) (67722ba), closes #8520
- runtime-dom: force update v-model number with leading 0 (#10506) (15ffe8f), closes #10503 #10615
- runtime-dom: sanitize wrongly passed string value as event handler (#8953) (7ccd453), closes #8818
- ssr: don't render v-if comments in TransitionGroup (#6732) (5a96267), closes #6715
- Transition: ensure the KeepAlive children unmount w/ out-in mode (#10632) (fc99e4d), closes #10620
- TransitionGroup: avoid set transition hooks for comment nodes and text nodes (#9421) (140a768), closes #4621 #4622 #5153 #5168 #7898 #9067
- types: avoid merging object union types when using withDefaults (#10596) (37ba93c), closes #10594
Performance Improvements
- add
__NO_SIDE_EFFECTS__
comments (#9053) (d46df6b) - optimize component props/slots internal object checks (6af733d)
- ssr: avoid calling markRaw on component instance proxy (4bc9f39)
- ssr: optimize setup context creation for ssr in v8 (ca84316)
3.4.21 (2024-02-28)
Bug Fixes
- runtime-dom: avoid unset option's value (#10416) (b3f8b5a), closes #10412 #10396
- suspense: ensure nested suspense patching if in fallback state (#10417) (7c97778), closes #10415
- warning: stringify args in warn handler (#10414) (bc37258), closes #10409
3.4.20 (2024-02-26)
Bug Fixes
- parser: should not treat uppercase components as special tags (e0e0253), closes #10395
- runtime-dom: avoid always resetting nullish option value (ff130c4), closes #10396
- runtime-dom: fix nested v-show priority regression (364f890), closes #10338
- runtime-dom: v-bind style should clear previous css string value (#10373) (e2d3235), closes #10352
- suspense: handle suspense switching with nested suspense (#10184) (0f3da05), closes #10098
- types: better typing for direct setup signature of defineComponent (#10357) (eadce5b), closes #8604 #8855
3.4.19 (2024-02-13)
Bug Fixes
- deps: pin lru-cache to avoid hashing error (b8be990), closes #10300
- hydration: fix css vars hydration mismatch false positive on non-root nodes (995d2fd), closes #10317 #10325
- runtime-dom: should not trigger transition when v-show value is falsy (#10311) (e509639)
Features
Note: this warning is categorized as a feature but released in a patch because it does not affect public APIs.
Performance Improvements
3.4.18 (2024-02-09)
Bug Fixes
- dx: warn against reserved keys as prop name (77a804b), closes #10281
- runtime-dom: ensure v-show respects display value set via v-bind (#10297) (c224897), closes #10151
3.4.17 (2024-02-09)
Reverts
- fix(runtime-dom): ensure v-show respects display value set via v-bind (#10161) (2cd5b05), closes #10294 #10151
3.4.16 (2024-02-08)
Bug Fixes
- compiler-core: handle same-name shorthand edge case for in-DOM templates (cb87b62), closes #10280
- compiler-core: support v-bind shorthand syntax for dynamic slot name (#10218) (91f058a), closes #10213
- deps: update compiler (#10269) (336bb65)
- hydration: fix SFC style v-bind hydration mismatch warnings (#10250) (f0b5f7e), closes #10215
- reactivity: avoid infinite recursion from side effects in computed getter (#10232) (0bced13), closes #10214
- reactivity: handle
MaybeDirty
recurse (#10187) (6c7e0bd), closes #10185 - reactivity: skip non-extensible objects when using
markRaw
(#10289) (2312184), closes #10288 - runtime-core: avoid inlining isShallow (#10238) (53eee72)
- runtime-core: support for nested calls to runWithContext (#10261) (75e02b5), closes #10260
- runtime-dom: ensure v-show respects display value set via v-bind (#10161) (9b19f09), closes #10151
- runtime-dom: fix option selected update failed (#10200) (f31d782), closes #10194 #10267
Reverts
- perf(templateRef): avoid double render when using template ref on v-for (eb1b911), closes #9908 #10210 #10234
3.4.15 (2024-01-18)
Bug Fixes
- compiler-sfc: fix type resolution for symlinked node_modules structure w/ pnpm (75e866b), closes #10121
- correct url for production error reference links (c3087ff)
- hydration: fix incorect mismatch warning for option with non-string value and inner text (d16a213)
- reactivity: re-fix #10114 (#10123) (c2b274a)
- runtime-core: should not warn out-of-render slot fn usage when mounting another app in setup (#10125) (6fa33e6), closes #10124
Performance Improvements
- templateRef: avoid double render when using template ref on v-for (de4d2e2), closes #9908
- v-model: optimize v-model multiple select w/ large lists (2ffb956), closes #10014
3.4.14 (2024-01-15)
Bug Fixes
- compiler-sfc: enable prefixIdentifiers by default when reparsing on consumed AST (#10105) (48bf8e4)
- deps: update dependency postcss to ^8.4.33 (#10110) (a557006)
- reactivity: fix regression for computed with mutation (#10119) (20f62af), closes #10114
3.4.13 (2024-01-13)
Bug Fixes
3.4.12 (2024-01-13)
Reverts
3.4.11 (2024-01-12)
Bug Fixes
- hydration: improve mismatch when client value is null or undefined (#10086) (08b60f5)
- reactivity: correct dirty assign in render function (#10091) (8d04205), closes #10082
- runtime-core: filter single root for nested DEV_ROOT_FRAGMENT (#8593) (d35b877), closes #5203 #8581 #10087
3.4.10 (2024-01-11)
Bug Fixes
- hydration: should not warn on falsy bindings of non-property keys (3907c87)
3.4.9 (2024-01-11)
Bug Fixes
- build: avoid accessing FEATURE_PROD_DEVTOOLS flag in root scope (dfd9654)
- hydration: do not warn against bindings w/ object values (dcc68ef)
- runtime-dom: unify behavior for v-show + style display binding (#10075) (cd419ae), closes #10074
- suspense: avoid double-patching nested suspense when parent suspense is not resolved (#10055) (bcda96b), closes #8678
3.4.8 (2024-01-10)
Bug Fixes
- hydration: fix class and style hydration mismatch message (5af3987), closes #10067
- hydration: improve attr hydration mismatch check for boolean attrs (972face), closes #10057 #10060
- suspense: fix more suspense patch before resolve edge cases (70ad4ca), closes #10017
3.4.7 (2024-01-09)
Bug Fixes
- parser: skip compat mode check for SFC root
<template>
tags (#10034) (923d560) - types: fix functional component for
h
(#9991) (438a74a)
Reverts
- "dx(computed): warn incorrect use of getCurrentInstance inside computed" (2fd3905)
3.4.6 (2024-01-08)
Bug Fixes
- build: revert "build: add production/development export conditions (#9977)" (7bd4e90), closes #10012 #10020
- fix post watcher fire timing on nested app mounts (3c3561e), closes #10005
- hydration: avoid hydration mismatch warning for styles with different order (#10011) (2701355), closes #10000 #10006
- runtime-core: handle fragment with null children (#10010) (3bf34b7), closes #10007
- scheduler: sort nested postFlushCbs (d9162df), closes #10003
- suspense: fix anchor for suspense with transition out-in (#9999) (a3fbf21), closes #9996
- types: allow
null
type for textarea value (#9997) (c379bc2), closes #9904
3.4.5 (2024-01-04)
Bug Fixes
- compiler-sfc: fix co-usage of defineModel transform options and props destructure (b20350d), closes #9972
- compiler-sfc: fix sfc template unref rewrite for class instantiation (ae60a91), closes #6483 #6491
- compiler-ssr: fix node clone edge case caused by AST reuse (#9983) (7dbdb3e), closes #9981
- watch: cleanup watcher effect from scope when manually stopped (#9978) (d2d8955)
3.4.4 (2024-01-03)
Bug Fixes
- compiler-sfc: fix scss source map regression (71d3121), closes #9970 #9969
- compiler-sfc: use compilerOptions when re-parsing consumed AST (d94d8d4)
- defineModel: support kebab-case/camelCase mismatches (#9950) (10ccb9b)
- runtime-core: correctly assign suspenseId to avoid conflicts with the default id (#9966) (0648804), closes #9944
- ssr: avoid rendering transition-group slot content as a fragment (#9961) (0160264), closes #9933
- watch: remove instance unmounted short circuit in getter of
watchEffect
(#9948) (f300a40) - watch: revert watch behavior when watching shallow reactive objects (a9f781a), closes #9965
Performance Improvements
- watch: avoid double traverse for reactive source (24d77c2)
3.4.3 (2023-12-30)
Bug Fixes
- compiler-sfc: respect sfc parse options in cache key (b8d58ec)
3.4.2 (2023-12-30)
Bug Fixes
- compiler-sfc: fix dev regression for dot / namespace component usage (dce99c1), closes #9947
- runtime-core: support deep: false when watch reactive (#9928) (4f703d1), closes #9916
- ssr: fix hydration error for slot outlet inside transition-group (#9937) (6cb00ed), closes #9933
3.4.1 (2023-12-30)
Bug Fixes
- compat: correct enum value for COMPILER_FILTERS feature (#9875) (77d33e2)
- defineModel: always default modifiers to empty object (9bc3c7e), closes #9945
- defineModel: support local mutation when only prop but no listener is passed (97ce041)
- types: fix defineModel watch type error (#9942) (4af8583), closes #9939
Features
- compiler-sfc: support passing template parsing options when parsing sfc (6fab855) (necessary to fix https://github.com/vitejs/vite-plugin-vue/issues/322)
3.4.0 Slam Dunk (2023-12-29)
Read this blog post for an overview of the release highlights.
Potential Actions Needed
-
To fully leverage new features in 3.4, it is recommended to also update the following dependencies when upgrading to 3.4:
- Volar / vue-tsc@^1.8.27 (required)
- @vitejs/plugin-vue@^5.0.0 (if using Vite)
- nuxt@^3.9.0 (if using Nuxt)
- vue-loader@^17.4.0 (if using webpack or vue-cli)
-
If using TSX with Vue, check actions needed in Removed: Global JSX Namespace.
-
Make sure you are no longer using any deprecated features (if you are, you should have warnings in the console telling you so). They may have been removed in 3.4.
Features
- general: MathML support (#7836) (d42b6ba), closes #7820
- reactivity: more efficient reactivity system (#5912) (16e06ca), closes #311 #1811 #6018 #7160 #8714 #9149 #9419 #9464
- reactivity: expose last result for computed getter (#9497) (48b47a1)
- runtime-core / dx: link errors to docs in prod build (#9165) (9f8ba98)
- runtime-core: add
once
option to watch (#9034) (a645e7a) - runtime-core: provide full props to props validator functions (#3258) (8e27692)
- compiler-core: export error message (#8729) (f7e80ee)
- compiler-core: support specifying root namespace when parsing (40f72d5)
- compiler-core: support v-bind shorthand for key and value with the same name (#9451) (26399aa)
- compiler-core: improve parsing tolerance for language-tools (41ff68e)
- compiler-core: support accessing Error as global in template expressions (#7018) (bcca475)
- compiler-core: lift vnode hooks deprecation warning to error (8abc754)
- compiler-core: export runtime error strings (#9301) (feb2f2e)
- compiler-core: add current filename to TransformContext (#8950) (638f1ab)
- compiler-sfc: analyze import usage in template via AST (#9729) (e8bbc94), closes #8897 nuxt/nuxt#22416
- compiler-sfc: expose resolve type-based props and emits (#8874) (9e77580)
- compiler-sfc: bump postcss-modules to v6 (2a507e3)
- compiler-sfc: promote defineModel stable (#9598) (ef688ba)
- compiler-sfc: support import attributes and
using
syntax (#8786) (5b2bd1d) - compiler-sfc:
defineModel
support local mutation by default, remove local option (f74785b), closes /github.com/vuejs/rfcs/discussions/503#discussioncomment-7566278 - ssr: add
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__
feature flag (#9550) (bc7698d) - ssr: improve ssr hydration mismatch checks (#5953) (2ffc1e8), closes #5063
- types: use enum to replace const enum (#9261) (fff7b86), closes #1228
- types: add emits and slots type to
FunctionalComponent
(#8644) (927ab17) - types: export
AriaAttributes
type (#8909) (fd0b6ba) - types: export
ObjectPlugin
andFunctionPlugin
types (#8946) (fa4969e), closes #8577 - types: expose
DefineProps
type (096ba81) - types: expose
PublicProps
type (#2403) (44135dc) - types: improve event type inference when using
h
with native elements (#9756) (a625376) - types: provide
ComponentInstance
type (#5408) (bfb8565) - types: support passing generics when registering global directives (#9660) (a41409e)
Performance Improvements
- compiler-sfc: avoid sfc source map unnecessary serialization and parsing (f15d2f6)
- compiler-sfc: remove magic-string trim on script (e8e3ec6)
- compiler-sfc: use faster source map addMapping (50cde7c)
- compiler-core: optimize away isBuiltInType (66c0ed0)
- compiler-core: optimize position cloning (2073236)
- codegen: optimize line / column calculation during codegen (3be53d9)
- codegen: optimize source map generation (c11002f)
- shared: optimize makeMap (ae6fba9)
BREAKING CHANGES
Global JSX Registration Removed
Starting in 3.4, Vue no longer registers the global JSX
namespace by default. This is necessary to avoid global namespace collision with React so that TSX of both libs can co-exist in the same project. This should not affect SFC-only users with latest version of Volar.
If you are using TSX, there are two options:
-
Explicitly set jsxImportSource to
'vue'
intsconfig.json
before upgrading to 3.4. You can also opt-in per file by adding a/* @jsxImportSource vue */
comment at the top of the file. -
If you have code that depends on the presence of the global
JSX
namespace, e.g. usage of types likeJSX.Element
etc., you can retain the exact pre-3.4 global behavior by explicitly referencingvue/jsx
, which registers the globalJSX
namespace.
Note that this is a type-only breaking change in a minor release, which adheres to our release policy.
Deprecated Features Removed
- Reactivity Transform was marked deprecated in 3.3 and is now removed in 3.4. This change does not require a major due to the feature being experimental. Users who wish to continue using the feature can do so via the Vue Macros plugin.
app.config.unwrapInjectedRef
has been removed. It was deprecated and enabled by default in 3.3. In 3.4 it is no longer possible to disable this behavior.@vnodeXXX
event listeners in templates are now a compiler error instead of a deprecation warning. Use@vue:XXX
listeners instead.v-is
directive has been removed. It was deprecated in 3.3. Use theis
attribute withvue:
prefix instead.
3.4.0-rc.3 (2023-12-27)
Bug Fixes
- also export runtime error strings in all cjs builds (38706e4)
Features
- defineModel: support modifiers and transformers (a772031)
3.4.0-rc.2 (2023-12-26)
Bug Fixes
- deps: update dependency @vue/repl to ^3.1.0 (#9911) (f96c413)
- types: fix distribution of union types when unwrapping setup bindings (#9909) (0695c69), closes #9903
- warning: ensure prod hydration warnings actually work (b4ebe7a)
Features
- compiler-sfc: export aggregated error messages for compiler-core and compiler-dom (25c726e)
3.4.0-rc.1 (2023-12-25)
Bug Fixes
- compiler-core: fix parsing
<script setup>
generics with > (7aa3f25), closes #9890 - compiler-sfc: fix type resolution for shared type w/ different generic parameters (a8d0b1b), closes #9871
- ssr: avoid hydration mismatch warning for classes with different order (e585b0d)
3.4.0-beta.4 (2023-12-19)
Bug Fixes
- compile-sfc: fix identifier prefixing edge case caused by reused AST (#9867) (eb51b23), closes #9853 #9863
- ssr: fix hydration prop mismatch check for class on SVG elements (e8448b0)
Features
- runtime-core: throw real error when scheduler detects infinite loop during dev (#7447) (1d79b64), closes #7437
3.3.13 (2023-12-19)
Bug Fixes
- compiler-core: fix v-on with modifiers on inline expression of undefined (#9866) (bae79dd), closes #9865
- runtime-dom: cache event handlers by key/modifiers (#9851) (04d2c05), closes #9849
- types: extract properties from extended collections (#9854) (24b1c1d), closes #9852
3.4.0-beta.3 (2023-12-16)
Bug Fixes
- compiler-core: vnode hooks error message (#9842) (7bc3c9e)
- defineModel: ensure trigger effect when prop changed (#9841) (eb12f21), closes #9838
- mathml: update known mathML tags (#9829) (ebd78d2)
- Suspense: fix edge case of Suspense being patched during async HOC child remount (f0f6f7c)
3.3.12 (2023-12-16)
Bug Fixes
- hydration: handle appear transition before patch props (#9837) (e70f4c4), closes #9832
- sfc/cssVars: fix loss of CSS v-bind variables when setting inline style with string value (#9824) (0a387df), closes #9821
- ssr: fix suspense hydration of fallback content (#7188) (60415b5)
- types: add
xmlns:xlink
toSVGAttributes
(#9300) (0d61b42), closes #9299 - types: fix
shallowRef
type error (#9839) (9a57158) - types: support for generic keyof slots (#8374) (213eba4)
3.4.0-beta.2 (2023-12-14)
Features
- types: remove default jsx global registration (92b8d9c)
BREAKING CHANGES
- types: Vue no longer registers the global
JSX
namespace by default.
3.4.0-beta.1 (2023-12-13)
Bug Fixes
- compiler-core: use the same resolved options for all compile stages (#9760) (0dc875d)
- hydration: should not warn mismatch for nullish prop (33159a5)
- hydration: swap client/server labels for hydration mismatch warnings (f41fd86), closes #9098 #5953
- runtime-core: fix suspense crash when patching non-resolved async setup component (#7290) (bb0c889), closes #5993 #6463 #6949 #6095 #8121
- runtime-core: properly pop warning context when mounting components with async setup (69a2acc)
- ssr: fix suspense hydration of fallback content (#7188) (60415b5)
- ssr: make isInSSRComponentSetup state sharable across copies of Vue (e04d821)
- Suspense: handle switching away from kept-alive component before resolve (aa0c13f), closes #6416 #6467
- Suspense: properly fix #6416 (0db336f)
- types: add
xmlns:xlink
toSVGAttributes
(#9300) (0d61b42), closes #9299 - types: support for generic keyof slots (#8374) (213eba4)
Features
- compiler-core: add current filename to TransformContext (#8950) (638f1ab)
- compiler-sfc: promote defineModel stable (#9598) (ef688ba)
- compiler-sfc: support import attributes and
using
syntax (#8786) (5b2bd1d) - defineModel: support local mutation by default, remove local option (f74785b), closes /github.com/vuejs/rfcs/discussions/503#discussioncomment-7566278
- MathML support (#7836) (d42b6ba), closes #7820
- runtime-core: provide full props to props validator functions (#3258) (8e27692)
- ssr: add
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__
feature flag (#9550) (bc7698d) - ssr: improve ssr hydration mismatch checks (#5953) (2ffc1e8), closes #5063
- types: add emits and slots type to
FunctionalComponent
(#8644) (927ab17) - types: export AriaAttributes type (#8909) (fd0b6ba)
- types: export ObjectPlugin and FunctionPlugin types (#8946) (fa4969e), closes #8577
- types: expose
DefineProps
type (096ba81) - types: expose
PublicProps
type (#2403) (44135dc) - types: improve event type inference when using
h
with native elements (#9756) (a625376) - types: provide ComponentInstance type (#5408) (bfb8565)
- types: support passing generics when registering global directives (#9660) (a41409e)
Performance Improvements
- use sync watcher for defineModel local mode (7e60d10), closes /github.com/vuejs/rfcs/discussions/503#discussioncomment-7566278
3.3.11 (2023-12-08)
Bug Fixes
- custom-element: correctly handle number type props in prod (#8989) (d74d364)
- reactivity: fix mutation on user proxy of reactive Array (6ecbd5c), closes #9742 #9751 #9750
- runtime-dom: fix width and height prop check condition (5b00286), closes #9762
- shared: handle Map with symbol keys in toDisplayString (#9731) (364821d), closes #9727
- shared: handle more Symbol cases in toDisplayString (983d45d)
- Suspense: properly get anchor when mount fallback vnode (#9770) (b700328), closes #9769
- types: ref() return type should not be any when initial value is any (#9768) (cdac121)
- watch: should not fire pre watcher on child component unmount (#7181) (6784f0b), closes #7030
3.4.0-alpha.4 (2023-12-04)
Bug Fixes
- compiler-core: fix referencing typo (#9708) (3071de4)
- parser: fix interpolation parsing in v-pre (53aaa1e)
- parser: properly set initial inXML state based on root ns (47ea285)
- parser: should reset inRCDATA state (ef97e8b)
Features
- compiler-core: support accessing Error as global in template expressions (#7018) (bcca475)
- compiler-sfc: analyze import usage in template via AST (#9729) (e8bbc94), closes #8897 nuxt/nuxt#22416
- compiler-sfc: bump postcss-modules to v6 (2a507e3)
- compiler: lift vnode hooks deprecation warning to error (8abc754)
- use enum to replace const enum (#9261) (fff7b86), closes #1228
3.3.10 (2023-12-04)
Bug Fixes
- app: prevent template from being cached between apps with different options (#9724) (ec71585), closes #9618
- compiler-sfc: avoid passing forEach index to genMap (f12db7f)
- compiler-sfc: deindent pug/jade templates (6345197), closes #3231 #3842 #7723
- compiler-sfc: fix :where and :is selector in scoped mode with multiple selectors (#9735) (c3e2c55), closes #9707
- compiler-sfc: generate more treeshaking friendly code (#9507) (8d74ca0), closes #9500
- compiler-sfc: support inferring generic types (#8511) (eb5e307), closes #8482
- compiler-sfc: support resolving components from props (#8785) (7cbcee3)
- compiler-sfc: throw error when failing to load TS during type resolution (#8883) (4936d2e)
- cssVars: cssVar names should be double-escaped when generating code for ssr (#8824) (5199a12), closes #7823
- deps: update compiler to ^7.23.4 (#9681) (31f6ebc)
- runtime-core: Suspense get anchor properly in Transition (#9309) (65f3fe2), closes #8105
- runtime-dom: set width/height with units as attribute (#8781) (bfc1838)
- ssr: avoid computed being accidentally cached before server render (#9688) (30d5d93), closes #5300
- types: expose emits as props in functional components (#9234) (887e54c)
- types: fix reactive collection types (#8960) (ad27473), closes #8904
- types: improve return type withKeys and withModifiers (#9734) (43c3cfd)
Performance Improvements
- optimize on* prop check (38aaa8c)
- runtime-dom: cache modifier wrapper functions (da4a4fb), closes #8882
- v-on: constant handlers with modifiers should not be treated as dynamic (4d94ebf)
3.4.0-alpha.3 (2023-11-28)
Bug Fixes
- deps: update compiler to ^7.23.4 (#9681) (31f6ebc)
- parser: directive arg should be undefined on shorthands with no arg (e49dffc)
Features
3.4.0-alpha.2 (2023-11-27)
Bug Fixes
-
avoid confusing breakage in @vitejs/plugin-vue (ceec69c)
-
compiler-core: fix line/column tracking when fast forwarding (2e65ea4)
-
compiler-sfc: fix ast reuse for ssr (fb619cf)
-
compiler-sfc: support
:is
and:where
selector in scoped css rewrite (#8929) (c6083dc) -
compiler-sfc: use correct compiler when re-parsing in ssr mode (678378a)
-
feat!: remove reactivity transform (#9321) (79b8a09), closes #9321
Features
- compiler-core: support specifying root namespace when parsing (40f72d5)
- compiler-core: support v-bind shorthand for key and value with the same name (#9451) (26399aa)
- compiler: improve parsing tolerance for language-tools (41ff68e)
- reactivity: expose last result for computed getter (#9497) (48b47a1)
Performance Improvements
- avoid sfc source map unnecessary serialization and parsing (f15d2f6)
- codegen: optimize line / column calculation during codegen (3be53d9)
- codegen: optimize source map generation (c11002f)
- compiler-sfc: remove magic-string trim on script (e8e3ec6)
- compiler-sfc: use faster source map addMapping (50cde7c)
- optimize away isBuiltInType (66c0ed0)
- optimize makeMap (ae6fba9)
- optimize position cloning (2073236)
BREAKING CHANGES
- Reactivity Transform was marked deprecated in 3.3 and is now removed in 3.4. This change does not require a major due to the feature being experimental. Users who wish to continue using the feature can do so via the external plugin at https://vue-macros.dev/features/reactivity-transform.html
3.3.9 (2023-11-25)
Bug Fixes
- compiler-core: avoid rewriting scope variables in inline for loops (#7245) (a2d810e), closes #7238
- compiler-core: fix
resolveParserPlugins
decorators check (#9566) (9d0eba9), closes #9560 - compiler-sfc: consistently escape type-only prop names (#8654) (3e08d24), closes #8635 #8910 vitejs/vite-plugin-vue#184
- compiler-sfc: malformed filename on windows using path.posix.join() (#9478) (f18a174), closes #8671 #9583 #9446 #9473
- compiler-sfc: support
:is
and:where
selector in scoped css rewrite (#8929) (3227e50) - compiler-sfc: support resolve extends interface for defineEmits (#8470) (9e1b74b), closes #8465
- hmr/transition: fix kept-alive component inside transition disappearing after hmr (#7126) (d11e978), closes #7121
- hydration: force hydration for v-bind with .prop modifier (364f319), closes #7490
- hydration: properly hydrate indeterminate prop (34b5a5d), closes #7476
- reactivity: clear method on readonly collections should return undefined (#7316) (657476d)
- reactivity: onCleanup also needs to be cleaned (#8655) (73fd810), closes #5151 #7695
- ssr: hydration
__vnode
missing for devtools (#9328) (5156ac5) - types: allow falsy value types in
StyleValue
(#7954) (17aa92b), closes #7955 - types: defineCustomElement using defineComponent return type with emits (#7937) (5d932a8), closes #7782
- types: fix
unref
andtoValue
when input union type contains ComputedRef (#8748) (176d476), closes #8747 #8857 - types: fix instance type when props type is incompatible with setup returned type (#7338) (0e1e8f9), closes #5885
- types: fix shallowRef return type with union value type (#7853) (7c44800), closes #7852
- types: more precise types for class bindings (#8012) (46e3374)
- types: remove optional properties from defineProps return type (#6421) (94c049d), closes #6420
- types: return type of withDefaults should be readonly (#8601) (f15debc)
- types: revert class type restrictions (5d077c8), closes #8012
- types: update jsx type definitions (#8607) (58e2a94)
- types: widen ClassValue type (2424013)
- v-model: avoid overwriting number input with same value (#7004) (40f4b77), closes #7003
- v-model: unnecessary value binding error should apply to dynamic instead of static binding (2859b65), closes #3596
3.3.8 (2023-11-06)
Bug Fixes
- compile-sfc: support
Error
type indefineProps
(#5955) (a989345) - compiler-core: known global should be shadowed by local variables in expression rewrite (#9492) (a75d1c5), closes #9482
- compiler-sfc: fix dynamic directive arguments usage check for slots (#9495) (b39fa1f), closes #9493
- deps: update dependency @vue/repl to ^2.6.2 (#9536) (5cef325)
- deps: update dependency @vue/repl to ^2.6.3 (#9540) (176d590)
- hydration: fix tagName access error on comment/text node hydration mismatch (dd8a0cf), closes #9531
- types: avoid exposing lru-cache types in generated dts (462aeb3), closes #9521
- warn: avoid warning on empty children with Suspense (#3962) (405f345)
3.4.0-alpha.1 (2023-10-28)
Features
- compiler-core: export error message (#8729) (f7e80ee)
- compiler-sfc: expose resolve type-based props and emits (#8874) (9e77580)
- export runtime error strings (#9301) (feb2f2e)
- reactivity: more efficient reactivity system (#5912) (16e06ca), closes #311 #1811 #6018 #7160 #8714 #9149 #9419 #9464
- runtime-core: add
once
option to watch (#9034) (a645e7a)