# Feature catalog — vuejs/core

> Canonical page: https://codevetter.com/unpack/vue/feature-catalog

# Feature catalog — vuejs/core

Scanned commit 4ab865a848a1da3d10fb674f857e5fff13094644 (2026-09-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

There are no routes or screens in the product sense — the user-facing surface is (a) the public JS API exported from `@vue/runtime-core`/`@vue/runtime-dom`, (b) the compiler APIs consumed by vite-plugin-vue/vue-loader, (c) SSR render functions, (d) the `nr <script>` developer command surface in package.json, and (e) two deployed browser tools. Built-in components (Teleport, Suspense, KeepAlive, BaseTransition, Transition, TransitionGroup) and built-in directives (v-model, v-show, v-on modifiers) are shipped as first-class features handled specially in both the compiler and the renderer. Custom elements and lazy-hydration strategies are the newer feature surfaces.
- `packages/runtime-core/src/index.ts` is the canonical public API list: reactivity re-exports, `computed`, the `watch` family, all `on*` lifecycle hooks, `provide`/`inject`/`hasInjectionContext`, `nextTick`, `defineComponent`, `defineAsyncComponent`, `useAttrs`/`useSlots`/`useModel`/`useTemplateRef`/`useId`, `h`, `createVNode`, and the four built-in components. — [packages/runtime-core/src/index.ts#L1-L127](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/index.ts#L1-L127)
- `createApp` and `createSSRApp` are distinct DOM entrypoints: the first calls `ensureRenderer()`, the second `ensureHydrationRenderer()` which swaps in a hydration-enabled renderer and flips a module-level `enabledHydration` latch, so the hydration code path is only pulled into the bundle when SSR apps are used. — [packages/runtime-dom/src/index.ts#L80-L170](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-dom/src/index.ts#L80-L170)
- The App instance exposes `use`, `mixin`, `component`, `directive`, `mount`, `unmount`, `onUnmount`, `provide` and `runWithContext`, with plugin dedup via an `installedPlugins` WeakSet and app-level teardown callbacks collected in `pluginCleanupFns`. — [packages/runtime-core/src/apiCreateApp.ts#L34-L100](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/apiCreateApp.ts#L34-L100) [packages/runtime-core/src/apiCreateApp.ts#L294-L400](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/apiCreateApp.ts#L294-L400)
- Lazy hydration is a shipped feature with four strategy factories — `hydrateOnIdle`, `hydrateOnVisible`, `hydrateOnMediaQuery`, `hydrateOnInteraction` — exported from runtime-core and exercised by dedicated HTML fixtures in the e2e suite. — [packages/runtime-core/src/hydrationStrategies.ts#L29-L90](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/hydrationStrategies.ts#L29-L90) [packages/vue/__tests__/e2e/hydrationStrategies.spec.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue/__tests__/e2e/hydrationStrategies.spec.ts)
- Web-component support is a full subsystem: `defineCustomElement`/`defineSSRCustomElement` plus a `VueElement` class with shadow-DOM style injection (`_injectChildStyle`) and the `useHost`/`useShadowRoot` composables that warn when called outside a custom-element-defined component. — [packages/runtime-dom/src/apiCustomElement.ts#L65-L210](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-dom/src/apiCustomElement.ts#L65-L210) [packages/runtime-dom/src/apiCustomElement.ts#L761-L845](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-dom/src/apiCustomElement.ts#L761-L845)
- `@vue/compiler-sfc` is the public SFC toolchain: `parse`, `compileTemplate`, `compileStyle`/`compileStyleAsync`, `compileScript`, `rewriteDefault`/`rewriteDefaultAST`, plus type-resolution internals `resolveTypeElements`, `inferRuntimeType`, `invalidateTypeCache` and `registerTS` explicitly exported for build-tool integration. — [packages/compiler-sfc/src/index.ts#L1-L47](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/compiler-sfc/src/index.ts#L1-L47)
- `<script setup>` macros supported by compileScript are enumerated in a `MACROS` constant — defineProps, defineEmits, defineExpose, defineOptions, defineSlots, defineModel and withDefaults — each with its own module under `packages/compiler-sfc/src/script/`. — [packages/compiler-sfc/src/compileScript.ts#L153-L162](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/compiler-sfc/src/compileScript.ts#L153-L162) [packages/compiler-sfc/src/index.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/compiler-sfc/src/index.ts)
- Style compilation supports scoped CSS, CSS modules and preprocessors: `compileStyle` builds a postcss pipeline from `pluginTrim` and `pluginScoped`, adds `postcss-modules` when `modules: true`, and `style/preprocessors.ts` lazily `require`s sass/less/stylus through an injectable `preprocessCustomRequire`. — [packages/compiler-sfc/src/compileStyle.ts#L1-L100](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/compiler-sfc/src/compileStyle.ts#L1-L100) [packages/compiler-sfc/src/style/preprocessors.ts#L1-L60](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/compiler-sfc/src/style/preprocessors.ts#L1-L60)
- SSR exposes five output shapes from `@vue/server-renderer`: `renderToString`, `renderToSimpleStream`, `renderToNodeStream`, `pipeToNodeWritable`, `renderToWebStream` and `pipeToWebWritable` (plus deprecated `renderToStream`), with `initDirectivesForSSR()` run as an import side effect. — [packages/server-renderer/src/index.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/server-renderer/src/index.ts) [packages/server-renderer/src/renderToString.ts#L67-L90](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/server-renderer/src/renderToString.ts#L67-L90)
- The developer command surface in package.json includes `nr dev`, `nr build`, `nr build-dts`, `nr check`, `nr test`/`test-unit`/`test-e2e`/`test-dts`/`test-coverage`, `nr size` (with size-global/size-esm/size-esm-runtime sub-targets), `nr bench`/`bench-compare`, `nr dev-sfc`, `nr dev-compiler` and `nr release`. — [package.json#L6-L37](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/package.json#L6-L37) [.github/contributing.md#L106-L235](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/contributing.md#L106-L235)
- The SFC Playground (`packages-private/sfc-playground`) wraps `@vue/repl` with a Monaco editor, toggles for production mode / SSR mode / auto-save, a TypeScript version pin (`DEFAULT_TYPESCRIPT_VERSION = '6.0.3'`), and enables experimental `propsDestructure: true` by default. — [packages-private/sfc-playground/src/App.vue#L1-L80](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages-private/sfc-playground/src/App.vue#L1-L80) [packages-private/sfc-playground/src/main.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages-private/sfc-playground/src/main.ts)
- The Template Explorer (`packages-private/template-explorer`) renders compiler output side-by-side in Monaco, can switch between `@vue/compiler-dom` and `@vue/compiler-ssr` via an `ssrMode` toggle, and maps generated code back to source using `SourceMapConsumer` from source-map-js. — [packages-private/template-explorer/src/index.ts#L1-L60](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages-private/template-explorer/src/index.ts#L1-L60) [packages-private/template-explorer/src/options.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages-private/template-explorer/src/options.ts)
- `@vue/compat` is a shipped Vue-2 compatibility build: it builds seven formats, creates `Vue` via `createCompatVue()` with `Vue.compile` attached, and drives per-feature deprecation warnings from the `DeprecationTypes` enum and `deprecationData` table in runtime-core's compat layer. — [packages/vue-compat/package.json](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue-compat/package.json) [packages/vue-compat/src/index.ts#L93-L110](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue-compat/src/index.ts#L93-L110) [packages/runtime-core/src/compat/compatConfig.ts#L13-L160](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/compat/compatConfig.ts#L13-L160)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
