Skip to content

Commit 105f2de

Browse files
committed
Put hooks behind feature flag
1 parent 7bee9fb commit 105f2de

12 files changed

+25
-9
lines changed

packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ describe('ReactHooks', () => {
2929
jest.resetModules();
3030
ReactFeatureFlags = require('shared/ReactFeatureFlags');
3131
ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
32+
ReactFeatureFlags.enableHooks = true;
3233
React = require('react');
3334
ReactNoop = require('react-noop-renderer');
3435
useState = React.useState;

packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('ReactNewContext', () => {
2121
jest.resetModules();
2222
ReactFeatureFlags = require('shared/ReactFeatureFlags');
2323
ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
24+
ReactFeatureFlags.enableHooks = true;
2425
React = require('react');
2526
useContext = React.useContext;
2627
ReactNoop = require('react-noop-renderer');

packages/react/src/React.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
REACT_STRICT_MODE_TYPE,
1414
REACT_SUSPENSE_TYPE,
1515
} from 'shared/ReactSymbols';
16+
import {enableHooks} from 'shared/ReactFeatureFlags';
1617

1718
import {Component, PureComponent} from './ReactBaseClasses';
1819
import {createRef} from './ReactCreateRef';
@@ -63,15 +64,6 @@ const React = {
6364
lazy,
6465
memo,
6566

66-
useContext,
67-
useState,
68-
useReducer,
69-
useRef,
70-
useEffect,
71-
useCallback,
72-
useMemo,
73-
useAPI,
74-
7567
Fragment: REACT_FRAGMENT_TYPE,
7668
StrictMode: REACT_STRICT_MODE_TYPE,
7769
Suspense: REACT_SUSPENSE_TYPE,
@@ -94,4 +86,15 @@ if (enableStableConcurrentModeAPIs) {
9486
React.unstable_Profiler = REACT_PROFILER_TYPE;
9587
}
9688

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+
97100
export default React;

packages/shared/ReactFeatureFlags.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
export const enableUserTimingAPI = __DEV__;
1111

12+
export const enableHooks = false;
1213
// Helps identify side effects in begin-phase lifecycle hooks and setState reducers:
1314
export const debugRenderPhaseSideEffects = false;
1415

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabri
1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
1717
export const enableUserTimingAPI = __DEV__;
18+
export const enableHooks = false;
1819
export const warnAboutDeprecatedLifecycles = false;
1920
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
2021
export const enableProfilerTimer = __PROFILE__;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import typeof * as FabricFeatureFlagsType from './ReactFeatureFlags.native-fabri
1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
1717
export const enableUserTimingAPI = __DEV__;
18+
export const enableHooks = false;
1819
export const warnAboutDeprecatedLifecycles = false;
1920
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
2021
export const enableProfilerTimer = __PROFILE__;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-fb';
1414

1515
// Re-export dynamic flags from the fbsource version.
1616
export const {
17+
enableHooks,
1718
debugRenderPhaseSideEffects,
1819
debugRenderPhaseSideEffectsForStrictMode,
1920
warnAboutDeprecatedLifecycles,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import typeof * as FeatureFlagsShimType from './ReactFeatureFlags.native-oss';
1414

1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
17+
export const enableHooks = false;
1718
export const enableUserTimingAPI = __DEV__;
1819
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
1920
export const warnAboutDeprecatedLifecycles = false;

packages/shared/forks/ReactFeatureFlags.persistent.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
1717
export const enableUserTimingAPI = __DEV__;
18+
export const enableHooks = false;
1819
export const warnAboutDeprecatedLifecycles = false;
1920
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__;
2021
export const enableProfilerTimer = __PROFILE__;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
1717
export const enableUserTimingAPI = __DEV__;
18+
export const enableHooks = false;
1819
export const warnAboutDeprecatedLifecycles = false;
1920
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
2021
export const enableProfilerTimer = false;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import typeof * as PersistentFeatureFlagsType from './ReactFeatureFlags.persiste
1515
export const debugRenderPhaseSideEffects = false;
1616
export const debugRenderPhaseSideEffectsForStrictMode = false;
1717
export const enableUserTimingAPI = __DEV__;
18+
export const enableHooks = false;
1819
export const warnAboutDeprecatedLifecycles = false;
1920
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
2021
export const enableProfilerTimer = false;

packages/shared/forks/ReactFeatureFlags.www.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ export const {
2020
disableInputAttributeSyncing,
2121
} = require('ReactFeatureFlags');
2222

23+
// The rest of the flags are static for better dead code elimination.
24+
export const enableHooks = false;
25+
2326
// In www, we have experimental support for gathering data
2427
// from User Timing API calls in production. By default, we
2528
// only emit performance.mark/measure calls in __DEV__. But if

0 commit comments

Comments
 (0)