vuejs/core
Fun facts
Small things picked up while walking the repo. Take with a grain of salt.
"vue-next" was the original name
The repo started life as vuejs/vue-next, the codename for the Vue 3 rewrite. It was renamed to vuejs/core after the 3.0 release shipped. You can still find references to "Vue 3.x" and "next" sprinkled in older commits.
The renderer is one giant file on purpose
packages/runtime-core/src/renderer.ts weighs in at ~74 KB and ~2,400 lines. Splitting it has been proposed several times — Evan has consistently pushed back because the patch loop's processX/mountX/patchX functions share so much state and are so hot that splitting them across modules would force closure or argument-passing overhead in code that runs once per vnode per render.
The Single biggest file is a TypeScript type resolver
packages/compiler-sfc/src/script/resolveType.ts is over 60 KB and implements a subset of TypeScript's type checker so defineProps<{...}>() works at compile time. It's larger than the entire reactivity package put together. The fact that this resolver works well enough for most production codebases — without ever running the real TypeScript compiler — is one of the more impressive engineering feats in the repo.
The tokenizer is borrowed from htmlparser2
packages/compiler-core/src/tokenizer.ts is adapted from htmlparser2's tokenizer, with Vue-specific extensions for {{ }} interpolation and HTML namespaces. Comments in the file credit the original. It is the most-tuned single piece of code in the compiler.
__UNSAFE__ markers
A grep for // __UNSAFE__ returns a small list of comments where the maintainers have explicitly flagged places that take a risk for ergonomics' sake. The most prominent one is in packages/runtime-dom/src/index.ts: when app.mount('#app') is called and the component has no template or render, the renderer copies container.innerHTML as the template. The comment notes "potential execution of JS expressions in in-DOM template" — accept this risk only when the source HTML is trusted.
The dx commit type
The commit-message regex includes a less-known type: dx. It is for "developer experience" changes — error messages, warning text, dev-only helpers, devtools integration — that are neither feature nor fix nor docs. It exists because the maintainers felt the standard Angular set didn't have a good home for these kinds of changes.
The "One Piece" reference
Vue 3.0's release name (Sep 18, 2020) was "One Piece," after the manga. Subsequent minor codenames have continued the anime/manga homage trend: 3.1 "Pluto", 3.2 "Quintessential Quintuplets", 3.3 "Rurouni Kenshin", 3.4 "Slam Dunk", 3.5 "Tengen Toppa Gurren Lagann". The minor codename usually shows up in the corresponding CHANGELOG.md entry.
The pre-commit hook does a lot
Every commit triggers simple-git-hooks to run pnpm lint-staged (Prettier + ESLint on staged files) and pnpm check (full-monorepo tsc --noEmit). On a fresh checkout the type-check can take a minute. Contributors who haven't run pnpm install recently are sometimes surprised by this; the type-check is the price of catching type errors before review rather than in CI.
Test files outnumber source files in some packages
packages/vue-compat has 6 source files and 12 test files (a 2:1 ratio). packages/vue has 3 source files and 20 test files (almost 7:1). The latter is because packages/vue/__tests__/ exercises the entire framework end-to-end through the public package.
The oldest still-active commit author
Evan You (the project's creator) has authored more than half of the commits in the repo and the lion's share of the design decisions. His presence in git log for any package is in the high hundreds to multi-thousands of commits.
A tokenizer state machine that survives anything
packages/compiler-core/src/tokenizer.ts includes recovery for malformed input — unclosed tags, invalid characters in attribute names, HTML entities that look like JavaScript. Almost every "fix(parser)" commit in the history is a new edge case being defended against. The list of HTML quirks is sobering reading.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.