Vue
On this page8
- Core
- Reactivity
- Components
- Rendering and internals
- Application concerns
- Comparison
- React to Vue cheat sheet
- Cross-references
Vue
Baseline: Vue 3.5 stable, 3.6 in RC (Vapor Mode). See Stack baseline — 2026-2027.
Full Vue coverage to the same depth as React. Written assuming React fluency where the analogue helps, but it does not depend on it.
Core
Reactivity
Components
| File |
Covers |
| Props, Emits, and v-model |
the component contract, defineModel |
| Slots and Scoped Slots |
composition through markup |
| provide / inject — Dependency Injection |
dependency injection, typed injection keys |
| <Teleport>, <Suspense>, Async Components, Custom Directives |
<Teleport>, <Suspense>, async components |
| Composables and VueUse |
logic reuse, conventions, VueUse |
Rendering and internals
| File |
Covers |
| The Vue compiler and rendering pipeline |
SFC compilation, patch flags, static hoisting, render functions |
| Vue versions, Vapor Mode, and what changed recently |
3.4/3.5/3.6, Vapor Mode, alien-signals, Vue 2 migration |
| Vue Performance — v-memo, shallowRef, markRaw, defineAsyncComponent |
v-memo, shallowRef, markRaw, async components |
Application concerns
| File |
Covers |
| Vue Router |
routing, guards, lazy routes, data loaders |
| Pinia (and Where Vuex Still Appears) |
state management (and where Vuex still appears) |
| Data fetching in Vue |
TanStack Query, Pinia Colada, Nuxt’s useAsyncData |
| Forms and validation |
v-model depth, VeeValidate, schema validation |
| Nuxt — SSR, SSG, ISR, Server Routes |
SSR, SSG, ISR, server routes |
| TypeScript with Vue |
typed props, emits, generics, vue-tsc |
| Vue component libraries |
Vuetify, PrimeVue, Nuxt UI, Reka UI, headless versus styled |
| Testing — Vue Test Utils + Vitest |
Vue Test Utils and Vitest |
Comparison
| File |
Covers |
| Vue versus React |
the design differences and how to answer “which would you choose” |
React to Vue cheat sheet
| React |
Vue 3 |
useState |
ref (use it for objects too) |
useMemo |
computed |
useEffect |
watchEffect (auto-track) or watch (explicit) |
useRef (DOM) |
useTemplateRef |
useContext |
provide / inject |
children prop |
default slot <slot /> |
| render prop |
scoped slot |
forwardRef |
template ref + defineExpose |
| fragments |
<template> |
React.lazy + <Suspense> |
defineAsyncComponent + <Suspense> |
createPortal |
<Teleport> |
| Redux / Zustand |
Pinia |
| custom hooks |
composables |
| React Router |
Vue Router (official) |
| Next.js |
Nuxt (official) |
| React Compiler |
not needed — reactivity is fine-grained already |
| controlled inputs |
v-model |
The genuinely new ideas coming from React: reactivity is automatic via Proxy rather than re-run-and-diff, you mutate state directly, there are no dependency arrays, slots are the composition primitive, and the SFC keeps template, logic and scoped styles in one file.
Cross-references
Contents
24
- Vue: the mental model 5
- Vue Reactivity Internals — Proxy, track/trigger, Effects
- ref vs reactive vs shallowRef / shallowReactive
- computed vs watch vs watchEffect
- Composition API vs Options API (and Migration)
- Lifecycle Hooks (Composition + Options Side by Side)
- Props, Emits, and v-model
- Slots and Scoped Slots
- provide / inject — Dependency Injection
- Pinia (and Where Vuex Still Appears)
- Nuxt — SSR, SSG, ISR, Server Routes
- <Teleport>, <Suspense>, Async Components, Custom Directives
- Vue Performance — v-memo, shallowRef, markRaw, defineAsyncComponent
- Testing — Vue Test Utils + Vitest
- Vue Router 5
- Composables and VueUse 5
- TypeScript with Vue 5
- Template syntax and directives 5
- The Vue compiler and rendering pipeline 5
- Vue versions, Vapor Mode, and what changed recently 5
- Forms and validation 5
- Vue component libraries 5
- Data fetching in Vue 5
- Vue versus React 5