facebook/react · error · Error

startGestureTransition is not yet supported in react-art.

Error message

startGestureTransition is not yet supported in react-art.

What it means

Gesture-driven view transitions require the host renderer to track an interactive gesture timeline. react-art declares GestureTimeline as null and implements getCurrentGestureOffset as a hard throw so that any accidental use of startGestureTransition on ART content fails loudly rather than returning a wrong offset. The error names the unsupported feature: startGestureTransition is not yet supported in react-art.

Source

Thrown at packages/react-art/src/ReactFiberConfigART.js:570

export function addViewTransitionFinishedListener(
  transition: RunningViewTransition,
  callback: () => void,
) {
  callback();
}

export type ViewTransitionInstance = null | {name: string, ...};

export function createViewTransitionInstance(
  name: string,
): ViewTransitionInstance {
  return null;
}

export type GestureTimeline = null;

export function getCurrentGestureOffset(provider: GestureTimeline): number {
  throw new Error('startGestureTransition is not yet supported in react-art.');
}

export function clearContainer(container) {
  // TODO Implement this
}

export function getInstanceFromNode(node): null {
  return null;
}

export function beforeActiveInstanceBlur(internalInstanceHandle: Object) {
  // noop
}

export function afterActiveInstanceBlur() {
  // noop
}

View on GitHub (pinned to eafeac097b)

Solutions

  1. Use gesture transitions only on renderers that implement them (DOM with supporting browsers, native renderers)
  2. For ART content, drive gestures manually with pointer events and mutate shape props/state to animate
  3. Restructure so the gesture boundary wraps the DOM container of the Surface, not the ART tree itself

Example fix

// before
startGestureTransition(gestureTimeline); // timeline rooted in react-art

// after
// drive the canvas manually:
const onPointerMove = e => setOffset(e.clientX - startX);
<Surface><Group x={offset}>...</Group></Surface>
Defensive patterns

Strategy: fallback

Validate before calling

// Detect gesture support before using startGestureTransition
const supportsGestureTransitions =
  typeof startGestureTransition === 'function' && rendererName === 'dom';
const handler = supportsGestureTransitions
  ? startGestureTransition(timeline)
  : trackPointerManually(onOffsetChange);

Try / catch

Wrap gesture setup in try/catch matching /startGestureTransition is not yet supported/ and fall back to pointer-event-driven manual animation of the ART shapes.

Prevention

When it happens

Trigger: Calling startGestureTransition (gesture-driven ViewTransition API) on a transition rooted in react-art content, or React querying getCurrentGestureOffset for an ART root while tracking a gesture; also hit directly if you call the host-config export yourself.

Common situations: Porting gesture-transition demos (built for DOM/Android renderers) to canvas-rendered ART trees; enabling gesture flags globally; sharing transition components between renderers that support gestures and ART which does not.

Related errors


AI-assisted analysis of facebook/react@eafeac097b (2026-08-21). Data as JSON: /api/errors/8cf03b2b97818894. Report an issue: GitHub.