@samitouri / QOS-React / commits / 275e76e83b

Enable stable concurrent APIs flag for 16.7 alpha (#13928)

* Add enableStableConcurrentModeAPIs feature flag * Conditionally name concurrent API based on enableStableConcurrentModeAPIs flag

Brian Vaughn committed Oct 24, 2018 at 13:45 UTC 275e76e83bc2be5dc0be9185ff747f383969289a
11 files changed +31 -7
packages/react-dom/src/client/ReactDOM.js
+9 -5
@@ -34,6 +34,7 @@ import getComponentName from 'shared/getComponentName';
34 import invariant from 'shared/invariant';
35 import lowPriorityWarning from 'shared/lowPriorityWarning';
36 import warningWithoutStack from 'shared/warningWithoutStack';
37 +import {enableStableConcurrentModeAPIs} from 'shared/ReactFeatureFlags';
38
39 import * as ReactDOMComponentTree from './ReactDOMComponentTree';
40 import {restoreControlledState} from './ReactDOMComponent';
@@ -770,17 +771,20 @@ type RootOptions = {
771 hydrate?: boolean,
772 };
773
773 -ReactDOM.unstable_createRoot = function createRoot(
774 - container: DOMContainer,
775 - options?: RootOptions,
776 -): ReactRoot {
774 +function createRoot(container: DOMContainer, options?: RootOptions): ReactRoot {
775 invariant(
776 isValidContainer(container),
777 'unstable_createRoot(...): Target container is not a DOM element.',
778 );
779 const hydrate = options != null && options.hydrate === true;
780 return new ReactRoot(container, true, hydrate);
783 -};
781 +}
782 +
783 +if (enableStableConcurrentModeAPIs) {
784 + ReactDOM.createRoot = createRoot;
785 +} else {
786 + ReactDOM.unstable_createRoot = createRoot;
787 +}
788
789 const foundDevTools = DOMRenderer.injectIntoDevTools({
790 findFiberByHostInstance: ReactDOMComponentTree.getClosestInstanceFromNode,
packages/react/src/React.js
+9 -2
@@ -33,6 +33,7 @@ import {
33 cloneElementWithValidation,
34 } from './ReactElementValidator';
35 import ReactSharedInternals from './ReactSharedInternals';
36 +import {enableStableConcurrentModeAPIs} from 'shared/ReactFeatureFlags';
37
38 const React = {
39 Children: {
@@ -54,9 +55,7 @@ const React = {
55
56 Fragment: REACT_FRAGMENT_TYPE,
57 StrictMode: REACT_STRICT_MODE_TYPE,
57 - unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
58 Suspense: REACT_SUSPENSE_TYPE,
59 - unstable_Profiler: REACT_PROFILER_TYPE,
59
60 createElement: __DEV__ ? createElementWithValidation : createElement,
61 cloneElement: __DEV__ ? cloneElementWithValidation : cloneElement,
@@ -68,4 +67,12 @@ const React = {
67 __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals,
68 };
69
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 +
78 export default React;
packages/shared/ReactFeatureFlags.js
+4
@@ -42,3 +42,7 @@ export function addUserTimingListener() {
42 // React Fire: prevent the value and checked attributes from syncing
43 // with their related DOM properties
44 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
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
21 export const enableSchedulerTracing = __PROFILE__;
22 export const enableSuspenseServerRenderer = false;
23 export const disableInputAttributeSyncing = false;
24 +export const enableStableConcurrentModeAPIs = false;
25
26 // Only used in www builds.
27 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.native-fabric-oss.js
+1
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
21 export const enableSchedulerTracing = __PROFILE__;
22 export const enableSuspenseServerRenderer = false;
23 export const disableInputAttributeSyncing = false;
24 +export const enableStableConcurrentModeAPIs = false;
25
26 // Only used in www builds.
27 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.native-fb.js
+1
@@ -26,6 +26,7 @@ export const enableUserTimingAPI = __DEV__;
26 export const enableProfilerTimer = __PROFILE__;
27 export const enableSchedulerTracing = __PROFILE__;
28 export const enableSuspenseServerRenderer = false;
29 +export const enableStableConcurrentModeAPIs = false;
30
31 // Only used in www builds.
32 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.native-oss.js
+1
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
21 export const enableSchedulerTracing = __PROFILE__;
22 export const enableSuspenseServerRenderer = false;
23 export const disableInputAttributeSyncing = false;
24 +export const enableStableConcurrentModeAPIs = false;
25
26 // Only used in www builds.
27 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.persistent.js
+1
@@ -21,6 +21,7 @@ export const enableProfilerTimer = __PROFILE__;
21 export const enableSchedulerTracing = __PROFILE__;
22 export const enableSuspenseServerRenderer = false;
23 export const disableInputAttributeSyncing = false;
24 +export const enableStableConcurrentModeAPIs = false;
25
26 // Only used in www builds.
27 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.test-renderer.js
+1
@@ -21,6 +21,7 @@ export const enableProfilerTimer = false;
21 export const enableSchedulerTracing = false;
22 export const enableSuspenseServerRenderer = false;
23 export const disableInputAttributeSyncing = false;
24 +export const enableStableConcurrentModeAPIs = false;
25
26 // Only used in www builds.
27 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+1
@@ -20,6 +20,7 @@ export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
20 export const enableProfilerTimer = false;
21 export const enableSchedulerTracing = false;
22 export const enableSuspenseServerRenderer = false;
23 +export const enableStableConcurrentModeAPIs = false;
24
25 // Only used in www builds.
26 export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.www.js
+2
@@ -31,6 +31,8 @@ export let enableUserTimingAPI = __DEV__;
31 export const enableProfilerTimer = __PROFILE__;
32 export const enableSchedulerTracing = __PROFILE__;
33
34 +export const enableStableConcurrentModeAPIs = false;
35 +
36 let refCount = 0;
37 export function addUserTimingListener() {
38 if (__DEV__) {