AI-consumed reference. Optimized for Claude to read during execution. Human-readable explanation: see docs/architecture/HIERARCHICAL_PLANNING.md or docs/getting-started/ depending on topic.
Vue Expert — Gotchas & Decisions
Use Context7 for full Vue/Nuxt docs.
Key Decisions
decisions[4]{choice,use_when}:
ref vs reactive,"ref for primitives + single values. reactive for objects. Never destructure reactive — loses reactivity"
Pinia vs provide/inject,"Pinia for shared app state. provide/inject for component tree scoping"
Options vs Composition,"Always Composition API with <script setup>. Options only for legacy"
Composables vs mixins,"Always composables (use* functions). Mixins are deprecated pattern"
Gotchas
- Destructuring
reactive()object loses reactivity — usetoRefs()or stick withref() ref()auto-unwraps in template but NOT in JS — use.valuein scriptwatchvswatchEffect: watch needs explicit source, watchEffect auto-tracks. Use watch for old/new comparisoncomputedis readonly — don't assign to it. Use writable computed with get/set if needed<script setup>auto-exposes to template but NOT to parent$refs— usedefineExpose()- Props are readonly — never mutate. Emit event to parent instead
v-for+v-ifon same element:v-ifhas higher priority in Vue 3 (opposite of Vue 2)- Pinia: use
storeToRefs()for destructuring store state/getters. Actions don't need it nextTick()needed after state change to access updated DOM