{"record":{"id":"4329a3408d6efefc","repo":"facebook/react","slug":"overridesuspense-not-supported-by-this-renderer","errorCode":null,"errorMessage":"overrideSuspense not supported by this renderer","messagePattern":"overrideSuspense not supported by this renderer","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-devtools-shared/src/backend/legacy/renderer.js","lineNumber":1204,"sourceCode":"\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.\n  };\n\n  function getBestMatchForTrackedPath(): PathMatch | null {\n    // Not implemented.\n    return null;\n  }\n\n  function getPathForElement(id: number): Array<PathFrame> | null {\n    // Not implemented.","sourceCodeStart":1186,"sourceCodeEnd":1222,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-devtools-shared/src/backend/legacy/renderer.js#L1186-L1222","documentation":"The legacy renderer adapter stubs overrideSuspense as a throwing no-op. The 'toggle suspense' debug toggle works by flipping SuspenseComponent fiber state — a React 16.6+ reconciler feature. React 15 has no Suspense, so the backend cannot implement the override and throws.","triggerScenarios":"The DevTools frontend sends the 'overrideSuspense' message — the debug action that forces a Suspense boundary into its fallback (or back) — for a component whose renderer is the legacy (v15) adapter.","commonSituations":"Running suspense-debug toggles against a React 15 app or subtree; multi-root v15/v16 pages; DevTools frontend that fails to hide the toggle for 'outdated' build types due to version skew.","solutions":["Do not use the suspense debug toggle on v15 roots — Suspense requires React 16.6+.","Upgrade the inspected app to a Suspense-capable React version.","Update DevTools so suspense toggles are disabled for legacy renderers.","For embedders: gate 'overrideSuspense' sends on a fiber capability check."],"exampleFix":"// before\nbridge.send('overrideSuspense', {id, rendererID, forceFallback});\n\n// after\nif (typeof renderer.findFiberByHostInstance === 'function') {\n  bridge.send('overrideSuspense', {id, rendererID, forceFallback});\n}","handlingStrategy":"validation","validationCode":"const isFiberRenderer = renderer =>\n  typeof renderer.findFiberByHostInstance === 'function';\nif (isFiberRenderer(renderer)) {\n  bridge.send('overrideSuspense', {id, rendererID, forceFallback});\n}","typeGuard":"function isFiberRenderer(renderer) {\n  return typeof renderer.findFiberByHostInstance === 'function';\n}","tryCatchPattern":"try {\n  bridge.send('overrideSuspense', {id, rendererID, forceFallback});\n} catch (error) {\n  if (/not supported by this renderer/.test(error.message)) return;\n  throw error;\n}","preventionTips":["Only offer suspense toggles when the target renderer is fiber-based (React 16.6+).","Check renderer version before forwarding debug commands.","Keep DevTools and app React versions aligned."],"tags":["devtools","suspense","debug-toggle","legacy-renderer"],"backgroundTag":"unsupported-renderer-feature","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}