Extend ReactNativeFeatureFlags to support prereleaseChannels (#49141)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/49141

This diff extends ReactNativeFeatureFlags to support prereleaseChannels, the goal is to be able to configure what release channel each feature flag will be enabled / disabled

changelog: [internal] internal

Reviewed By: rubennorte

Differential Revision: D68583324

fbshipit-source-id: 09fde8511dcf5dff63821f15afe0a2530a0845fd
This commit is contained in:
David Vacca
2025-02-05 13:36:21 -08:00
committed by Facebook GitHub Bot
parent dab8f6097e
commit bdb394f754
2 changed files with 65 additions and 0 deletions
@@ -30,6 +30,7 @@ const testDefinitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'operational',
},
ossReleaseStage: 'none',
},
commonTestFlagWithoutNativeImplementation: {
defaultValue: false,
@@ -39,6 +40,7 @@ const testDefinitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'operational',
},
ossReleaseStage: 'none',
skipNativeAPI: true,
},
},
@@ -50,6 +52,7 @@ const testDefinitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'operational',
},
ossReleaseStage: 'none',
},
},
};
@@ -66,6 +69,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableAccumulatedUpdatesInRawPropsAndroid: {
defaultValue: false,
@@ -76,6 +80,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableBridgelessArchitecture: {
defaultValue: false,
@@ -85,6 +90,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableCppPropsIteratorSetter: {
defaultValue: false,
@@ -95,6 +101,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableEagerRootViewAttachment: {
defaultValue: false,
@@ -105,6 +112,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableEventEmitterRetentionDuringGesturesOnAndroid: {
defaultValue: false,
@@ -115,6 +123,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableFabricLogs: {
defaultValue: false,
@@ -123,6 +132,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'operational',
},
ossReleaseStage: 'none',
},
enableFabricRenderer: {
defaultValue: false,
@@ -131,6 +141,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableFixForViewCommandRace: {
defaultValue: false,
@@ -141,6 +152,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableGranularShadowTreeStateReconciliation: {
defaultValue: false,
@@ -151,6 +163,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableIOSViewClipToPaddingBox: {
defaultValue: false,
@@ -160,6 +173,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableImagePrefetchingAndroid: {
defaultValue: false,
@@ -170,6 +184,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableJSRuntimeGCOnMemoryPressureOnIOS: {
defaultValue: false,
@@ -178,6 +193,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableLayoutAnimationsOnAndroid: {
defaultValue: false,
@@ -187,6 +203,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableLayoutAnimationsOnIOS: {
defaultValue: true,
@@ -196,6 +213,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableLongTaskAPI: {
defaultValue: false,
@@ -205,6 +223,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableNewBackgroundAndBorderDrawables: {
defaultValue: false,
@@ -215,6 +234,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enablePreciseSchedulingForPremountItemsOnAndroid: {
defaultValue: false,
@@ -225,6 +245,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enablePropsUpdateReconciliationAndroid: {
defaultValue: false,
@@ -235,6 +256,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableReportEventPaintTime: {
defaultValue: false,
@@ -244,6 +266,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableSynchronousStateUpdates: {
defaultValue: false,
@@ -254,6 +277,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableUIConsistency: {
defaultValue: false,
@@ -264,6 +288,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableViewRecycling: {
defaultValue: false,
@@ -274,6 +299,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
excludeYogaFromRawProps: {
defaultValue: false,
@@ -284,6 +310,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
fixDifferentiatorEmittingUpdatesWithWrongParentTag: {
defaultValue: true,
@@ -293,6 +320,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
fixMappingOfEventPrioritiesBetweenFabricAndReact: {
defaultValue: false,
@@ -303,6 +331,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
fixMountingCoordinatorReportedPendingTransactionsOnAndroid: {
defaultValue: false,
@@ -313,6 +342,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
fuseboxEnabledRelease: {
defaultValue: false,
@@ -322,6 +352,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
fuseboxNetworkInspectionEnabled: {
defaultValue: false,
@@ -332,6 +363,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
lazyAnimationCallbacks: {
defaultValue: false,
@@ -342,6 +374,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
traceTurboModulePromiseRejectionsOnAndroid: {
defaultValue: false,
@@ -351,6 +384,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'operational',
},
ossReleaseStage: 'none',
},
useAlwaysAvailableJSErrorHandling: {
defaultValue: false,
@@ -360,6 +394,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
useEditTextStockAndroidFocusBehavior: {
defaultValue: true,
@@ -369,6 +404,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
useFabricInterop: {
defaultValue: false,
@@ -378,6 +414,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
useNativeViewConfigsInBridgelessMode: {
defaultValue: false,
@@ -388,6 +425,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useOptimizedEventBatchingOnAndroid: {
defaultValue: false,
@@ -398,6 +436,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useRawPropsJsiValue: {
defaultValue: false,
@@ -408,6 +447,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useRuntimeShadowNodeReferenceUpdate: {
defaultValue: true,
@@ -418,6 +458,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useTurboModuleInterop: {
defaultValue: false,
@@ -428,6 +469,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useTurboModules: {
defaultValue: false,
@@ -437,6 +479,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
},
@@ -452,6 +495,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
animatedShouldUseSingleOp: {
defaultValue: false,
@@ -462,6 +506,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
disableInteractionManager: {
defaultValue: false,
@@ -472,6 +517,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableAccessToHostTreeInFabric: {
defaultValue: false,
@@ -481,6 +527,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
enableAnimatedClearImmediateFix: {
defaultValue: true,
@@ -491,6 +538,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableDOMDocumentAPI: {
defaultValue: false,
@@ -502,6 +550,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
fixVirtualizeListCollapseWindowSize: {
defaultValue: false,
@@ -512,6 +561,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
isLayoutAnimationEnabled: {
defaultValue: true,
@@ -521,6 +571,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'release',
},
ossReleaseStage: 'none',
},
scheduleAnimatedCleanupInMicrotask: {
defaultValue: false,
@@ -531,6 +582,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
shouldSkipStateUpdatesForLoopingAnimations: {
defaultValue: true,
@@ -541,6 +593,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
shouldUseAnimatedObjectForTransform: {
defaultValue: false,
@@ -551,6 +604,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
shouldUseRemoveClippedSubviewsAsDefaultOnIOS: {
defaultValue: false,
@@ -561,6 +615,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
shouldUseSetNativePropsInFabric: {
defaultValue: true,
@@ -570,6 +625,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
useRefsForTextInputState: {
defaultValue: false,
@@ -580,6 +636,7 @@ const definitions: FeatureFlagDefinitions = {
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
},
};
+8
View File
@@ -15,9 +15,16 @@ export type FeatureFlagDefinitions = $ReadOnly<{
jsOnly: JsOnlyFeatureFlagList,
}>;
export type OSSReleaseStageValue =
| 'none'
| 'experimental'
| 'canary'
| 'stable';
export type CommonFeatureFlagConfig = $ReadOnly<{
defaultValue: FeatureFlagValue,
metadata: FeatureFlagMetadata,
ossReleaseStage: OSSReleaseStageValue,
// Indicates if this API should only be defined in JavaScript, only to
// preserve backwards compatibility with existing native code temporarily.
skipNativeAPI?: true,
@@ -30,6 +37,7 @@ export type CommonFeatureFlagList = $ReadOnly<{
export type JsOnlyFeatureFlagConfig = $ReadOnly<{
defaultValue: FeatureFlagValue,
metadata: FeatureFlagMetadata,
ossReleaseStage: OSSReleaseStageValue,
}>;
export type JsOnlyFeatureFlagList = $ReadOnly<{