diff --git a/packages/react/index.fb.js b/packages/react/index.fb.js index 7999655f30e4b..6f11e73a5b99e 100644 --- a/packages/react/index.fb.js +++ b/packages/react/index.fb.js @@ -7,6 +7,8 @@ * @flow */ +import {enableOwnerStacks} from 'shared/ReactFeatureFlags'; +import {captureOwnerStack as captureOwnerStackImpl} from './src/ReactClient'; export { __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, __COMPILER_RUNTIME, @@ -67,3 +69,11 @@ export {useMemoCache as unstable_useMemoCache} from './src/ReactHooks'; // export to match the name of the OSS function typically exported from // react/compiler-runtime export {useMemoCache as c} from './src/ReactHooks'; + +// Only export captureOwnerStack if the flag is on, to support feature detection. +let captureOwnerStack; +if (enableOwnerStacks) { + captureOwnerStack = captureOwnerStackImpl; +} + +export {captureOwnerStack}; diff --git a/packages/react/src/ReactServer.fb.js b/packages/react/src/ReactServer.fb.js index d6702023e4741..e2cca212e600b 100644 --- a/packages/react/src/ReactServer.fb.js +++ b/packages/react/src/ReactServer.fb.js @@ -10,6 +10,7 @@ export {default as __SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE} from './ReactSharedInternalsServer'; import {forEach, map, count, toArray, only} from './ReactChildren'; +import {captureOwnerStack} from './ReactOwnerStack'; import { REACT_FRAGMENT_TYPE, REACT_PROFILER_TYPE, @@ -57,4 +58,5 @@ export { useDebugValue, useMemo, version, + captureOwnerStack, // DEV-only }; diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js index 457ec37b2f9ba..655b11eafb94b 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js @@ -25,3 +25,4 @@ export const enableShallowPropDiffing = __VARIANT__; export const passChildrenWhenCloningPersistedNodes = __VARIANT__; export const enableFabricCompleteRootInCommitPhase = __VARIANT__; export const enableSiblingPrerendering = __VARIANT__; +export const enableOwnerStacks = __VARIANT__; diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index de6ee64caad20..50eb342a4f0f1 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -27,6 +27,7 @@ export const { enableShallowPropDiffing, passChildrenWhenCloningPersistedNodes, enableSiblingPrerendering, + enableOwnerStacks, } = dynamicFlags; // The rest of the flags are static for better dead code elimination. @@ -67,7 +68,6 @@ export const enableLegacyFBSupport = false; export const enableLegacyHidden = false; export const enableLogStringRefsProd: null | ((string, string) => void) = null; export const enableNoCloningMemoCache = false; -export const enableOwnerStacks = false; export const enablePostpone = false; export const enableProfilerCommitHooks = __PROFILE__; export const enableProfilerNestedUpdatePhase = __PROFILE__; diff --git a/packages/shared/forks/ReactFeatureFlags.www-dynamic.js b/packages/shared/forks/ReactFeatureFlags.www-dynamic.js index d4102efb06bcd..40d66d51ca2a4 100644 --- a/packages/shared/forks/ReactFeatureFlags.www-dynamic.js +++ b/packages/shared/forks/ReactFeatureFlags.www-dynamic.js @@ -30,6 +30,7 @@ export const enableRetryLaneExpiration = __VARIANT__; export const enableTransitionTracing = __VARIANT__; export const favorSafetyOverHydrationPerf = __VARIANT__; export const renameElementSymbol = __VARIANT__; +export const enableOwnerStacks = __VARIANT__; export const retryLaneExpirationMs = 5000; export const syncLaneExpirationMs = 250; export const transitionLaneExpirationMs = 5000; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index ec572d86f5ae4..29564c47a15d4 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -38,6 +38,7 @@ export const { retryLaneExpirationMs, syncLaneExpirationMs, transitionLaneExpirationMs, + enableOwnerStacks, } = dynamicFeatureFlags; // On WWW, __EXPERIMENTAL__ is used for a new modern build. @@ -124,7 +125,6 @@ export const useModernStrictMode = true; export const disableLegacyMode: boolean = __EXPERIMENTAL__ || dynamicFeatureFlags.disableLegacyMode; -export const enableOwnerStacks = false; export const enableShallowPropDiffing = false; // Flow magic to verify the exports of this file match the original version.