Use when working with React View Transitions, including React Canary/Experimental version validation, the ViewTransition component, view-transition-name, startViewTransition, enter/exit/share/gesture transitions, Suspense constraints, list reordering behavior, animation debugging, and React internals related to view transitions.
Use this skill to help implement, debug, explain, or review React View Transitions.
Identify the layer of the problem first:
document.startViewTransition, snapshots, pseudo-elements, or compositing behavior.Validate React channel before recommending or using React's <ViewTransition />:
package.json and the lockfile for both react and react-dom.react@canary + react-dom@canary, or matching Experimental packages, for React's built-in <ViewTransition /> and addTransitionType.<ViewTransition /> unless the current official React docs say otherwise.document.startViewTransition()For app-level implementation:
name={"item-" + id}.ViewTransition; a boundary around the whole list animates the subtree as one layer.className="none" or a resolved class of "none" as an opt-out.For debugging:
<ViewTransition />.view-transition-name values when expecting a share transition.Update flag as a proxy and has known rough edges here.For React internals:
ReactFiberCommitViewTransitions.js, then follow into ReactFiberViewTransitionComponent.js, ReactFiberConfigDOM.js, ReactFiberApplyGesture.js, and ReactFiberWorkLoop.js.<ViewTransition /> as available only in Canary and Experimental channels, not stable React 19.x.react and react-dom are on the same compatible Canary or Experimental channel.startViewTransition() wraps the mutation phase; old-state setup happens before mutation and new-state setup happens after.props.name wins unless the name is "auto"; auto names are assigned lazily at commit time.