facebook/react · error · Error

270

270

Error message

The current renderer does not support persistence. This error is likely caused by a bug in React. Please file an issue.

What it means

Renderers that don't produce persistent output re-export ReactFiberConfigWithNoPersistence: cloneInstance, createContainerChildSet, appendChildToContainerChildSet, finalizeContainerChildren and friends are throwing shims, with `supportsPersistence = false`. React only calls these when running a container in persistence mode (renderer produces an immutable new tree instead of mutating), so this error means a persistent commit ran against a config without those hooks.

Source

Thrown at packages/react-reconciler/src/ReactFiberConfigWithNoPersistence.js:14

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

// Renderers that don't support persistence
// can re-export everything from this module.

function shim(...args: any): empty {
  throw new Error(
    'The current renderer does not support persistence. ' +
      'This error is likely caused by a bug in React. ' +
      'Please file an issue.',
  );
}

// Persistence (when unsupported)
export const supportsPersistence = false;
export const cloneInstance = shim;
export const createContainerChildSet = shim;
export const appendChildToContainerChildSet = shim;
export const finalizeContainerChildren = shim;
export const replaceContainerChildren = shim;
export const cloneHiddenInstance = shim;
export const cloneHiddenTextInstance = shim;

View on GitHub (pinned to eafeac097b)

Solutions

  1. Implement the persistence methods (cloneInstance, createContainerChildSet, appendChildToContainerChildSet, finalizeContainerChildren, ...) in your host config.
  2. If you don't need persistence, ensure the container isn't driven in persistence mode and that the mutation path is the one used.
  3. Verify which host config file your build resolves — mis-aliasing is the most common cause.

Example fix

// before: persistent renderer without hooks
export * from 'react-reconciler/src/ReactFiberConfigWithNoPersistence';

// after: implement persistence
export const supportsPersistence = true;
export function createContainerChildSet(container) {
  return {children: []};
}
export function appendChildToContainerChildSet(childSet, child) {
  childSet.children.push(child);
}
export function finalizeContainerChildren(container, childSet) {
  container.finalChildren = childSet.children;
}
Defensive patterns

Strategy: validation

Validate before calling

// Renderer smoke test for persistence mode: force one persistent commit in CI
const container = Reconciler.createContainer(root, 1 /* persisting root */, null, false, null);
Reconciler.updateContainer(<App />, container, null, () => checkOutput(container));

Prevention

When it happens

Trigger: Creating/committing a container in persistence mode while the resolved host config re-exports NoPersistence — e.g. a custom persistent renderer whose config was misconfigured, or a mis-aliased host config.

Common situations: Building persistent custom renderers (build-to-string / scene-graph style) and forgetting to implement the persistence hooks; or wiring the wrong host config into jest/bundler aliases.

Related errors


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