The browser snapshots the state right before the change like a screenshot, lets the DOM update however you want, snapshots the new state, and automatically cross-fades between the two. Give two elements the same view-transition-name across the before/after states and the browser pairs and morphs them — position and size included — essentially doing FLIP's math for you.
Beyond SPA state changes, Chrome extended this API to full multi-page navigations between same-origin documents too.
The avatar below morphs position and size automatically, thanks to view-transition-name, every time the layout switches from a list row to a detail view.
When to use
Treat it as progressive enhancement based on browser support — if startViewTransition doesn't exist, fall back to an instant change.