{"record":{"id":"beb9490c3f458cba","repo":"facebook/react","slug":"handlecommitfiberunmount-not-supported-by-this-ren","errorCode":null,"errorMessage":"handleCommitFiberUnmount not supported by this renderer","messagePattern":"handleCommitFiberUnmount not supported by this renderer","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-devtools-shared/src/backend/legacy/renderer.js","lineNumber":1195,"sourceCode":"            break;\n          case 'state':\n            setInObject(publicInstance.state, path, value);\n            forceUpdate(publicInstance);\n            break;\n        }\n      }\n    }\n  }\n\n  // v16+ only features\n  const getProfilingData = () => {\n    throw new Error('getProfilingData not supported by this renderer');\n  };\n  const handleCommitFiberRoot = () => {\n    throw new Error('handleCommitFiberRoot not supported by this renderer');\n  };\n  const handleCommitFiberUnmount = () => {\n    throw new Error('handleCommitFiberUnmount not supported by this renderer');\n  };\n  const handlePostCommitFiberRoot = () => {\n    throw new Error('handlePostCommitFiberRoot not supported by this renderer');\n  };\n  const overrideError = () => {\n    throw new Error('overrideError not supported by this renderer');\n  };\n  const overrideSuspense = () => {\n    throw new Error('overrideSuspense not supported by this renderer');\n  };\n  const overrideSuspenseMilestone = () => {\n    throw new Error('overrideSuspenseMilestone not supported by this renderer');\n  };\n  const startProfiling = () => {\n    // Do not throw, since this would break a multi-root scenario where v15 and v16 were both present.\n  };\n  const stopProfiling = () => {\n    // Do not throw, since this would break a multi-root scenario where v15 and v16 were both present.","sourceCodeStart":1177,"sourceCodeEnd":1213,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-devtools-shared/src/backend/legacy/renderer.js#L1177-L1213","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nrendererInterface.handleCommitFiberUnmount(fiber);\n\n// after\nif (typeof renderer.findFiberByHostInstance === 'function') {\n  rendererInterface.handleCommitFiberUnmount(fiber);\n}","handlingStrategy":"validation","validationCode":"const isFiberRenderer = renderer =>\n  typeof renderer.findFiberByHostInstance === 'function';\nif (isFiberRenderer(renderer)) {\n  rendererInterface.handleCommitFiberUnmount(fiber);\n}","typeGuard":"function isFiberRenderer(renderer) {\n  return typeof renderer.findFiberByHostInstance === 'function';\n}","tryCatchPattern":"try {\n  rendererInterface.handleCommitFiberUnmount(fiber);\n} catch (error) {\n  if (/not supported by this renderer/.test(error.message)) return;\n  throw error;\n}","preventionTips":["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."],"tags":["devtools","fiber","unmount","legacy-renderer","react-15"],"backgroundTag":"unsupported-renderer-feature","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}