facebook/react · error · Error

Not implemented.

Error message

Not implemented.

What it means

react-art stubs most of the View Transition host-config surface as no-ops because it renders to a canvas, not to DOM views. cloneRootViewTransitionContainer cannot be a no-op: React expects a real clone of the container element when it prepares a root-level view transition, and ART has nothing to clone, so it throws 'Not implemented.' instead of silently corrupting the transition.

Source

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

export function restoreViewTransitionName(instance, props) {
  // Noop
}

export function cancelViewTransitionName(instance, name, props) {
  // Noop
}

export function cancelRootViewTransitionName(rootContainer) {
  // Noop
}

export function restoreRootViewTransitionName(rootContainer) {
  // Noop
}

export function cloneRootViewTransitionContainer(rootContainer) {
  throw new Error('Not implemented.');
}

export function removeRootViewTransitionClone(rootContainer, clone) {
  throw new Error('Not implemented.');
}

export type InstanceMeasurement = null;

export function measureInstance(instance) {
  return null;
}

export function measureClonedInstance(instance) {
  return null;
}

export function wasInstanceInViewport(measurement): boolean {
  return true;

View on GitHub (pinned to eafeac097b)

Solutions

  1. Do not use ViewTransition around react-art content - animate ART shape properties (fill, opacity, transform) directly instead
  2. Move the ViewTransition boundary so it wraps only DOM-rendered siblings, leaving the ART <Surface> outside it
  3. Treat the <Surface> itself as the animation unit: it backs onto a real DOM node, so apply CSS transitions to that container element

Example fix

// before
<ViewTransition>
  <Surface width={300} height={300}>...</Surface>
</ViewTransition>

// after
<div className="surface-wrap" style={{transition: 'opacity 200ms'}}>
  <Surface width={300} height={300}>...</Surface>
</div>
Defensive patterns

Strategy: fallback

Validate before calling

// Gate the feature by renderer before mounting, so ViewTransition never wraps ART roots
const isDomRenderer = rendererName === 'dom';
const tree = isDomRenderer
  ? <ViewTransition>{children}</ViewTransition>
  : children; // ART path: no ViewTransition, animate the container instead

Try / catch

Wrap the ART mount in an error boundary that, on this Error (match /Not implemented/), re-renders the same children without the ViewTransition wrapper - a graceful degradation path for library code you do not control.

Prevention

When it happens

Trigger: Triggering a ViewTransition (e.g. <ViewTransition> or the document-preparing transition APIs) whose root container is a react-art Surface; React internally calling cloneRootViewTransitionContainer on an ART root during the transition start/prepare phase.

Common situations: Experimenting with the ViewTransition API in an app that renders through react-art; libraries that wrap arbitrary renderer roots in ViewTransition; enabling experimental view-transition flags globally and having them apply to ART roots.

Related errors


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