Why Vue Is Rewriting Its Core: Inside the Vue 3 Architecture Overhaul
The Vue team explains why they are rebuilding Vue 3—leveraging new JavaScript features like Proxy, fixing architectural limitations, adopting TypeScript, improving performance and bundle size, and introducing a flexible Composition API—while using an RFC process to involve the community.
Over the past year the Vue team has been developing the next major version, Vue 3, aiming for a release in early 2020. The decision to rewrite Vue stems from two key factors: widespread browser support for new JavaScript language features and design/architecture issues that have emerged in the Vue 2 codebase.
Why rewrite?
New language features such as Proxy enable more powerful reactivity by allowing the framework to intercept object operations, eliminating Vue 2’s limitations (e.g., inability to detect added properties) and improving performance. However, Proxy cannot be polyfilled, so supporting it requires redefining the browser compatibility range for the new major version.
Architecturally, Vue 2’s template compiler makes source‑map support difficult, and extending Vue 2 to non‑DOM platforms forces code duplication. Technical debt, implicit coupling between modules, and low contributor confidence also motivate a clean‑slate redesign.
Prototype and early decisions
Prototype work began at the end of 2018 to validate solutions. The team switched from pure ES to TypeScript to gain static type checking, reduce refactoring errors, and generate declaration files automatically. A monorepo structure was adopted to make internal package dependencies explicit, lowering contribution barriers.
An RFC (Request for Comments) process was introduced in early 2019 to gather community feedback on API changes, ensuring careful handling of migration costs and ecosystem fragmentation.
Performance and bundle size
Vue 3 targets faster, smaller builds. By rewriting the compiler with an AST transformation pipeline, static analysis can hoist static nodes and sub‑trees out of render functions, drastically reducing runtime overhead. Optimizations include:
Static block segmentation to avoid unnecessary DOM tree traversal.
Hoisting static nodes and data objects to improve memory usage.
Generating per‑element optimization flags for faster runtime updates.
These changes can cut CPU time to less than one‑tenth of Vue 2. Bundle size is also reduced by making most global APIs and helpers tree‑shakable; the compressed baseline size of Vue 3 is about 10 KB, less than half of Vue 2.
Scaling for large applications
To support large‑scale projects, Vue 3 introduces the Composition API , inspired by React hooks, offering a more flexible way to compose component logic with excellent TypeScript support. This complements the existing Options API rather than replacing it.
Balancing diverse user needs
Vue’s “progressive framework” philosophy balances beginner friendliness (CDN scripts, simple Options API) with advanced capabilities (CLI, render functions, Composition API) to serve a community of over one million developers ranging from novices to architects.
The team will continue improving supporting libraries, documentation, and migration tools to ensure a smooth transition to Vue 3.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
