pmndrs/react-three-fiber · warning · Error
startGestureTransition is not yet supported in react-three-f
Error message
startGestureTransition is not yet supported in react-three-fiber.
What it means
This error comes from R3F's React custom reconciler host config. React 19 added gesture-transition related host methods (getCurrentGestureOffset / startGestureTransition, PRs #32379/#32786), and R3F explicitly implements getCurrentGestureOffset as a throw because there is no meaningful gesture offset concept for a WebGL scene graph. If React ever calls it (e.g. through a gesture/transition API on a host component), R3F fails loudly rather than returning a wrong value.
Source
Thrown at packages/fiber/src/core/reconciler.tsx:767
hasInstanceAffectedParent: (_oldMeasurement: any, _newMeasurement: any): boolean => false,
// https://github.com/facebook/react/pull/32002
// https://github.com/facebook/react/pull/34486
suspendOnActiveViewTransition(_state: any, _container: any) {},
// https://github.com/facebook/react/pull/32451
// https://github.com/facebook/react/pull/32760
startGestureTransition: () => null,
startViewTransition: () => null,
stopViewTransition(_transition: null) {},
// https://github.com/facebook/react/pull/32038
createViewTransitionInstance: (_name: string): null => null,
// https://github.com/facebook/react/pull/32379
// https://github.com/facebook/react/pull/32786
getCurrentGestureOffset(_provider: null): number {
throw new Error('startGestureTransition is not yet supported in react-three-fiber.')
},
// https://github.com/facebook/react/pull/32500
cloneMutableInstance(instance: any, _keepChildren: any) {
return instance
},
cloneMutableTextInstance(textInstance: any) {
return textInstance
},
cloneRootViewTransitionContainer(_rootContainer: any) {
throw new Error('Not implemented.')
},
removeRootViewTransitionClone(_rootContainer: any, _clone: any) {
throw new Error('Not implemented.')
},
// https://github.com/facebook/react/pull/32465
createFragmentInstance: (_fiber: any): null => null,View on GitHub (pinned to ff3899dbf4)
Solutions
- Avoid calling startGestureTransition or gesture-based View Transition APIs on elements rendered inside <Canvas>; wrap only DOM-rendered content with them.
- Move the content you want to gesture-transition outside the Canvas so it is managed by the DOM host config, which supports these methods.
- If a framework/library triggers it implicitly, pin React to a version where the gesture API is opt-in and not invoked for custom renderers.
- Track the R3F repository for gesture/ViewTransition support and upgrade once implemented.
Example fix
// before
<Canvas>
<div {...startGestureTransitionHandlers} /> {/* transition API applied inside Canvas */}
</Canvas>
// after
<>
<div {...startGestureTransitionHandlers} /> {/* DOM content stays on DOM host */}
<Canvas><Scene /></Canvas>
</> Defensive patterns
Strategy: fallback
Validate before calling
null
Type guard
null
Try / catch
try {
await startGestureTransition(() => updateScene())
} catch (e) {
if (e instanceof Error && e.message.includes('not yet supported in react-three-fiber')) {
// fall back to plain transition without gesture offsets
await updateScene()
} else throw e
} Prevention
- Don't target Canvas-rendered content with React's experimental gesture/view-transition APIs.
- Keep DOM-driven transition surfaces outside <Canvas>.
- Pin React versions whose gesture APIs are strictly opt-in when running canary.
When it happens
Trigger: Only triggered if React's gesture-transition APIs invoke getCurrentGestureOffset on an R3F host instance — e.g. calling experimental startGestureTransition / View Transition-like APIs that query gesture offsets on elements rendered inside <Canvas>. Normal R3F usage (meshes, hooks, regular state transitions) never calls this method.
Common situations: Using experimental React gesture/view-transition APIs while a component tree is rendered by the R3F reconciler; mixing React Native Web or gesture libraries that query host gesture offsets; running a canary React version where these APIs are exercised automatically by a framework abstraction.
Related errors
- `${prefix} ${msg}`
- Timed out after ${timeout}ms.
- R3F: Hooks can only be used within the Canvas component!
- R3F: ${name} is not part of the THREE namespace! Did you for
- R3F: Primitives without 'object' are invalid!
AI-assisted analysis of pmndrs/react-three-fiber@ff3899dbf4 (2026-08-28).
Data as JSON: /api/errors/73280d63a800bb3d.
Report an issue: GitHub.