@samitouri / QOS-React / commits / 105f2de545

Put hooks behind feature flag

Andrew Clark committed Sep 5, 2018 at 17:20 UTC 105f2de545dc9e374ed4ac55b3628eeeb555f4a6
12 files changed +25 -9
packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
+1
@@ -29,6 +29,7 @@ describe('ReactHooks', () => {
29 jest.resetModules();
30 ReactFeatureFlags = require('shared/ReactFeatureFlags');
31 ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
32 + ReactFeatureFlags.enableHooks = true;
33 React = require('react');
34 ReactNoop = require('react-noop-renderer');
35 useState = React.useState;
packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js
+1
@@ -21,6 +21,7 @@ describe('ReactNewContext', () => {
21 jest.resetModules();
22 ReactFeatureFlags = require('shared/ReactFeatureFlags');
23 ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
24 + ReactFeatureFlags.enableHooks = true;
25 React = require('react');
26 useContext = React.useContext;
27 ReactNoop = require('react-noop-renderer');
packages/react/src/React.js
+12 -9
@@ -13,6 +13,7 @@ import {
13 REACT_STRICT_MODE_TYPE,
14 REACT_SUSPENSE_TYPE,
15 } from 'shared/ReactSymbols';
16 +import {enableHooks} from 'shared/ReactFeatureFlags';
17
18 import {Component, PureComponent} from './ReactBaseClasses';
19 import {createRef} from './ReactCreateRef';
@@ -63,15 +64,6 @@ const React = {
64 lazy,
65 memo,
66
66 - useContext,
67 - useState,
68 - useReducer,
69 - useRef,
70 - useEffect,
71 - useCallback,
72 - useMemo,
73 - useAPI,
74 -
67 Fragment: REACT_FRAGMENT_TYPE,
68 StrictMode: REACT_STRICT_MODE_TYPE,
69 Suspense: REACT_SUSPENSE_TYPE,
@@ -94,4 +86,15 @@ if (enableStableConcurrentModeAPIs) {
86 React.unstable_Profiler = REACT_PROFILER_TYPE;
87 }
88
89 +if (enableHooks) {
90 + React.useContext = useContext;
91 + React.useState = useState;
92 + React.useReducer = useReducer;
93 + React.useRef = useRef;
94 + React.useEffect = useEffect;
95 + React.useCallback = useCallback;
96 + React.useMemo = useMemo;
97 + React.useAPI = useAPI;
98 +}
99 +
100 export default React;
packages/shared/ReactFeatureFlags.js
+1
@@ -9,6 +9,7 @@
9
10 export const enableUserTimingAPI = __DEV__;
11
12 +export const enableHooks = false;
13 // Helps identify side effects in begin-phase lifecycle hooks and setState reducers:
14 export const debugRenderPhaseSideEffects = false;
15
packages/shared/forks/ReactFeatureFlags.native-fabric-fb.js
+1
@@ -15,6 +15,7 @@ import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabri
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 export const enableUserTimingAPI = __DEV__;
18 +export const enableHooks = false;
19 export const warnAboutDeprecatedLifecycles = false;
20 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
21 export const enableProfilerTimer = __PROFILE__;
packages/shared/forks/ReactFeatureFlags.native-fabric-oss.js
+1
@@ -15,6 +15,7 @@ import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabri
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 export const enableUserTimingAPI = __DEV__;
18 +export const enableHooks = false;
19 export const warnAboutDeprecatedLifecycles = false;
20 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
21 export const enableProfilerTimer = __PROFILE__;
packages/shared/forks/ReactFeatureFlags.native-fb.js
+1
@@ -14,6 +14,7 @@ import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-fb';
14
15 // Re-export dynamic flags from the fbsource version.
16 export const {
17 + enableHooks,
18 debugRenderPhaseSideEffects,
19 debugRenderPhaseSideEffectsForStrictMode,
20 warnAboutDeprecatedLifecycles,
packages/shared/forks/ReactFeatureFlags.native-oss.js
+1
@@ -14,6 +14,7 @@ import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-oss';
14
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 +export const enableHooks = false;
18 export const enableUserTimingAPI = __DEV__;
19 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
20 export const warnAboutDeprecatedLifecycles = false;
packages/shared/forks/ReactFeatureFlags.persistent.js
+1
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 export const enableUserTimingAPI = __DEV__;
18 +export const enableHooks = false;
19 export const warnAboutDeprecatedLifecycles = false;
20 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
21 export const enableProfilerTimer = __PROFILE__;
packages/shared/forks/ReactFeatureFlags.test-renderer.js
+1
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 export const enableUserTimingAPI = __DEV__;
18 +export const enableHooks = false;
19 export const warnAboutDeprecatedLifecycles = false;
20 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
21 export const enableProfilerTimer = false;
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+1
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
15 export const debugRenderPhaseSideEffects = false;
16 export const debugRenderPhaseSideEffectsForStrictMode = false;
17 export const enableUserTimingAPI = __DEV__;
18 +export const enableHooks = false;
19 export const warnAboutDeprecatedLifecycles = false;
20 export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
21 export const enableProfilerTimer = false;
packages/shared/forks/ReactFeatureFlags.www.js
+3
@@ -20,6 +20,9 @@ export const {
20 disableInputAttributeSyncing,
21 } = require('ReactFeatureFlags');
22
23 +// The rest of the flags are static for better dead code elimination.
24 +export const enableHooks = false;
25 +
26 // In www, we have experimental support for gathering data
27 // from User Timing API calls in production. By default, we
28 // only emit performance.mark/measure calls in __DEV__. But if