From 5936f29d6ae95ebdd217f7f89d1e77ae4e6e5294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Tue, 5 Aug 2025 13:58:32 -0700 Subject: [PATCH] Add test to ensure setUpDefaultReactNativeEnvironment does not access feature flags (#53057) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/53057 Changelog: [internal] This adds a Fantom test to ensure that `setUpDefaultReactNativeEnvironment` doesn't read any feature flags. This prevents catching this as a runtime issue when the feature flag system complains that feature flags were accessed before being overridden, which always would happen if this module read any flags (as it runs before any product code that sets overrides). Reviewed By: rshest Differential Revision: D79639890 fbshipit-source-id: 6997609b7bf84947a6da53b58e68f9edd5654912 --- ...actNativeEnvironment-FeatureFlags-itest.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 packages/react-native/src/private/setup/__tests__/setUpDefaultReactNativeEnvironment-FeatureFlags-itest.js diff --git a/packages/react-native/src/private/setup/__tests__/setUpDefaultReactNativeEnvironment-FeatureFlags-itest.js b/packages/react-native/src/private/setup/__tests__/setUpDefaultReactNativeEnvironment-FeatureFlags-itest.js new file mode 100644 index 00000000000..b6f7acd4be4 --- /dev/null +++ b/packages/react-native/src/private/setup/__tests__/setUpDefaultReactNativeEnvironment-FeatureFlags-itest.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import * as ReactNativeFeatureFlags from '../../featureflags/ReactNativeFeatureFlags'; +import * as ReactNativeFeatureFlagsBase from '../../featureflags/ReactNativeFeatureFlagsBase'; +import setUpDefaultReactNativeEnvironment from 'react-native/src/private/setup/setUpDefaultReactNativeEnvironment'; + +describe('setUpReactNativeEnvironment', () => { + it('should not read any feature flags', () => { + ReactNativeFeatureFlagsBase.dangerouslyResetForTesting(); + + setUpDefaultReactNativeEnvironment(false); + + expect(() => { + // If any feature flags were read, this call would fail. + ReactNativeFeatureFlags.override({ + jsOnlyTestFlag: () => true, + }); + }).not.toThrow(); + }); +});