3.3.4 (2023-05-18)
- build: ensure correct typing for node esm (d621d4c)
- build: fix DEV flag replacement edge case (8b7c04b), closes #8353
- compiler-sfc: handle imported types from default exports (5aec717), closes #8355
3.3.3 (2023-05-18)
- avoid regex s flag for old browsers (91f1c62), closes #8316
- build: fix dev flag replacement in esm-builder builds (#8314) (003836f), closes #8312
- compiler-sfc: don't hoist regexp literial (#8300) (8ec73a3)
- compiler-sfc: fix props destructing default value type checking with unresolved type (#8340) (f69dbab), closes #8326
- compiler-sfc: fix type import from path aliased vue file (fab9c72), closes #8348
- compiler-sfc: handle ts files with relative imports with .js extension (b36addd), closes #8339
- compiler-sfc: parses correctly when inline mode is off (#8337) (ecbd42a), closes #6088
- compiler-sfc: support defineEmits type reference with unions (#8299) (b133e0f), closes #7943
- types: support generic usage with withDefaults + defineProps (#8335) (216f269), closes #8310 #8331 #8325
3.3.2 (2023-05-12)
- compiler-core: treat floating point numbers as constants (8dc8cf8), closes #8295
- compiler-dom: do not throw in production on side effect tags (c454b9d), closes #8287 #8292
- compiler-sfc: fix regression on props destructure when transform is not enabled (f25bd37), closes #8289
- compiler-sfc: handle prop keys that need escaping (#7803) (690ef29), closes #8291
- compiler-sfc: properly parse d.ts files when resolving types (aa1e77d), closes #8285
- compiler-sfc: raise specific warning for failed extends and allow ignoring extends (8235072), closes #8286
3.3.1 (2023-05-11)
- suspense: handle nested sync suspense for hydration (a3f5485)
3.3.0 Rurouni Kenshin (2023-05-11)
-
For a detailed walkthrough of the new features in 3.3, please read the release blog post.
-
Features and deprecations listed here are aggregated from the beta and alpha releases. For full chronological history, bug fixes, and other minor features, please consult the individual logs of the 3.3 beta and alpha releases.
- sfc: support imported types in SFC macros (#8083)
- types/slots: support slot presence / props type checks via
defineSlots
macro andslots
option (#7982) (5a2f5d5) - sfc: support more ergnomic defineEmits type syntax (#7992) (8876dcc)
- sfc: introduce
defineModel
macro anduseModel
helper (#8018) (14f3d74) - reactivity: improve support of getter usage in reactivity APIs (#7997) (59e8284)
- compiler-sfc: add defineOptions macro (#5738) (bcf5841)
- types/jsx: support jsxImportSource, avoid global JSX conflict (#7958) (d0b7ef3)
- dx: improve readability of displayed types for props (4c9bfd2)
- app: app.runWithContext() (#7451) (869f3fb)
- hasInjectionContext() for libraries (#8111) (5510ce3)
- allow accessing console in template (#6508) (fe76224), closes #7939
- suspense: introduce suspensible option for
<Suspense>
(#6736) (cb37d0b), closes #5513 - compiler-dom: treat inert as boolean attribute (#8209) (918ec8a), closes #8208
- types: add slots types for built-in components (#6033) (3cb4dc9)
- types: provide ExtractPublicPropTypes utility type (bff63c5), closes #5272 #8168
- compiler-sfc: expose parseCache (4576548), closes #8202
- deprecation: deprecate @vnode hooks in favor of vue: prefix (5f0394a)
- deprecation: deprecate v-is directive (bbd8301)
- deprecation: unwrap injected refs in Options API by default, deprecate app.config.unwrapInjectedRefs (526fa3b)
3.3.0-beta.5 (2023-05-08)
- build: retain defineComponent() treeshakability in Rollup (c2172f3), closes #8236
- compiler-sfc: enable props destructure when reactivity transform option is enabled (862edfd)
- compiler-sfc: fix built-in type resolving in external files (6b194bc), closes #8244
- compiler-sfc: transform destructured props when reactivity transform option is enabled (#8252) (287bd99)
- runtime-core: ensure defineComponent name in extraOptions takes higher priority (b2be75b)
- runtime-dom: check attribute value when setting option value (#8246) (4495373), closes #8227
- suspense: fix nested suspensible suspense with no asyn deps (e147512), closes #8206
- types: remove short syntax support in defineSlots() (1279b17)
3.3.0-beta.4 (2023-05-05)
- runtime-core: handle template ref with number values (#8233) (1b1242f), closes #8230
- types: retain compatibility for provide() usage with explicit type parameter (038cd83)
- compiler-dom: treat inert as boolean attribute (#8209) (918ec8a), closes #8208
- types: add slots types for built-in components (#6033) (3cb4dc9)
- types: provide ExtractPublicPropTypes utility type (bff63c5), closes #5272 #8168
3.3.0-beta.3 (2023-05-01)
- compiler-core: handle slot argument parsing edge case (b434d12)
- hmr: keep slots proxy mutable for hmr (c117d9c), closes #8188
- types: fix provide type checking for ref value (de87e6e), closes #8201
3.3.0-beta.2 (2023-04-25)
- compiler-sfc: avoid all hard errors when inferring runtime type (2d9f6f9)
- compiler-sfc: normalize windows paths when resolving types (#8136) (29da504)
- compiler-sfc: props bindings should not override user declared bindings (433a58c), closes #8148
- compiler-sfc: infer ref binding type for more built-in methods (a370e80)
3.3.0-beta.1 (2023-04-21)
- allow accessing console in template (#6508) (fe76224), closes #7939
- compiler-sfc: improve utility type Partial and Required (#8103) (1d1d728)
- deprecation: deprecate @vnode hooks in favor of vue: prefix (5f0394a)
- deprecation: deprecate v-is directive (bbd8301)
- deprecation: unwrap injected refs in Options API by default, deprecate app.config.unwrapInjectedRefs (526fa3b)
- suspense: introduce suspensible option for
<Suspense>
(#6736) (cb37d0b), closes #5513
3.3.0-alpha.13 (2023-04-20)
- compiler-sfc: handle type merging + fix namespace access when inferring type (d53e157), closes #8102
- compiler-sfc: normalize filename when invalidating cache (9b5a34b)
- hmr: always traverse static children in dev (f17a82c), closes #7921 #8100
- hmr: force update cached slots during HMR (94fa67a), closes #7155 #7158
- compiler-sfc: support dynamic imports when resolving types (4496456)
- compiler-sfc: support export * when resolving types (7c3ca3c)
- compiler-sfc: support ExtractPropTypes when resolving types (50c0bbe), closes #8104
- hasInjectionContext() for libraries (#8111) (5510ce3)
3.3.0-alpha.12 (2023-04-18)
- compiler: fix expression codegen for literal const bindings in non-inline mode (0f77a2b)
3.3.0-alpha.11 (2023-04-17)
- compiler-sfc: normalize windows paths when resolving types (271df09)
3.3.0-alpha.10 (2023-04-17)
- hmr: invalidate cached props/emits options on hmr (4b5b384)
- runtime-core: properly merge props and emits options from mixins (#8052) (c94ef02), closes #7989
- compiler-sfc: expose type import deps on compiled script block (8d8ddd6)
- compiler-sfc: expose type resolve APIs (f22e32e)
- compiler-sfc: mark props destructure as experimental and require explicit opt-in (6b13e04)
- compiler-sfc: support intersection and union types in macros (d1f973b), closes #7553
- compiler-sfc: support limited built-in utility types in macros (1cfab4c)
- compiler-sfc: support mapped types, string types & template type in macros (fb8ecc8)
- compiler-sfc: support namespace members type in macros (5ff40bb)
- compiler-sfc: support relative imported types in macros (8aa4ea8)
- compiler-sfc: support resolving type imports from modules (3982bef)
- compiler-sfc: support specifying global types for sfc macros (4e028b9), closes /github.com/vuejs/core/pull/8083#issuecomment-1508468713
- compiler-sfc: support string indexed type in macros (3f779dd)
- compiler-sfc: support string/number indexed types in macros (760755f)
- compiler: use source-map-js (19e17a9)
3.3.0-alpha.9 (2023-04-08)
- compiler-sfc: accept
StringLiteral
node indefineEmit
tuple syntax (#8041) (3ccbea0), closes #8040 - compiler-sfc: fix binding type for constants when hoistStatic is disabled (#8029) (f7f4624)
- compiler-sfc: skip empty
defineOptions
and support TypeScript type assertions (#8028) (9557529) - compiler-ssr: disable v-once transform in ssr vdom fallback branch (05f94cf), closes #7644
- types: improve defineProps return type with generic arguments (91a931a)
- types: more public type argument order fix (af563bf)
- types: retain type parameters order for public types (bdf557f)
- app: app.runWithContext() (#7451) (869f3fb)
- sfc: introduce
defineModel
macro anduseModel
helper (#8018) (14f3d74)
- Revert "chore: remove unused args passed to ssrRender" (b117b88)
3.3.0-alpha.8 (2023-04-04)
3.3.0-alpha.7 (2023-04-03)
- compiler-dom: handle newlines when evaluating constants during stringification (#7995) (5261085), closes #7994
- compiler-sfc: use dynamic defaults merging for methods with computed keys (482f2e3), closes #7113
- compiler-sfc: codegen support for defineEmits() short syntax (followup of #7992) (ef73ea5)
- compiler-sfc: support arbitrary expression as withDefaults argument (fe61944), closes #6459
- reactivity: improve support of getter usage in reactivity APIs (#7997) (59e8284)
- sfc: revert withDefaults() deprecation (4af5d1b)
- sfc: support more ergnomic defineEmits type syntax (#7992) (8876dcc)
- types/slots: support slot presence / props type checks via
defineSlots
macro andslots
option (#7982) (5a2f5d5)
3.3.0-alpha.6 (2023-03-30)
- compiler-core: check if expression is constant (#7974) (77686cf), closes #7973
- compiler-core: fix codegen for literal const in non-inline mode (6bda4b6)
- compiler-sfc: allow
<script>
with lang='js' (#7398) (9f5e20c) - compiler-sfc: avoid codegen conflict with user variable named
expose
(#7949) (c839129), closes #7890 - compiler-sfc: disallow
expose
property indefineOptions
(#7967) (93f7729) - compiler-sfc: fix defineExpose() codegen regression from #7949 (a94072d)
- compiler-sfc: fix edge case of default export call with no args (#7536) (d60e58c), closes #7534
- compiler-sfc: fix function default value handling w/ props destructure (e10a89e)
- compiler-sfc: handle more TS built-in utilities in defineProps inference (4355d24)
- compiler-sfc: infer function prop type from type literal w/ callable signature (#7119) (3a7572c)
- compiler-sfc: infer object type for empty type literal (1a04fba)
- compiler-sfc: infer runtime type in defineProps (#7972) (ba4cec3)
- compiler-sfc: infer TS Extract&Exclude runtime type (#7339) (6391daf), closes #7337 #6252
- compiler-sfc: infer TSIntersectionType in defineProps (#7394) (151a8ad)
- compiler-sfc: properly handle unknown types in runtime prop inference (5fb406e), closes #7511
- compiler-sfc: properly remove comma of multiple macros in the same declaration (#7423) (336a3d7), closes #7422 #6778
- compiler-sfc: rewrite default export with AST analysis instead of regex (#7068) (701b95f), closes #7038 #7041 #7078
- compiler-sfc: unwrap TS node for defineProps (#7340) (1b69d5f)
- compiler-sfc: use prependLeft to handle CSSVars (#7760) (139104b)
- jsx-runtime: fix automatic runtime implementation (#7959) (5838950)
- jsx-runtime: handle keys (#7976) (ff60b93)
- types/jsx: jsx-runtime types for global JSX namespace registration (#7978) (0f73f39)
- types/jsx: move JSX DOM types back to
@vue/runtime-dom
(#7979) (ffe679c) - types/jsx: remove $slots children override (28e30c8)
- types: revert jsx global removal (to be removed in 3.4) (e224922)
- compiler-core: support parsing
const
modifier in type parameters (#7912) (b7bd50f) - compiler-sfc: add defineOptions macro (#5738) (bcf5841)
- compiler-sfc: enable reactive props destructure by default (#7986) (ba9c2ae)
- compiler-sfc: improve runtime props inference for enum (eded947)
- compiler-sfc: support generating variable instead of default export in compileScript (71635be)
- compiler-sfc: support module string names syntax (#7428) (0002567)
- complier-sfc: hoist literal constants for script (#5752) (7def8b1), closes #5750
- runtime-core: add skipCheck for prop (#7548) (63ad77f)
- sfc: deprecate reactivity transform (efb54e7)
- types:
defineComponent()
with generics support (#7963) (d77557c), closes #3102
- types: The type of
defineComponent()
when passing in a function has changed. This overload signature is rarely used in practice and the breakage will be minimal, so repurposing it to something more useful should be worth it.
3.3.0-alpha.5 (2023-03-26)
- runtime-core: support
getCurrentInstance
across mutiple builds of Vue (8d2d5bf) - types: ensure defineProps with generics return correct types (c288c7b)
- dx: improve readability of displayed types for props (4c9bfd2)
- types/jsx: support jsxImportSource, avoid global JSX conflict (#7958) (d0b7ef3)
-
In the next minor (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.For TSX users, it is suggested to set jsxImportSource to
'vue'
intsconfig.json
after upgrading to 3.3, or opt-in per file with/* @jsxImportSource vue */
. This will allow you to opt-in to the new behavior now and upgrade seamlessly when 3.4 releases.If there is code that depends on the presence of the global
JSX
namespace, you can retain the exact pre-3.4 global behavior by explicitly referencingvue/jsx
, which registers the globalJSX
namespace.Note that the planned change in 3.4 is a type-only breaking change in a minor release, which adheres to our release policy.
3.3.0-alpha.4 (2023-02-06)
- build: fix const enum w/ number values (92bb189)
3.3.0-alpha.3 (2023-02-06)
- build: avoid const enum conflicts (d1181ad)
3.3.0-alpha.2 (2023-02-05)
- build: fix dev flag replacement in esm-bundler builds (5851eaa)
3.3.0-alpha.1 (2023-02-05)
- build: ensure BaseTransition functions can be tree-shaken (3a6f5eb)
See 3.2 changelog
See 3.1 changelog
See 3.0 changelog