Roadmap › Vue.js 3 (with Pinia, Vue Router & Nuxt basics) › Module: Quality and Performance
Lessons in this course (17)

17. Nuxt and migrating Vue 2 → Vue 3

AdvancedMediumLesson 17 of 17

Nuxt (Nuxt 4, 2025): file-based routing (pages/), layouts, auto-imports of components and composables, SSR/SSG/hybrid rendering per route (routeRules), server API routes (server/api on the Nitro engine), useFetch/useAsyncData with SSR-friendly data fetching, modules ecosystem (Pinia, Tailwind, i18n, content). Deploy to Node, serverless or edge.

Vue 2 → 3 migration (Vue 2 is EOL since Dec 2023):

  • Use the migration build (@vue/compat) to run Vue 2 code on Vue 3 with deprecation warnings, fix them incrementally, then remove compat.
  • Breaking changes: new Vue() → createApp(); global API (Vue.use, Vue.component) → app instance; filters removed (use methods/computed); v-model on components uses modelValue/update:modelValue; $listeners merged into $attrs; v-if priority over v-for; beforeDestroy/destroyed → beforeUnmount/unmounted; $on/$off removed (no event bus); functional components simplified; .sync replaced by v-model:prop.
  • Upgrade ecosystem: Vue Router 4, Pinia (or Vuex 4), Vuetify 3/other UI library versions, Vite instead of Vue CLI.
  • Vue 2.7 can be an intermediate step (Composition API available in Vue 2).