{"record":{"id":"8cf03b2b97818894","repo":"facebook/react","slug":"startgesturetransition-is-not-yet-supported-in-rea","errorCode":null,"errorMessage":"startGestureTransition is not yet supported in react-art.","messagePattern":"startGestureTransition is not yet supported in react-art\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-art/src/ReactFiberConfigART.js","lineNumber":570,"sourceCode":"export function addViewTransitionFinishedListener(\n  transition: RunningViewTransition,\n  callback: () => void,\n) {\n  callback();\n}\n\nexport type ViewTransitionInstance = null | {name: string, ...};\n\nexport function createViewTransitionInstance(\n  name: string,\n): ViewTransitionInstance {\n  return null;\n}\n\nexport type GestureTimeline = null;\n\nexport function getCurrentGestureOffset(provider: GestureTimeline): number {\n  throw new Error('startGestureTransition is not yet supported in react-art.');\n}\n\nexport function clearContainer(container) {\n  // TODO Implement this\n}\n\nexport function getInstanceFromNode(node): null {\n  return null;\n}\n\nexport function beforeActiveInstanceBlur(internalInstanceHandle: Object) {\n  // noop\n}\n\nexport function afterActiveInstanceBlur() {\n  // noop\n}\n","sourceCodeStart":552,"sourceCodeEnd":588,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-art/src/ReactFiberConfigART.js#L552-L588","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use gesture transitions only on renderers that implement them (DOM with supporting browsers, native renderers)","For ART content, drive gestures manually with pointer events and mutate shape props/state to animate","Restructure so the gesture boundary wraps the DOM container of the Surface, not the ART tree itself"],"exampleFix":"// before\nstartGestureTransition(gestureTimeline); // timeline rooted in react-art\n\n// after\n// drive the canvas manually:\nconst onPointerMove = e => setOffset(e.clientX - startX);\n<Surface><Group x={offset}>...</Group></Surface>","handlingStrategy":"fallback","validationCode":"// Detect gesture support before using startGestureTransition\nconst supportsGestureTransitions =\n  typeof startGestureTransition === 'function' && rendererName === 'dom';\nconst handler = supportsGestureTransitions\n  ? startGestureTransition(timeline)\n  : trackPointerManually(onOffsetChange);","typeGuard":null,"tryCatchPattern":"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.","preventionTips":["Capability-check renderer features before using experimental gesture APIs","Drive ART animations with pointer events and state, not renderer gesture timelines","Keep ART surfaces out of gesture-transition roots"],"tags":["react-art","gesture","view-transitions","not-implemented","host-config"],"backgroundTag":"renderer-api-not-implemented","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}