diff --git a/packages/react-reconciler/src/ReactFiber.js b/packages/react-reconciler/src/ReactFiber.js index 0af7ffb767bfb..fb2c7347010b6 100644 --- a/packages/react-reconciler/src/ReactFiber.js +++ b/packages/react-reconciler/src/ReactFiber.js @@ -532,10 +532,10 @@ export function createHostRootFiber( mode = NoMode; } - if (enableProfilerTimer && isDevToolsPresent) { - // Always collect profile timings when DevTools are present. - // This enables DevTools to start capturing timing at any point– - // Without some nodes in the tree having empty base times. + if (__DEV__ || (enableProfilerTimer && isDevToolsPresent)) { + // dev: Enable profiling instrumentation by default. + // profile: enabled if DevTools is present or subtree is wrapped in . + // production: disabled. mode |= ProfileMode; } diff --git a/packages/react/src/__tests__/ReactProfiler-test.internal.js b/packages/react/src/__tests__/ReactProfiler-test.internal.js index d51b037c18e4c..a8c00b2b562dc 100644 --- a/packages/react/src/__tests__/ReactProfiler-test.internal.js +++ b/packages/react/src/__tests__/ReactProfiler-test.internal.js @@ -125,6 +125,7 @@ describe(`onRender`, () => { expect(callback).toHaveBeenCalledTimes(1); }); + // @gate !__DEV__ it('does not record times for components outside of Profiler tree', async () => { // Mock the Scheduler module so we can track how many times the current // time is read