3.4.3 (2023-12-30)
- compiler-sfc: respect sfc parse options in cache key (b8d58ec)
3.4.2 (2023-12-30)
- 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)
- 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
- compiler-sfc: support passing template parsing options when parsing sfc (6fab855) (necessary to fix vitejs/vite-plugin-vue#322)
3.4.0 Slam Dunk (2023-12-29)
Read this blog post for an overview of the release highlights.
-
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.
- 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)
- 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)
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.
- 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)
- also export runtime error strings in all cjs builds (38706e4)
- defineModel: support modifiers and transformers (a772031)
3.4.0-rc.2 (2023-12-26)
- 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)
- compiler-sfc: export aggregated error messages for compiler-core and compiler-dom (25c726e)
3.4.0-rc.1 (2023-12-25)
- 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)
- 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)
- runtime-core: throw real error when scheduler detects infinite loop during dev (#7447) (1d79b64), closes #7437
3.3.13 (2023-12-19)
- 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)
- 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)
- 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)
- types: remove default jsx global registration (92b8d9c)
- types: Vue no longer registers the global
JSX
namespace by default.
3.4.0-beta.1 (2023-12-13)
- 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)
- 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)
- use sync watcher for defineModel local mode (7e60d10), closes /github.com/vuejs/rfcs/discussions/503#discussioncomment-7566278
3.3.11 (2023-12-08)
- 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)
- 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)
- 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)
- 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)
- 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)
- deps: update compiler to ^7.23.4 (#9681) (31f6ebc)
- parser: directive arg should be undefined on shorthands with no arg (e49dffc)
3.4.0-alpha.2 (2023-11-27)
-
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
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
See 3.3 changelog
See 3.2 changelog
See 3.1 changelog
See 3.0 changelog