Open-Source Wikis

/

Vue.js

/

Lore

vuejs/core

Lore

The story of how vuejs/core came to be its current shape, derived from git history, tag dates, and the file timestamps in the repo. For raw stats see by-the-numbers. For technical rationale, see background.

Eras

The Vue 3 rewrite (Sep 2018 – Sep 2020)

The first commit in this repo (formerly known as vue-next) lands on September 19, 2018: an empty monorepo skeleton. Within the next year the rough shape of every current package is in place — reactivity, runtime-core, runtime-dom, compiler-core, compiler-dom, server-renderer, shared. The package was renamed from vue-compat (the original directory name for what would become the new vue package) on October 23, 2018 in commit f0c33e9.

Highlights of the period:

  • Sep 2018: monorepo, package skeletons.
  • Late 2018 – early 2019: tokenizer, parser, codegen, base transforms.
  • Mid-2019: scheduler, virtual DOM, component instance.
  • Late 2019: Suspense first appears (Suspense.ts first committed Nov 4, 2019).
  • Mid-2020: <script setup> lands as wip: compileScriptSetup on Jul 6, 2020.
  • Sep 18, 2020: Vue 3.0.0 "One Piece" — the public release. After two years of work, the rewrite goes stable.

The 1,746 commits in 2020 are by far the busiest year in the project's history.

Stabilization (Oct 2020 – Aug 2021)

After 3.0, the team does what every framework team does post-launch: chase down regressions, polish edge cases, and refactor the file organization to match what the rewrite actually became. The "consistent file naming" refactor lands on Jul 7, 2021 (chore: use consistent file naming), the commit that turns dep.ts, effect.ts, and friends into their current names.

Performance work lands here too: 3.1 (June 2021) brings the patch-flag-driven block tree, 3.2 (August 2021) brings static hoisting tweaks and <script setup> graduation from experimental to stable.

The Composition-API ecosystem grows (2022)

2022 is the project's quietest year — only 478 commits — because so much of the surrounding ecosystem (Vue Router 4, Pinia, Volar, vite-plugin-vue) is being built outside this repo. Inside, the team focuses on type ergonomics: better generic component typing, JSX support refinements, and the start of the type-only defineProps<> work.

TypeScript-native macros (2023)

Vue 3.3 (May 2023) ships proper type-only defineProps<> and defineEmits<> resolution. This is the introduction of packages/compiler-sfc/src/script/resolveType.ts, the partial TypeScript type resolver that grew to ~60KB by the time of writing. Generic components and defineModel (3.4) follow. Commits per year jump back up to 867.

Reactivity rewrite + definePropsDestructure (2024 – 2025)

Vue 3.4 (December 2023) ships a substantial rewrite of the reactivity internals: the Dep-based dirty checking, the doubly-linked Link list, globalVersion-based short-circuiting, and reduced memory churn. The new dep.ts and effect.ts files crystallize during this period.

3.5 (mid-2024) brings:

  • Reactive defineProps destructuring (via definePropsDestructure.ts).
  • Lazy hydration strategies (hydrationStrategies.ts).
  • useId, useTemplateRef.
  • More performance work on the renderer.

The 1,027 commits in 2024 reflect this density. 2025 (372 commits through end of year) and 2026 YTD (142 commits) show the project settling back into its long-term cadence as 3.6 takes shape on the minor branch.

Longest-standing code

A handful of files have been with the repo nearly the whole way:

  • packages/shared/src/general.tsNOOP, EMPTY_OBJ, extend constants. Largely unchanged since the early 3.0 days.
  • packages/runtime-core/src/scheduler.ts — the core algorithm (microtask flush, findInsertionIndex binary search) has held the same shape since 2019. New flags have been added (ALLOW_RECURSE, DISPOSED) but the structure is intact.
  • packages/runtime-core/src/h.ts — the h() function predates the <template> compiler. It is the way the very first Vue 3 components were written, and the API has not changed.
  • packages/runtime-core/src/components/Teleport.ts — the original built-in component, virtually unchanged since 2019.

Deprecated / removed features

  • The transformOnce baked into compiler-core existed before v-once had its own transform; the codebase consolidated to a single transform path.
  • Reactivity Transform (the $ref/$$() sugar that was experimentally enabled via reactivityTransform: true): introduced in 3.2, marked deprecated, then removed. packages/compiler-sfc/src/index.ts still exports a shouldTransformRef function that always returns false so older versions of vite-plugin-vue don't break — pure backwards-compat ballast.
  • Vue 2 functional components / async components — preserved only in the compat layer (packages/runtime-core/src/compat/). vue-compat itself is supported for migration but is not the recommended new-project target.

Major rewrites

When What Where
Sep 2018 – Sep 2020 The whole rewrite from Vue 2's vue repo the entire codebase
Jul 2021 File-naming consolidation renames across all packages
Late 2023 – early 2024 Reactivity dep/link rewrite packages/reactivity/src/dep.ts, effect.ts, computed.ts
2024 <script setup> 3.5 features (destructure, defineModel) packages/compiler-sfc/src/script/

Growth trajectory

The unique-author count (excluding bots) has steadily grown each year as the Composition API and <script setup> made the codebase more accessible to outside contributors. Top contributors over the project's lifetime are visible in the git log shortlog; in addition to maintainer Evan You, names like edison, 三咲智子 Kevin Deng, HcySunYang, Carlos Rodrigues, Tycho, underfin, Cédric Exbrayat, Thorsten Lünborg, daiwei, and skirtle recur frequently. See maintainers for current ownership.

What is happening now (2026)

The main branch line is 3.5.x patch releases. The minor branch carries 3.6 work — at the time of writing the 3.6 line is in beta.10, so a 3.6.0 release is imminent. Recent themes on minor:

  • Continued reactivity microbenchmarking and tightening.
  • Compiler-sfc TypeScript resolver coverage for more advanced patterns.
  • Hydration robustness improvements.
  • Build-tool catalog upkeep (Rollup 4.60+, ESLint 10, Vitest 4).

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – Vue.js wiki | Factory