diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
index ede1126863f5f..b56d36b626a76 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationSpecialTypes-test.js
@@ -73,9 +73,9 @@ describe('ReactDOMServerIntegration', () => {
itRenders('a Profiler component and its children', async render => {
const element = await render(
-
+
Test
- ,
+ ,
);
const parent = element.parentNode;
const div = parent.childNodes[0];
diff --git a/packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js b/packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js
index 2080488a2447d..c135cb221a860 100644
--- a/packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js
+++ b/packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js
@@ -391,9 +391,9 @@ describe('ReactDOMServerHydration', () => {
it('should be able to render and hydrate Profiler components', () => {
const callback = jest.fn();
const markup = (
-
+
Hi
-
+
);
const element = document.createElement('div');
diff --git a/packages/react-is/src/__tests__/ReactIs-test.js b/packages/react-is/src/__tests__/ReactIs-test.js
index 9838096d3a5d4..4889d0f74f313 100644
--- a/packages/react-is/src/__tests__/ReactIs-test.js
+++ b/packages/react-is/src/__tests__/ReactIs-test.js
@@ -182,14 +182,12 @@ describe('ReactIs', () => {
it('should identify profile root', () => {
expect(
- ReactIs.typeOf(),
+ ReactIs.typeOf(),
).toBe(ReactIs.Profiler);
expect(
- ReactIs.isProfiler(
- ,
- ),
+ ReactIs.isProfiler(),
).toBe(true);
- expect(ReactIs.isProfiler({type: ReactIs.unstable_Profiler})).toBe(false);
+ expect(ReactIs.isProfiler({type: ReactIs.Profiler})).toBe(false);
expect(ReactIs.isProfiler()).toBe(false);
expect(ReactIs.isProfiler(
)).toBe(false);
});
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js
index a854ec7869d2d..0b460675d2721 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.internal.js
@@ -191,7 +191,7 @@ describe('ReactDebugFiberPerf', () => {
it('does not include ConcurrentMode, StrictMode, or Profiler components in measurements', () => {
ReactNoop.render(
-
+
@@ -199,7 +199,7 @@ describe('ReactDebugFiberPerf', () => {
- ,
+ ,
);
addComment('Mount');
expect(Scheduler).toFlushWithoutYielding();
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
index fdd2b717aae37..bb838c558a765 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
@@ -31,7 +31,7 @@ describe('ReactSuspensePlaceholder', () => {
Scheduler = require('scheduler');
ReactCache = require('react-cache');
- Profiler = React.unstable_Profiler;
+ Profiler = React.Profiler;
Suspense = React.Suspense;
TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
diff --git a/packages/react-test-renderer/src/__tests__/ReactShallowRenderer-test.js b/packages/react-test-renderer/src/__tests__/ReactShallowRenderer-test.js
index 4332a60a028f7..eb6d3d0de08ad 100644
--- a/packages/react-test-renderer/src/__tests__/ReactShallowRenderer-test.js
+++ b/packages/react-test-renderer/src/__tests__/ReactShallowRenderer-test.js
@@ -234,12 +234,12 @@ describe('ReactShallowRenderer', () => {
class SomeComponent extends React.Component {
render() {
return (
-
+
-
+
);
}
}
@@ -247,7 +247,7 @@ describe('ReactShallowRenderer', () => {
const shallowRenderer = createRenderer();
const result = shallowRenderer.render();
- expect(result.type).toBe(React.unstable_Profiler);
+ expect(result.type).toBe(React.Profiler);
expect(result.props.children).toEqual(
diff --git a/packages/react-test-renderer/src/__tests__/ReactShallowRendererMemo-test.js b/packages/react-test-renderer/src/__tests__/ReactShallowRendererMemo-test.js
index 839524661459f..f9a08a1790483 100644
--- a/packages/react-test-renderer/src/__tests__/ReactShallowRendererMemo-test.js
+++ b/packages/react-test-renderer/src/__tests__/ReactShallowRendererMemo-test.js
@@ -226,12 +226,12 @@ describe('ReactShallowRendererMemo', () => {
class SomeComponent extends React.Component {
render() {
return (
-
+
-
+
);
}
},
@@ -240,7 +240,7 @@ describe('ReactShallowRendererMemo', () => {
const shallowRenderer = createRenderer();
const result = shallowRenderer.render(
);
- expect(result.type).toBe(React.unstable_Profiler);
+ expect(result.type).toBe(React.Profiler);
expect(result.props.children).toEqual(
diff --git a/packages/react-test-renderer/src/__tests__/ReactTestRendererTraversal-test.js b/packages/react-test-renderer/src/__tests__/ReactTestRendererTraversal-test.js
index b315d0159eb09..bb20669a9263d 100644
--- a/packages/react-test-renderer/src/__tests__/ReactTestRendererTraversal-test.js
+++ b/packages/react-test-renderer/src/__tests__/ReactTestRendererTraversal-test.js
@@ -39,9 +39,9 @@ describe('ReactTestRendererTraversal', () => {
-
{}}>
+ {}}>
-
+
diff --git a/packages/react/src/React.js b/packages/react/src/React.js
index 78f72791eb023..a008fa96378c2 100644
--- a/packages/react/src/React.js
+++ b/packages/react/src/React.js
@@ -77,6 +77,7 @@ const React = {
useState,
Fragment: REACT_FRAGMENT_TYPE,
+ Profiler: REACT_PROFILER_TYPE,
StrictMode: REACT_STRICT_MODE_TYPE,
Suspense: REACT_SUSPENSE_TYPE,
@@ -88,7 +89,6 @@ const React = {
version: ReactVersion,
unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
- unstable_Profiler: REACT_PROFILER_TYPE,
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals,
};
@@ -100,9 +100,7 @@ const React = {
if (enableStableConcurrentModeAPIs) {
React.ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
- React.Profiler = REACT_PROFILER_TYPE;
React.unstable_ConcurrentMode = undefined;
- React.unstable_Profiler = undefined;
}
export default React;
diff --git a/packages/react/src/__tests__/ReactProfiler-test.internal.js b/packages/react/src/__tests__/ReactProfiler-test.internal.js
index 42fbb387dd096..ed4cca9b566e1 100644
--- a/packages/react/src/__tests__/ReactProfiler-test.internal.js
+++ b/packages/react/src/__tests__/ReactProfiler-test.internal.js
@@ -127,7 +127,7 @@ describe('Profiler', () => {
it('should warn if required params are missing', () => {
expect(() => {
expect(() => {
- ReactTestRenderer.create();
+ ReactTestRenderer.create();
}).toThrow('onRender is not a function');
}).toWarnDev(
'Profiler must specify an "id" string and "onRender" function as props',
@@ -140,7 +140,7 @@ describe('Profiler', () => {
// As root
expect(
ReactTestRenderer.create(
- ,
+ ,
).toJSON(),
).toMatchSnapshot();
@@ -148,7 +148,7 @@ describe('Profiler', () => {
expect(
ReactTestRenderer.create(
-
+
,
).toJSON(),
).toMatchSnapshot();
@@ -159,10 +159,10 @@ describe('Profiler', () => {
const renderer = ReactTestRenderer.create(
outside span
-
+
inside span
-
+
,
);
expect(renderer.toJSON()).toMatchSnapshot();
@@ -176,13 +176,13 @@ describe('Profiler', () => {
}
}
const renderer = ReactTestRenderer.create(
-
+
-
+
inner span
-
- ,
+
+ ,
);
expect(renderer.toJSON()).toMatchSnapshot();
});
@@ -221,11 +221,11 @@ describe('Profiler', () => {
expect(() =>
ReactTestRenderer.create(
-
-
+
+
-
-
+
+
,
),
).toThrow('expected');
@@ -242,10 +242,10 @@ describe('Profiler', () => {
};
ReactTestRenderer.create(
-
+
- ,
+ ,
{
unstable_isConcurrent: true,
},
@@ -312,9 +312,9 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -335,9 +335,9 @@ describe('Profiler', () => {
Scheduler.advanceTime(20); // 15 -> 35
renderer.update(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -358,9 +358,9 @@ describe('Profiler', () => {
Scheduler.advanceTime(20); // 45 -> 65
renderer.update(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -384,13 +384,13 @@ describe('Profiler', () => {
ReactTestRenderer.create(
-
+
-
+
-
+
-
+
,
);
@@ -419,12 +419,12 @@ describe('Profiler', () => {
ReactTestRenderer.create(
-
+
-
-
+
+
-
+
,
);
@@ -453,9 +453,9 @@ describe('Profiler', () => {
ReactTestRenderer.create(
-
+
-
+
,
);
@@ -489,17 +489,17 @@ describe('Profiler', () => {
}
const renderer = ReactTestRenderer.create(
-
+
-
+
-
+
-
+
-
+
- ,
+ ,
);
// All profile callbacks are called for initial render
@@ -526,11 +526,11 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -538,11 +538,11 @@ describe('Profiler', () => {
Scheduler.advanceTime(30); // 28 -> 58
renderer.update(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(2);
@@ -584,17 +584,17 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
);
Scheduler.advanceTime(15); // 13 -> 28
renderer.update(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(2);
@@ -628,10 +628,10 @@ describe('Profiler', () => {
// Render partially, but run out of time before completing.
ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
expect(Scheduler).toFlushAndYieldThrough(['Yield:2']);
@@ -663,13 +663,13 @@ describe('Profiler', () => {
// Render partially, but don't finish.
// This partial render should take 5ms of simulated time.
ReactTestRenderer.create(
-
+
-
+
-
- ,
+
+ ,
{unstable_isConcurrent: true},
);
expect(Scheduler).toFlushAndYieldThrough(['Yield:5']);
@@ -713,10 +713,10 @@ describe('Profiler', () => {
// Render a partially update, but don't finish.
// This partial render should take 10ms of simulated time.
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
expect(Scheduler).toFlushAndYieldThrough(['Yield:10']);
@@ -729,9 +729,9 @@ describe('Profiler', () => {
// The interrupted work simulates an additional 5ms of time.
renderer.unstable_flushSync(() => {
renderer.update(
-
+
- ,
+ ,
);
});
expect(Scheduler).toHaveYielded(['Yield:5']);
@@ -764,10 +764,10 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
@@ -788,11 +788,11 @@ describe('Profiler', () => {
// Render a partially update, but don't finish.
// This partial render should take 3ms of simulated time.
renderer.update(
-
+
- ,
+ ,
);
expect(Scheduler).toFlushAndYieldThrough(['Yield:3']);
expect(callback).toHaveBeenCalledTimes(0);
@@ -811,9 +811,9 @@ describe('Profiler', () => {
// The interrupted work simulates an additional 11ms of time.
renderer.unstable_flushSync(() => {
renderer.update(
-
+
- ,
+ ,
);
});
expect(Scheduler).toHaveYielded(['Yield:11']);
@@ -866,10 +866,10 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
@@ -979,12 +979,12 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(2);
@@ -1058,12 +1058,12 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -1101,29 +1101,29 @@ describe('Profiler', () => {
// Simulate a renderer error during the "complete" phase.
// This mimics behavior like React Native's View/Text nesting validation.
ReactNoop.render(
-
+
hi
- ,
+ ,
);
expect(Scheduler).toFlushAndThrow('Error in host config.');
// A similar case we've seen caused by an invariant in ReactDOM.
// It didn't reproduce without a host component inside.
ReactNoop.render(
-
+
hi
- ,
+ ,
);
expect(Scheduler).toFlushAndThrow('Error in host config.');
// So long as the profiler timer's fiber stack is reset correctly,
// Subsequent renders should not error.
ReactNoop.render(
-
+
hi
- ,
+ ,
);
expect(Scheduler).toFlushWithoutYielding();
});
@@ -1138,9 +1138,9 @@ describe('Profiler', () => {
Scheduler.advanceTime(5); // 0 -> 5
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -1148,9 +1148,9 @@ describe('Profiler', () => {
Scheduler.advanceTime(20); // 7 -> 27
renderer.update(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(2);
@@ -1193,9 +1193,9 @@ describe('Profiler', () => {
}
ReactTestRenderer.create(
-
+
- ,
+ ,
);
expect(callback).toHaveBeenCalledTimes(1);
@@ -1545,9 +1545,9 @@ describe('Profiler', () => {
Scheduler.unstable_now(),
() => {
renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
{
unstable_isConcurrent: true,
},
@@ -1717,9 +1717,9 @@ describe('Profiler', () => {
Scheduler.unstable_now(),
() => {
renderer.update(
-
+
- ,
+ ,
);
},
);
@@ -1794,10 +1794,10 @@ describe('Profiler', () => {
Scheduler.advanceTime(5);
const renderer = ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
@@ -1975,9 +1975,9 @@ describe('Profiler', () => {
Scheduler.unstable_now(),
() => {
ReactTestRenderer.create(
-
+
- ,
+ ,
{unstable_isConcurrent: true},
);
},
@@ -2182,9 +2182,9 @@ describe('Profiler', () => {
render() {
parentInstance = this;
return (
-
+
-
+
);
}
}
@@ -2274,13 +2274,13 @@ describe('Profiler', () => {
Scheduler.unstable_now(),
() => {
ReactNoop.render(
-
+
}>
- ,
+ ,
);
},
);
@@ -2361,13 +2361,13 @@ describe('Profiler', () => {
interaction.timestamp,
() => {
ReactTestRenderer.create(
-
+
}>
- ,
+ ,
);
},
);
@@ -2415,13 +2415,13 @@ describe('Profiler', () => {
interaction.timestamp,
() => {
ReactTestRenderer.create(
-
+
}>
- ,
+ ,
);
},
);
@@ -2454,13 +2454,13 @@ describe('Profiler', () => {
interaction.timestamp,
() => {
ReactTestRenderer.create(
-
+
}>
- ,
+ ,
{
unstable_isConcurrent: true,
},
@@ -2501,13 +2501,13 @@ describe('Profiler', () => {
interaction.timestamp,
() => {
ReactTestRenderer.create(
-
+
}>
- ,
+ ,
{unstable_isConcurrent: true},
);
},
@@ -2544,14 +2544,14 @@ describe('Profiler', () => {
initialRenderInteraction.timestamp,
() => {
renderer = ReactTestRenderer.create(
-
+
}>
- ,
+ ,
);
},
);
@@ -2578,14 +2578,14 @@ describe('Profiler', () => {
highPriUpdateInteraction.timestamp,
() => {
renderer.update(
-
+
}>
- ,
+ ,
);
},
);
@@ -2630,14 +2630,14 @@ describe('Profiler', () => {
initialRenderInteraction.timestamp,
() => {
renderer = ReactTestRenderer.create(
-
+
}>
- ,
+ ,
{unstable_isConcurrent: true},
);
},
@@ -2668,14 +2668,14 @@ describe('Profiler', () => {
highPriUpdateInteraction.timestamp,
() => {
renderer.update(
-
+
}>
- ,
+ ,
);
},
);
diff --git a/packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js b/packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js
index e0bc879752840..14ccc16021386 100644
--- a/packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js
+++ b/packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js
@@ -57,13 +57,13 @@ describe('ReactProfiler DevTools integration', () => {
const App = ({multiplier}) => {
Scheduler.advanceTime(2);
return (
-
+
-
+
);
};