TL;DR
React 19.3 (9 September 2026) made <ViewTransition> stable, and Next.js 16.4 ships it. In the App Router every navigation is a Transition, so boundaries animate with no extra code.
An unconfigured boundary animates on every trigger. Start from default="none" and opt into the triggers you want.
Follow the Suspense rule: fallbacks appear instantly, the reveal animates, cached content never animates. update="auto" default="none" around <Suspense> does all three.
A DOM node above a boundary, a boundary in a layout, or a shared pair without share all disable animations silently.
Reduced motion and clicks during animations are your responsibility, not React's.
Most of the View Transition bugs that ship in React apps over the next year will come from animating too much, not too little. React 19.3 made <ViewTransition> stable, Next.js 16.4 bundles it, and the default behaviour is generous: an unconfigured boundary cross-fades on every Transition that touches it.…