Vue 3 with Nuxt is the framework that lets you ship a marketing landing page in a morning and a tangled mess of half-converted Options API components, prop mutations, and SSR hydration mismatches by the end of the quarter. The first regression is almost always a component that was started in Composition API with <script setup> , then "fixed" by someone pasting an Options API data() block underneath because that was the syntax they remembered β two reactivity systems in the same file, props read from this.foo in one method and from the props argument in another, lifecycle hooks split between mounted() and onMounted() , and a watch defined in both watch: and watchEffect() that fires twice on every change.β¦