Skip to content

Commit 275e76e

Browse files
authored
Enable stable concurrent APIs flag for 16.7 alpha (facebook#13928)
* Add enableStableConcurrentModeAPIs feature flag * Conditionally name concurrent API based on enableStableConcurrentModeAPIs flag
1 parent b5539ad commit 275e76e

11 files changed

+31
-7
lines changed

packages/react-dom/src/client/ReactDOM.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import getComponentName from 'shared/getComponentName';
3434
import invariant from 'shared/invariant';
3535
import lowPriorityWarning from 'shared/lowPriorityWarning';
3636
import warningWithoutStack from 'shared/warningWithoutStack';
37+
import {enableStableConcurrentModeAPIs} from 'shared/ReactFeatureFlags';
3738

3839
import * as ReactDOMComponentTree from './ReactDOMComponentTree';
3940
import {restoreControlledState} from './ReactDOMComponent';
@@ -770,17 +771,20 @@ type RootOptions = {
770771
hydrate?: boolean,
771772
};
772773

773-
ReactDOM.unstable_createRoot = function createRoot(
774-
container: DOMContainer,
775-
options?: RootOptions,
776-
): ReactRoot {
774+
function createRoot(container: DOMContainer, options?: RootOptions): ReactRoot {
777775
invariant(
778776
isValidContainer(container),
779777
'unstable_createRoot(...): Target container is not a DOM element.',
780778
);
781779
const hydrate = options != null && options.hydrate === true;
782780
return new ReactRoot(container, true, hydrate);
783-
};
781+
}
782+
783+
if (enableStableConcurrentModeAPIs) {
784+
ReactDOM.createRoot = createRoot;
785+
} else {
786+
ReactDOM.unstable_createRoot = createRoot;
787+
}
784788

785789
const foundDevTools = DOMRenderer.injectIntoDevTools({
786790
findFiberByHostInstance: ReactDOMComponentTree.getClosestInstanceFromNode,

packages/react/src/React.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
cloneElementWithValidation,
3434
} from './ReactElementValidator';
3535
import ReactSharedInternals from './ReactSharedInternals';
36+
import {enableStableConcurrentModeAPIs} from 'shared/ReactFeatureFlags';
3637

3738
const React = {
3839
Children: {
@@ -54,9 +55,7 @@ const React = {
5455

5556
Fragment: REACT_FRAGMENT_TYPE,
5657
StrictMode: REACT_STRICT_MODE_TYPE,
57-
unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
5858
Suspense: REACT_SUSPENSE_TYPE,
59-
unstable_Profiler: REACT_PROFILER_TYPE,
6059

6160
createElement: __DEV__ ? createElementWithValidation : createElement,
6261
cloneElement: __DEV__ ? cloneElementWithValidation : cloneElement,
@@ -68,4 +67,12 @@ const React = {
6867
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals,
6968
};
7069

70+
if (enableStableConcurrentModeAPIs) {
71+
React.ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
72+
React.Profiler = REACT_PROFILER_TYPE;
73+
} else {
74+
React.unstable_ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
75+
React.unstable_Profiler = REACT_PROFILER_TYPE;
76+
}
77+
7178
export default React;

packages/shared/ReactFeatureFlags.js

+4
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,7 @@ export function addUserTimingListener() {
4242
// React Fire: prevent the value and checked attributes from syncing
4343
// with their related DOM properties
4444
export const disableInputAttributeSyncing = false;
45+
46+
// These APIs will no longer be "unstable" in the upcoming 16.7 release,
47+
// Control this behavior with a flag to support 16.6 minor releases in the meanwhile.
48+
export const enableStableConcurrentModeAPIs = false;

packages/shared/forks/ReactFeatureFlags.native-fabric-fb.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
2121
export const enableSchedulerTracing = __PROFILE__;
2222
export const enableSuspenseServerRenderer = false;
2323
export const disableInputAttributeSyncing = false;
24+
export const enableStableConcurrentModeAPIs = false;
2425

2526
// Only used in www builds.
2627
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.native-fabric-oss.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
2121
export const enableSchedulerTracing = __PROFILE__;
2222
export const enableSuspenseServerRenderer = false;
2323
export const disableInputAttributeSyncing = false;
24+
export const enableStableConcurrentModeAPIs = false;
2425

2526
// Only used in www builds.
2627
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.native-fb.js

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const enableUserTimingAPI = __DEV__;
2626
export const enableProfilerTimer = __PROFILE__;
2727
export const enableSchedulerTracing = __PROFILE__;
2828
export const enableSuspenseServerRenderer = false;
29+
export const enableStableConcurrentModeAPIs = false;
2930

3031
// Only used in www builds.
3132
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.native-oss.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
2121
export const enableSchedulerTracing = __PROFILE__;
2222
export const enableSuspenseServerRenderer = false;
2323
export const disableInputAttributeSyncing = false;
24+
export const enableStableConcurrentModeAPIs = false;
2425

2526
// Only used in www builds.
2627
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.persistent.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
2121
export const enableSchedulerTracing = __PROFILE__;
2222
export const enableSuspenseServerRenderer = false;
2323
export const disableInputAttributeSyncing = false;
24+
export const enableStableConcurrentModeAPIs = false;
2425

2526
// Only used in www builds.
2627
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.test-renderer.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const enableProfilerTimer = false;
2121
export const enableSchedulerTracing = false;
2222
export const enableSuspenseServerRenderer = false;
2323
export const disableInputAttributeSyncing = false;
24+
export const enableStableConcurrentModeAPIs = false;
2425

2526
// Only used in www builds.
2627
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
2020
export const enableProfilerTimer = false;
2121
export const enableSchedulerTracing = false;
2222
export const enableSuspenseServerRenderer = false;
23+
export const enableStableConcurrentModeAPIs = false;
2324

2425
// Only used in www builds.
2526
export function addUserTimingListener() {

packages/shared/forks/ReactFeatureFlags.www.js

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export let enableUserTimingAPI = __DEV__;
3131
export const enableProfilerTimer = __PROFILE__;
3232
export const enableSchedulerTracing = __PROFILE__;
3333

34+
export const enableStableConcurrentModeAPIs = false;
35+
3436
let refCount = 0;
3537
export function addUserTimingListener() {
3638
if (__DEV__) {

0 commit comments

Comments
 (0)