facebook/react · error · Error
handleCommitFiberUnmount not supported by this renderer
Error message
handleCommitFiberUnmount not supported by this renderer
What it means
The legacy renderer adapter stubs handleCommitFiberUnmount as a throwing no-op: fiber unmount notifications (__REACT_DEVTOOLS_GLOBAL_HOOK__.onCommitFiberUnmount) are a v16+ reconciler capability. If this throws, an unmount notification meant for a fiber renderer was dispatched to the legacy (stack) renderer interface instead.
Source
Thrown at packages/react-devtools-shared/src/backend/legacy/renderer.js:1195
break;
case 'state':
setInObject(publicInstance.state, path, value);
forceUpdate(publicInstance);
break;
}
}
}
}
// v16+ only features
const getProfilingData = () => {
throw new Error('getProfilingData not supported by this renderer');
};
const handleCommitFiberRoot = () => {
throw new Error('handleCommitFiberRoot not supported by this renderer');
};
const handleCommitFiberUnmount = () => {
throw new Error('handleCommitFiberUnmount not supported by this renderer');
};
const handlePostCommitFiberRoot = () => {
throw new Error('handlePostCommitFiberRoot not supported by this renderer');
};
const overrideError = () => {
throw new Error('overrideError not supported by this renderer');
};
const overrideSuspense = () => {
throw new Error('overrideSuspense not supported by this renderer');
};
const overrideSuspenseMilestone = () => {
throw new Error('overrideSuspenseMilestone not supported by this renderer');
};
const startProfiling = () => {
// Do not throw, since this would break a multi-root scenario where v15 and v16 were both present.
};
const stopProfiling = () => {
// Do not throw, since this would break a multi-root scenario where v15 and v16 were both present.View on GitHub (pinned to eafeac097b)
Solutions
- Deduplicate React copies so each renderer registers exactly once with the DevTools hook.
- Align DevTools frontend and backend versions.
- Upgrade the v15 renderer/app to fiber.
- For embedders: guard with a fiber capability check (findFiberByHostInstance) before calling handleCommitFiberUnmount.
Example fix
// before
rendererInterface.handleCommitFiberUnmount(fiber);
// after
if (typeof renderer.findFiberByHostInstance === 'function') {
rendererInterface.handleCommitFiberUnmount(fiber);
} Defensive patterns
Strategy: validation
Validate before calling
const isFiberRenderer = renderer =>
typeof renderer.findFiberByHostInstance === 'function';
if (isFiberRenderer(renderer)) {
rendererInterface.handleCommitFiberUnmount(fiber);
} Type guard
function isFiberRenderer(renderer) {
return typeof renderer.findFiberByHostInstance === 'function';
} Try / catch
try {
rendererInterface.handleCommitFiberUnmount(fiber);
} catch (error) {
if (/not supported by this renderer/.test(error.message)) return;
throw error;
} Prevention
- Route unmount notifications only to interfaces created for fiber renderers.
- Keep one React copy per page to avoid id mixups.
- Feature-detect before calling fiber-only backend methods.
When it happens
Trigger: A caller invokes rendererInterface.handleCommitFiberUnmount(fiber) on an interface built by the legacy adapter — typically via hook.onCommitFiberUnmount with a mismatched renderer id, or custom hook-protocol code targeting a v15 renderer.
Common situations: Mixed React 15 + 16+ multi-root pages where ids cross; duplicate React installs; custom renderers that mimic the DevTools fiber hook protocol; extension/backend version skew.
Related errors
- handleCommitFiberRoot not supported by this renderer
- Hooks not supported by this renderer
- getProfilingData not supported by this renderer
- handlePostCommitFiberRoot not supported by this renderer
- Unknown Fiber. Needs to be a function component to inspect h
AI-assisted analysis of facebook/react@eafeac097b (2026-08-21).
Data as JSON: /api/errors/beb9490c3f458cba.
Report an issue: GitHub.