- Vue – Performance
Making it fast, and knowing whether it was slow. Where re-renders actually come from, `v-once` and `v-memo`, `shallowRef` for a large object you replace rather than edit, why an IntersectionObserver beats a scroll listener, cursor pagination instead of offset, keeping heavy work out of computeds, and reading a flame chart in Vue DevTools before changing anything.
- Vue – Async Components, Suspense and KeepAlive
Not shipping everything on the first load. `defineAsyncComponent` with loading and error components, route-level code splitting and what Vite actually emits, `<Suspense>` and its still-experimental status, and `<KeepAlive>` for the tab or list that should not throw away its state and refetch every time you navigate back to it.
- Vue – Transitions and Teleport
Two small features that solve disproportionately annoying problems. `<Transition>` and the six CSS classes it toggles, `<TransitionGroup>` for a list that gains and loses items — the toast stack — and `<Teleport>`, which renders a modal at the end of `<body>` so it stops being clipped by whatever `overflow` and `z-index` its parent happened to set.
- Vue – Fetching Data from an API
Talking to a backend without scattering `fetch` through thirty components. One module that owns the transport, loading and error state that the UI can actually render, a typed error that separates "the API is down" from "your password is wrong", attaching a JWT and handling a 401 in exactly one place, and the mock implementation that lets the UI be built before the API exists.
- Vue – Forms and Validation
A real form, end to end. Binding every input type, a submit handler that cannot double-fire, disabling the button while a request is in flight, client-side checks and why they are a convenience rather than a guarantee, and — the part tutorials skip — rendering the field errors the server sends back next to the fields they belong to.