facebook/react · error · Error

getProfilingData not supported by this renderer

Error message

getProfilingData not supported by this renderer

What it means

The Flight backend wraps the server-components (Flight/RSC) graph and implements the shared RendererInterface mostly with stubs, because that graph is not inspectable like a client tree. getProfilingData() deliberately throws: profiling is implemented only by the Fiber renderer. agent.js:560 forwards the frontend's profilingData request to any renderer id, so requesting profiling data from the Flight renderer throws instead of returning data.

Source

Thrown at packages/react-devtools-shared/src/backend/flight/renderer.js:188

      return null;
    },
    getSuspenseNodeIDForHostInstance() {
      return null;
    },
    getInstanceAndStyle() {
      return {
        instance: null,
        style: null,
      };
    },
    getOwnersList() {
      return null;
    },
    getPathForElement() {
      return null;
    },
    getProfilingData() {
      throw new Error('getProfilingData not supported by this renderer');
    },
    handleCommitFiberRoot() {},
    handleCommitFiberUnmount() {},
    handlePostCommitFiberRoot() {},
    hasElementWithId() {
      return false;
    },
    inspectElement(
      requestID: number,
      id: number,
      path: Array<string | number> | null,
    ) {
      return {
        id,
        responseID: requestID,
        type: 'not-found',
      };
    },

View on GitHub (pinned to eafeac097b)

Solutions

  1. Profile the client (Fiber) renderer - select it in the renderer dropdown instead of the Flight/Server Components renderer.
  2. In custom frontends, gate profiling start/stop/export on the renderer's capabilities (bundleType/kind or a supportsProfiling flag) before sending getProfilingData for a rendererID.
  3. Update DevTools - newer agent code guards unsupported renderers on this path.
  4. If stock DevTools throws here, file an issue naming the renderer kinds attached.

Example fix

// before (agent-style forwarding, throws for flight)
bridge.send('profilingData', renderers[rendererID].getProfilingData());

// after - only request data from renderers that support profiling
const renderer = renderers[rendererID];
if (renderer != null && renderer.bundleType !== 'flight') {
  bridge.send('profilingData', renderer.getProfilingData());
}
Defensive patterns

Strategy: validation

Validate before calling

// in a custom frontend/agent: gate profiling export on renderer capability
const renderer = renderers[rendererID];
if (renderer != null && supportsProfiling(renderer)) {
  bridge.send('profilingData', renderer.getProfilingData());
}
function supportsProfiling(renderer) {
  // flight backends only implement stubs; only fiber renderers record profiles
  return renderer.bundleType !== 'flight' && renderer.supportsProfiling !== false;
}

Prevention

When it happens

Trigger: Stopping a profiling session or exporting profile data while the rendererID in play belongs to the Flight renderer - apps with server-component graphs (React Native/IO, RSC-heavy web apps) where a flight renderer registers alongside the client renderer and the frontend requests its profiling data.

Common situations: Selecting the server-components renderer in the Profiler; custom frontends that do not gate Profiler tabs per renderer kind; mixed client+flight renderers on one page.

Related errors


AI-assisted analysis of facebook/react@eafeac097b (2026-08-21). Data as JSON: /api/errors/6106231e81f7cb51. Report an issue: GitHub.