Vue 3.3 Released: TypeScript DX and Generic Components
Vue 3.3 focused on the TypeScript developer experience, adding imported-type support in macros, generic components, a more ergonomic defineEmits, and typed slots.
Historical Archive. This article documents an event from 2023 and is preserved with its original date for reference. It is not current news, and details may have changed since publication.
What happened
Vue 3.3, nicknamed Rurouni Kenshin, was released on May 11, 2023, according to the official Vue blog post by Evan You. The release was focused on developer-experience improvements, particularly using single-file-component script setup with TypeScript, alongside the 1.6 release of Vue Language Tools.
TypeScript in macros
Vue 3.3 resolved several long-standing TypeScript pain points. The compiler can now resolve imported types and a limited set of complex types in the type position of defineProps and defineEmits, lifting the previous restriction to local type literals and interfaces. Components using script setup can also now accept generic type parameters via a generic attribute, enabling reusable, type-safe generic components.
More ergonomic APIs
The release introduced a more ergonomic way to declare emits with types, where the event name is a key and the value is a tuple of arguments, replacing the more verbose call-signature syntax. It added a defineSlots macro for declaring typed slots, a defineOptions macro for declaring component options directly in script setup, and enhanced toRef and added toValue to better support getters as reactive data sources in composables.
Experimental features and infrastructure
Vue 3.3 shipped experimental, opt-in versions of reactive props destructure and the defineModel macro, both of which would later stabilise in subsequent releases. Behind the scenes, the team reported infrastructure improvements including roughly 10x faster builds, faster tests by moving to Vitest, and comprehensive regression testing via ecosystem-ci, supporting a plan for smaller, more frequent releases.
Why it mattered
Vue 3.3 substantially improved the experience of writing Vue with TypeScript, which had been a frequent source of friction. Generic components and imported-type support in particular unlocked patterns that library and application authors had long wanted, cementing Vue's first-class TypeScript story.
Related on Skillo
See also: Vue 3.4's faster parser and stable defineModel.
Sources
Published date reflects the original event date (2023-05-11). This article is original Skillo editorial written from the sources above; facts were verified in September 2026.
Written by
Skillo Staff
0 Comments
Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.