Vue.js to React: A Developer's Migration Guide
December 18, 20252 min read
Why I Switched
Not because React is "better" — it's because the job market demanded it. My role at EasyAI was Vue-heavy, but side projects and the broader ecosystem pulled me toward React and Next.js.
The Mental Model Shift
Reactivity: Magic vs Explicit
Vue's reactivity feels magical. You mutate ref.value and the UI updates. React requires you to think in immutable state updates:
// Vue
const count = ref(0);
count.value++; // UI updates automatically
// React
const [count, setCount] = useState(0);
setCount(prev => prev + 1); // Explicit update
Templates vs JSX
Vue's <template> block with v-if, v-for directives feels clean for simple UIs. But JSX's "it's just JavaScript" philosophy shines in complex conditional rendering.
Composition API ≈ Hooks
If you already use Vue 3's Composition API, React hooks will feel familiar:
| Vue 3 | React |
|---|---|
ref() | useState() |
computed() | useMemo() |
watch() | useEffect() |
onMounted() | useEffect(() => {}, []) |
What I Miss from Vue
- Single File Components — HTML, CSS, JS in one file is elegant
- Built-in transitions —
<Transition>component is chef's kiss - Two-way binding —
v-modelis simpler than controlled inputs
What React Does Better
- Ecosystem size — More libraries, more jobs, more content
- Server Components — Next.js RSC is a game-changer
- TypeScript integration — React's TS support feels more natural
Advice for Switchers
Don't try to write Vue in React. Embrace the React way of thinking — components as functions, state as snapshots, effects as synchronization.