{"record":{"id":"c6245c3e44f79070","repo":"facebook/react","slug":"getprofilingdata-not-supported-by-this-renderer-c6245c","errorCode":null,"errorMessage":"getProfilingData not supported by this renderer","messagePattern":"getProfilingData not supported by this renderer","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-devtools-shared/src/backend/legacy/renderer.js","lineNumber":1189,"sourceCode":"            const element = internalInstance._currentElement;\n            internalInstance._currentElement = {\n              ...element,\n              props: copyWithSet(element.props, path, value),\n            };\n            forceUpdate(publicInstance);\n            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');","sourceCodeStart":1171,"sourceCodeEnd":1207,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-devtools-shared/src/backend/legacy/renderer.js#L1171-L1207","documentation":"The legacy (React <= 15) renderer adapter stubs getProfilingData as a throwing no-op because the stack reconciler cannot capture per-commit profiling data; profiling export requires the fiber reconciler (v16+) and the onCommitFiberRoot instrumentation that comes with it. Hitting it means a profiling-export request was routed to a legacy renderer.","triggerScenarios":"The DevTools frontend sends the 'getProfilingData' request (triggered by saving/exporting a recorded profile) for a rendererID whose rendererInterface was created by the legacy adapter in packages/react-devtools-shared/src/backend/legacy/renderer.js.","commonSituations":"User records a session on a page that also mounts a React 15 root, then exports; DevTools extension/backend version skew after a React downgrade; mixed v15/v16 multi-root apps where the wrong rendererID is selected.","solutions":["Export profiles recorded from a React 16.8+ root; v15 stack roots cannot produce profiling data.","Upgrade the app off React 15 so the fiber-based Profiler pipeline is available.","Update DevTools so the export UI is disabled for renderers whose build type is 'outdated'.","For embedders: verify the renderer is fiber-based (findFiberByHostInstance exists or version >= 16) before calling getProfilingData()."],"exampleFix":"// before\nconst data = store.getProfilingData(rendererID);\n\n// after — only fiber renderers support profiling export\nconst renderer = hook.renderers.get(rendererID);\nif (renderer != null && typeof renderer.findFiberByHostInstance === 'function') {\n  const data = store.getProfilingData(rendererID);\n} else {\n  console.warn('Profiling export is not supported by this renderer');\n}","handlingStrategy":"validation","validationCode":"const isFiberRenderer = renderer =>\n  typeof renderer.findFiberByHostInstance === 'function';\nconst renderer = hook.renderers.get(rendererID);\nif (renderer != null && isFiberRenderer(renderer)) {\n  const data = getProfilingData(rendererID);\n}","typeGuard":"function canProfile(renderer) {\n  return typeof renderer.findFiberByHostInstance === 'function';\n}","tryCatchPattern":"try {\n  const data = getProfilingData(rendererID);\n} catch (error) {\n  if (/not supported by this renderer/.test(error.message)) {\n    return null; // profiling unavailable on this renderer\n  }\n  throw error;\n}","preventionTips":["Disable profile-export UI for renderers whose build type is 'outdated'.","Record and export profiles per-renderer, not across all attached roots blindly.","Feature-check the renderer before requesting profiling data."],"tags":["devtools","profiling","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"}