Vue's single-file components keep template, script, and style in one readable file, which shortens onboarding for teams that aren't full-time frontend specialists. The Composition API gives the same fine-grained control as React hooks without the dependency-array footguns, and Nuxt's conventions (file routing, auto-imports, server routes) mean less boilerplate per feature. We reach for React when the hiring pool or an existing ecosystem makes the case — for content sites, dashboards, and internal tools, Vue often ships faster with fewer decisions.
Composition API with `<script setup>`, by default, on every new project. It composes better across components via composables, gives full TypeScript inference, and is what Vue 3's own ecosystem (Nuxt, Pinia, VueUse) is built around. Options API is still fully supported in Vue 3 — we reach for it mainly on legacy Vue 2 work, or the rare new component where its structure helps a less experienced contributor.
Nuxt for anything that needs SSR, SSG, SEO, or server routes — which covers most product surfaces and content sites. Plain Vite + Vue Router for SPAs that live behind auth, like internal admin tools, where there's no SEO requirement and the extra server runtime isn't buying anything. We pick per surface, not per project.
Pinia is the official Vue store and the only one we reach for — it replaced Vuex, has first-class TypeScript support, devtools time-travel debugging, and a flat store API with no mutations boilerplate. For server state (API data, caching, refetching) we layer TanStack Query on top rather than stuffing it into a Pinia store.
Yes. Vue 2 reached end-of-life in December 2023, so this is common work. We start with the official migration build to flag breaking changes, convert Options API components to Composition API incrementally rather than in one pass, and swap Vuex for Pinia and vue-router 3 for vue-router 4 as part of the same effort. No big-bang rewrites.
Vitest with Vue Test Utils for unit and component tests — Vite-native, so it shares config with the app and runs fast. Playwright for end-to-end flows across browsers, axe-core for accessibility checks. CI runs the full suite on every PR; nothing ships if the suite is red.
10 — Start
Let's build something worth shipping.
Two-week diagnostic, four-week MVP, twelve-week ground-up. Bring the brief — we'll send a plan, not a pitch deck.