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
- Implement the persistence methods (cloneInstance, createContainerChildSet, appendChildToContainerChildSet, finalizeContainerChildren, ...) in your host config.
- If you don't need persistence, ensure the container isn't driven in persistence mode and that the mutation path is the one used.
- 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
- Persistent renderer authors: implement cloneInstance/createContainerChildSet/appendChildToContainerChildSet/finalizeContainerChildren up front
- Choose mutation vs persistence mode explicitly per renderer
- Add a CI render test that exercises the persistence commit path
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.