react/react · error · Error

startGestureTransition is not yet supported in react-art.

Error message

startGestureTransition is not yet supported in react-art.

What it means

getCurrentGestureOffset is part of the gesture-transition host-config surface. react-art sets GestureTimeline to null and throws here because gesture-driven view transitions are not supported on the ART renderer. Any feature that reads the current gesture offset while rendering to ART will hit this.

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 22e4f993c7)

Solutions

  1. Do not use gesture transitions in react-art trees — ART does not implement them.
  2. Gate gesture-transition code so it only runs for DOM-rendered output.
  3. If required, implement getCurrentGestureOffset (and GestureTimeline) for the ART renderer.

Example fix

// before: gesture transition active in ART tree
startGestureTransition(...);
// later: getCurrentGestureOffset(...) -> throws

// after: disable gesture transitions for ART
// (do not call startGestureTransition when rendering to ART)
Defensive patterns

Strategy: validation

Validate before calling

function supportsGestureTransitions(renderer: 'art'|'dom'): boolean { return renderer === 'dom'; }
if (!supportsGestureTransitions(currentRenderer)) {
  // do not call startGestureTransition / getCurrentGestureOffset
}

Type guard

function isGestureCapable(hostConfig: any): boolean {
  // ART throws in getCurrentGestureOffset; capability-check before calling
  try { return hostConfig.GestureTimeline != null /* ART sets it to null */ === false; } catch { return false; }
}

Prevention

When it happens

Trigger: Using startGestureTransition / gesture-based view transitions in a tree rendered by react-art; a reconciler or component that calls getCurrentGestureOffset on the ART host config; sharing gesture-transition code between DOM and ART renderers.

Common situations: Adopting the experimental gesture transition APIs in an ART-rendered app; component libraries that unconditionally wire up gesture transitions; reconciler upgrades that call getCurrentGestureOffset more eagerly.

Related errors


AI-assisted analysis of react/react@22e4f993c7 (2026-08-12). Data as JSON: /api/errors/a0c4ec0bd04be317. Report an issue: GitHub.