diff --git a/packages/react-native/Libraries/Text/Text/RCTTextView.mm b/packages/react-native/Libraries/Text/Text/RCTTextView.mm index ee07fb04c2f1fe..280c39197a3636 100644 --- a/packages/react-native/Libraries/Text/Text/RCTTextView.mm +++ b/packages/react-native/Libraries/Text/Text/RCTTextView.mm @@ -156,7 +156,7 @@ - (void)drawRect:(CGRect)rect NSRange glyphRange = [layoutManager glyphRangeForTextContainer:textContainer]; - if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCentering()) { + if (facebook::react::ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) { CGPoint drawingPoint = [self calculateDrawingPointWithTextStorage:_textStorage contentFrame:_contentFrame]; [layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:drawingPoint]; [layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:drawingPoint]; diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm index 07c2a39565bbf6..8f4cc3a8ad3dbc 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm @@ -378,7 +378,7 @@ - (void)drawRect:(CGRect)rect CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame()); - if (ReactNativeFeatureFlags::enableLineHeightCentering()) { + if (ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS()) { NSAttributedString *attributedText = RCTNSAttributedStringFromAttributedString(_state->getData().attributedString); frame = [self calculateCenteredFrameWithAttributedText:attributedText frame:frame]; } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt index 247a4860f0deb7..81c22a2f25a932 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<8c1e36bc5a0baac0def70ea35dcb9e59>> + * @generated SignedSource<> */ /** @@ -134,7 +134,13 @@ public object ReactNativeFeatureFlags { * When enabled, custom line height calculation will be centered from top to bottom. */ @JvmStatic - public fun enableLineHeightCentering(): Boolean = accessor.enableLineHeightCentering() + public fun enableLineHeightCenteringOnAndroid(): Boolean = accessor.enableLineHeightCenteringOnAndroid() + + /** + * When enabled, custom line height calculation will be centered from top to bottom. + */ + @JvmStatic + public fun enableLineHeightCenteringOnIOS(): Boolean = accessor.enableLineHeightCenteringOnIOS() /** * Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled. diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt index 065887a5c68bce..9723b947f21a45 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<02f9fa1fd92a89a823e8fd35e1a2409b>> */ /** @@ -37,7 +37,8 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso private var enableIOSViewClipToPaddingBoxCache: Boolean? = null private var enableLayoutAnimationsOnAndroidCache: Boolean? = null private var enableLayoutAnimationsOnIOSCache: Boolean? = null - private var enableLineHeightCenteringCache: Boolean? = null + private var enableLineHeightCenteringOnAndroidCache: Boolean? = null + private var enableLineHeightCenteringOnIOSCache: Boolean? = null private var enableLongTaskAPICache: Boolean? = null private var enableMicrotasksCache: Boolean? = null private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null @@ -223,11 +224,20 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso return cached } - override fun enableLineHeightCentering(): Boolean { - var cached = enableLineHeightCenteringCache + override fun enableLineHeightCenteringOnAndroid(): Boolean { + var cached = enableLineHeightCenteringOnAndroidCache if (cached == null) { - cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCentering() - enableLineHeightCenteringCache = cached + cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnAndroid() + enableLineHeightCenteringOnAndroidCache = cached + } + return cached + } + + override fun enableLineHeightCenteringOnIOS(): Boolean { + var cached = enableLineHeightCenteringOnIOSCache + if (cached == null) { + cached = ReactNativeFeatureFlagsCxxInterop.enableLineHeightCenteringOnIOS() + enableLineHeightCenteringOnIOSCache = cached } return cached } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt index 80a737264c3400..43ccb1023d8163 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<> */ /** @@ -62,7 +62,9 @@ public object ReactNativeFeatureFlagsCxxInterop { @DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnIOS(): Boolean - @DoNotStrip @JvmStatic public external fun enableLineHeightCentering(): Boolean + @DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnAndroid(): Boolean + + @DoNotStrip @JvmStatic public external fun enableLineHeightCenteringOnIOS(): Boolean @DoNotStrip @JvmStatic public external fun enableLongTaskAPI(): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt index 6ceca44ce6157b..d17edec3f98493 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<624e9e1c096417a3441a091dd74b0641>> + * @generated SignedSource<> */ /** @@ -57,7 +57,9 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi override fun enableLayoutAnimationsOnIOS(): Boolean = true - override fun enableLineHeightCentering(): Boolean = false + override fun enableLineHeightCenteringOnAndroid(): Boolean = false + + override fun enableLineHeightCenteringOnIOS(): Boolean = false override fun enableLongTaskAPI(): Boolean = false diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt index dde855d43e10c3..718e1489a00101 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<> */ /** @@ -41,7 +41,8 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces private var enableIOSViewClipToPaddingBoxCache: Boolean? = null private var enableLayoutAnimationsOnAndroidCache: Boolean? = null private var enableLayoutAnimationsOnIOSCache: Boolean? = null - private var enableLineHeightCenteringCache: Boolean? = null + private var enableLineHeightCenteringOnAndroidCache: Boolean? = null + private var enableLineHeightCenteringOnIOSCache: Boolean? = null private var enableLongTaskAPICache: Boolean? = null private var enableMicrotasksCache: Boolean? = null private var enablePreciseSchedulingForPremountItemsOnAndroidCache: Boolean? = null @@ -244,12 +245,22 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces return cached } - override fun enableLineHeightCentering(): Boolean { - var cached = enableLineHeightCenteringCache + override fun enableLineHeightCenteringOnAndroid(): Boolean { + var cached = enableLineHeightCenteringOnAndroidCache if (cached == null) { - cached = currentProvider.enableLineHeightCentering() - accessedFeatureFlags.add("enableLineHeightCentering") - enableLineHeightCenteringCache = cached + cached = currentProvider.enableLineHeightCenteringOnAndroid() + accessedFeatureFlags.add("enableLineHeightCenteringOnAndroid") + enableLineHeightCenteringOnAndroidCache = cached + } + return cached + } + + override fun enableLineHeightCenteringOnIOS(): Boolean { + var cached = enableLineHeightCenteringOnIOSCache + if (cached == null) { + cached = currentProvider.enableLineHeightCenteringOnIOS() + accessedFeatureFlags.add("enableLineHeightCenteringOnIOS") + enableLineHeightCenteringOnIOSCache = cached } return cached } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt index 9dbcab3754412d..ae0afde12bb3de 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<95ff497c335cac627d85e166d8178558>> */ /** @@ -57,7 +57,9 @@ public interface ReactNativeFeatureFlagsProvider { @DoNotStrip public fun enableLayoutAnimationsOnIOS(): Boolean - @DoNotStrip public fun enableLineHeightCentering(): Boolean + @DoNotStrip public fun enableLineHeightCenteringOnAndroid(): Boolean + + @DoNotStrip public fun enableLineHeightCenteringOnIOS(): Boolean @DoNotStrip public fun enableLongTaskAPI(): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt index 3afa6435e38cc8..ec89a95cc6622b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomLineHeightSpan.kt @@ -107,7 +107,7 @@ public class CustomLineHeightSpan(height: Float) : LineHeightSpan, ReactSpan { v: Int, fm: FontMetricsInt, ) { - if (ReactNativeFeatureFlags.enableLineHeightCentering()) chooseCenteredHeight(fm) + if (ReactNativeFeatureFlags.enableLineHeightCenteringOnAndroid()) chooseCenteredHeight(fm) else chooseOriginalHeight(fm) } } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp index 87414dbe52909b..cf822c55dcad43 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<6eaab890a1d747ce2c8ba7b0c255ec7a>> + * @generated SignedSource<<0908596d167df88df2a2ab2d4b8c06ec>> */ /** @@ -141,9 +141,15 @@ class ReactNativeFeatureFlagsProviderHolder return method(javaProvider_); } - bool enableLineHeightCentering() override { + bool enableLineHeightCenteringOnAndroid() override { static const auto method = - getReactNativeFeatureFlagsProviderJavaClass()->getMethod("enableLineHeightCentering"); + getReactNativeFeatureFlagsProviderJavaClass()->getMethod("enableLineHeightCenteringOnAndroid"); + return method(javaProvider_); + } + + bool enableLineHeightCenteringOnIOS() override { + static const auto method = + getReactNativeFeatureFlagsProviderJavaClass()->getMethod("enableLineHeightCenteringOnIOS"); return method(javaProvider_); } @@ -422,9 +428,14 @@ bool JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS( return ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS(); } -bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering( +bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid( facebook::jni::alias_ref /*unused*/) { - return ReactNativeFeatureFlags::enableLineHeightCentering(); + return ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid(); +} + +bool JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS( + facebook::jni::alias_ref /*unused*/) { + return ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS(); } bool JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI( @@ -651,8 +662,11 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() { "enableLayoutAnimationsOnIOS", JReactNativeFeatureFlagsCxxInterop::enableLayoutAnimationsOnIOS), makeNativeMethod( - "enableLineHeightCentering", - JReactNativeFeatureFlagsCxxInterop::enableLineHeightCentering), + "enableLineHeightCenteringOnAndroid", + JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnAndroid), + makeNativeMethod( + "enableLineHeightCenteringOnIOS", + JReactNativeFeatureFlagsCxxInterop::enableLineHeightCenteringOnIOS), makeNativeMethod( "enableLongTaskAPI", JReactNativeFeatureFlagsCxxInterop::enableLongTaskAPI), diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h index 5b4880bc6c749a..f01ebba058fef2 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<> */ /** @@ -81,7 +81,10 @@ class JReactNativeFeatureFlagsCxxInterop static bool enableLayoutAnimationsOnIOS( facebook::jni::alias_ref); - static bool enableLineHeightCentering( + static bool enableLineHeightCenteringOnAndroid( + facebook::jni::alias_ref); + + static bool enableLineHeightCenteringOnIOS( facebook::jni::alias_ref); static bool enableLongTaskAPI( diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp index ac3b1e345fcaf6..1e09a9e471b342 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<4b417d4e16dc9d50ce72eb17287ade1b>> + * @generated SignedSource<<2eeb1b7571481a8404226d0bbc8d2e5d>> */ /** @@ -89,8 +89,12 @@ bool ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS() { return getAccessor().enableLayoutAnimationsOnIOS(); } -bool ReactNativeFeatureFlags::enableLineHeightCentering() { - return getAccessor().enableLineHeightCentering(); +bool ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid() { + return getAccessor().enableLineHeightCenteringOnAndroid(); +} + +bool ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS() { + return getAccessor().enableLineHeightCenteringOnIOS(); } bool ReactNativeFeatureFlags::enableLongTaskAPI() { diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h index e143b9c0748574..d65c2917dc30e3 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<9c219debffe0fa013bea41deb6c01db2>> + * @generated SignedSource<<6c4322adf33ac5b1bc921b306b2f5f8f>> */ /** @@ -125,7 +125,12 @@ class ReactNativeFeatureFlags { /** * When enabled, custom line height calculation will be centered from top to bottom. */ - RN_EXPORT static bool enableLineHeightCentering(); + RN_EXPORT static bool enableLineHeightCenteringOnAndroid(); + + /** + * When enabled, custom line height calculation will be centered from top to bottom. + */ + RN_EXPORT static bool enableLineHeightCenteringOnIOS(); /** * Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled. diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp index 87c81fae613fb1..b156380fe6fad5 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<778bffd71d93673c5690febb473350b1>> + * @generated SignedSource<<351c20a1608a72fe03ef4e8082496964>> */ /** @@ -335,8 +335,8 @@ bool ReactNativeFeatureFlagsAccessor::enableLayoutAnimationsOnIOS() { return flagValue.value(); } -bool ReactNativeFeatureFlagsAccessor::enableLineHeightCentering() { - auto flagValue = enableLineHeightCentering_.load(); +bool ReactNativeFeatureFlagsAccessor::enableLineHeightCenteringOnAndroid() { + auto flagValue = enableLineHeightCenteringOnAndroid_.load(); if (!flagValue.has_value()) { // This block is not exclusive but it is not necessary. @@ -344,10 +344,28 @@ bool ReactNativeFeatureFlagsAccessor::enableLineHeightCentering() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(17, "enableLineHeightCentering"); + markFlagAsAccessed(17, "enableLineHeightCenteringOnAndroid"); - flagValue = currentProvider_->enableLineHeightCentering(); - enableLineHeightCentering_ = flagValue; + flagValue = currentProvider_->enableLineHeightCenteringOnAndroid(); + enableLineHeightCenteringOnAndroid_ = flagValue; + } + + return flagValue.value(); +} + +bool ReactNativeFeatureFlagsAccessor::enableLineHeightCenteringOnIOS() { + auto flagValue = enableLineHeightCenteringOnIOS_.load(); + + if (!flagValue.has_value()) { + // This block is not exclusive but it is not necessary. + // If multiple threads try to initialize the feature flag, we would only + // be accessing the provider multiple times but the end state of this + // instance and the returned flag value would be the same. + + markFlagAsAccessed(18, "enableLineHeightCenteringOnIOS"); + + flagValue = currentProvider_->enableLineHeightCenteringOnIOS(); + enableLineHeightCenteringOnIOS_ = flagValue; } return flagValue.value(); @@ -362,7 +380,7 @@ bool ReactNativeFeatureFlagsAccessor::enableLongTaskAPI() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(18, "enableLongTaskAPI"); + markFlagAsAccessed(19, "enableLongTaskAPI"); flagValue = currentProvider_->enableLongTaskAPI(); enableLongTaskAPI_ = flagValue; @@ -380,7 +398,7 @@ bool ReactNativeFeatureFlagsAccessor::enableMicrotasks() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(19, "enableMicrotasks"); + markFlagAsAccessed(20, "enableMicrotasks"); flagValue = currentProvider_->enableMicrotasks(); enableMicrotasks_ = flagValue; @@ -398,7 +416,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePreciseSchedulingForPremountItemsOnA // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(20, "enablePreciseSchedulingForPremountItemsOnAndroid"); + markFlagAsAccessed(21, "enablePreciseSchedulingForPremountItemsOnAndroid"); flagValue = currentProvider_->enablePreciseSchedulingForPremountItemsOnAndroid(); enablePreciseSchedulingForPremountItemsOnAndroid_ = flagValue; @@ -416,7 +434,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePropsUpdateReconciliationAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(21, "enablePropsUpdateReconciliationAndroid"); + markFlagAsAccessed(22, "enablePropsUpdateReconciliationAndroid"); flagValue = currentProvider_->enablePropsUpdateReconciliationAndroid(); enablePropsUpdateReconciliationAndroid_ = flagValue; @@ -434,7 +452,7 @@ bool ReactNativeFeatureFlagsAccessor::enableReportEventPaintTime() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(22, "enableReportEventPaintTime"); + markFlagAsAccessed(23, "enableReportEventPaintTime"); flagValue = currentProvider_->enableReportEventPaintTime(); enableReportEventPaintTime_ = flagValue; @@ -452,7 +470,7 @@ bool ReactNativeFeatureFlagsAccessor::enableSynchronousStateUpdates() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(23, "enableSynchronousStateUpdates"); + markFlagAsAccessed(24, "enableSynchronousStateUpdates"); flagValue = currentProvider_->enableSynchronousStateUpdates(); enableSynchronousStateUpdates_ = flagValue; @@ -470,7 +488,7 @@ bool ReactNativeFeatureFlagsAccessor::enableTextPreallocationOptimisation() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(24, "enableTextPreallocationOptimisation"); + markFlagAsAccessed(25, "enableTextPreallocationOptimisation"); flagValue = currentProvider_->enableTextPreallocationOptimisation(); enableTextPreallocationOptimisation_ = flagValue; @@ -488,7 +506,7 @@ bool ReactNativeFeatureFlagsAccessor::enableUIConsistency() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(25, "enableUIConsistency"); + markFlagAsAccessed(26, "enableUIConsistency"); flagValue = currentProvider_->enableUIConsistency(); enableUIConsistency_ = flagValue; @@ -506,7 +524,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecycling() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(26, "enableViewRecycling"); + markFlagAsAccessed(27, "enableViewRecycling"); flagValue = currentProvider_->enableViewRecycling(); enableViewRecycling_ = flagValue; @@ -524,7 +542,7 @@ bool ReactNativeFeatureFlagsAccessor::excludeYogaFromRawProps() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(27, "excludeYogaFromRawProps"); + markFlagAsAccessed(28, "excludeYogaFromRawProps"); flagValue = currentProvider_->excludeYogaFromRawProps(); excludeYogaFromRawProps_ = flagValue; @@ -542,7 +560,7 @@ bool ReactNativeFeatureFlagsAccessor::fetchImagesInViewPreallocation() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(28, "fetchImagesInViewPreallocation"); + markFlagAsAccessed(29, "fetchImagesInViewPreallocation"); flagValue = currentProvider_->fetchImagesInViewPreallocation(); fetchImagesInViewPreallocation_ = flagValue; @@ -560,7 +578,7 @@ bool ReactNativeFeatureFlagsAccessor::fixMappingOfEventPrioritiesBetweenFabricAn // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(29, "fixMappingOfEventPrioritiesBetweenFabricAndReact"); + markFlagAsAccessed(30, "fixMappingOfEventPrioritiesBetweenFabricAndReact"); flagValue = currentProvider_->fixMappingOfEventPrioritiesBetweenFabricAndReact(); fixMappingOfEventPrioritiesBetweenFabricAndReact_ = flagValue; @@ -578,7 +596,7 @@ bool ReactNativeFeatureFlagsAccessor::fixMountingCoordinatorReportedPendingTrans // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(30, "fixMountingCoordinatorReportedPendingTransactionsOnAndroid"); + markFlagAsAccessed(31, "fixMountingCoordinatorReportedPendingTransactionsOnAndroid"); flagValue = currentProvider_->fixMountingCoordinatorReportedPendingTransactionsOnAndroid(); fixMountingCoordinatorReportedPendingTransactionsOnAndroid_ = flagValue; @@ -596,7 +614,7 @@ bool ReactNativeFeatureFlagsAccessor::forceBatchingMountItemsOnAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(31, "forceBatchingMountItemsOnAndroid"); + markFlagAsAccessed(32, "forceBatchingMountItemsOnAndroid"); flagValue = currentProvider_->forceBatchingMountItemsOnAndroid(); forceBatchingMountItemsOnAndroid_ = flagValue; @@ -614,7 +632,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxEnabledDebug() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(32, "fuseboxEnabledDebug"); + markFlagAsAccessed(33, "fuseboxEnabledDebug"); flagValue = currentProvider_->fuseboxEnabledDebug(); fuseboxEnabledDebug_ = flagValue; @@ -632,7 +650,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxEnabledRelease() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(33, "fuseboxEnabledRelease"); + markFlagAsAccessed(34, "fuseboxEnabledRelease"); flagValue = currentProvider_->fuseboxEnabledRelease(); fuseboxEnabledRelease_ = flagValue; @@ -650,7 +668,7 @@ bool ReactNativeFeatureFlagsAccessor::initEagerTurboModulesOnNativeModulesQueueA // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(34, "initEagerTurboModulesOnNativeModulesQueueAndroid"); + markFlagAsAccessed(35, "initEagerTurboModulesOnNativeModulesQueueAndroid"); flagValue = currentProvider_->initEagerTurboModulesOnNativeModulesQueueAndroid(); initEagerTurboModulesOnNativeModulesQueueAndroid_ = flagValue; @@ -668,7 +686,7 @@ bool ReactNativeFeatureFlagsAccessor::lazyAnimationCallbacks() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(35, "lazyAnimationCallbacks"); + markFlagAsAccessed(36, "lazyAnimationCallbacks"); flagValue = currentProvider_->lazyAnimationCallbacks(); lazyAnimationCallbacks_ = flagValue; @@ -686,7 +704,7 @@ bool ReactNativeFeatureFlagsAccessor::loadVectorDrawablesOnImages() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(36, "loadVectorDrawablesOnImages"); + markFlagAsAccessed(37, "loadVectorDrawablesOnImages"); flagValue = currentProvider_->loadVectorDrawablesOnImages(); loadVectorDrawablesOnImages_ = flagValue; @@ -704,7 +722,7 @@ bool ReactNativeFeatureFlagsAccessor::removeNestedCallsToDispatchMountItemsOnAnd // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(37, "removeNestedCallsToDispatchMountItemsOnAndroid"); + markFlagAsAccessed(38, "removeNestedCallsToDispatchMountItemsOnAndroid"); flagValue = currentProvider_->removeNestedCallsToDispatchMountItemsOnAndroid(); removeNestedCallsToDispatchMountItemsOnAndroid_ = flagValue; @@ -722,7 +740,7 @@ bool ReactNativeFeatureFlagsAccessor::setAndroidLayoutDirection() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(38, "setAndroidLayoutDirection"); + markFlagAsAccessed(39, "setAndroidLayoutDirection"); flagValue = currentProvider_->setAndroidLayoutDirection(); setAndroidLayoutDirection_ = flagValue; @@ -740,7 +758,7 @@ bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(39, "traceTurboModulePromiseRejectionsOnAndroid"); + markFlagAsAccessed(40, "traceTurboModulePromiseRejectionsOnAndroid"); flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid(); traceTurboModulePromiseRejectionsOnAndroid_ = flagValue; @@ -758,7 +776,7 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(40, "useFabricInterop"); + markFlagAsAccessed(41, "useFabricInterop"); flagValue = currentProvider_->useFabricInterop(); useFabricInterop_ = flagValue; @@ -776,7 +794,7 @@ bool ReactNativeFeatureFlagsAccessor::useImmediateExecutorInAndroidBridgeless() // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(41, "useImmediateExecutorInAndroidBridgeless"); + markFlagAsAccessed(42, "useImmediateExecutorInAndroidBridgeless"); flagValue = currentProvider_->useImmediateExecutorInAndroidBridgeless(); useImmediateExecutorInAndroidBridgeless_ = flagValue; @@ -794,7 +812,7 @@ bool ReactNativeFeatureFlagsAccessor::useModernRuntimeScheduler() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(42, "useModernRuntimeScheduler"); + markFlagAsAccessed(43, "useModernRuntimeScheduler"); flagValue = currentProvider_->useModernRuntimeScheduler(); useModernRuntimeScheduler_ = flagValue; @@ -812,7 +830,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(43, "useNativeViewConfigsInBridgelessMode"); + markFlagAsAccessed(44, "useNativeViewConfigsInBridgelessMode"); flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode(); useNativeViewConfigsInBridgelessMode_ = flagValue; @@ -830,7 +848,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimisedViewPreallocationOnAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(44, "useOptimisedViewPreallocationOnAndroid"); + markFlagAsAccessed(45, "useOptimisedViewPreallocationOnAndroid"); flagValue = currentProvider_->useOptimisedViewPreallocationOnAndroid(); useOptimisedViewPreallocationOnAndroid_ = flagValue; @@ -848,7 +866,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimizedEventBatchingOnAndroid() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(45, "useOptimizedEventBatchingOnAndroid"); + markFlagAsAccessed(46, "useOptimizedEventBatchingOnAndroid"); flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid(); useOptimizedEventBatchingOnAndroid_ = flagValue; @@ -866,7 +884,7 @@ bool ReactNativeFeatureFlagsAccessor::useRuntimeShadowNodeReferenceUpdate() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(46, "useRuntimeShadowNodeReferenceUpdate"); + markFlagAsAccessed(47, "useRuntimeShadowNodeReferenceUpdate"); flagValue = currentProvider_->useRuntimeShadowNodeReferenceUpdate(); useRuntimeShadowNodeReferenceUpdate_ = flagValue; @@ -884,7 +902,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(47, "useTurboModuleInterop"); + markFlagAsAccessed(48, "useTurboModuleInterop"); flagValue = currentProvider_->useTurboModuleInterop(); useTurboModuleInterop_ = flagValue; @@ -902,7 +920,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() { // be accessing the provider multiple times but the end state of this // instance and the returned flag value would be the same. - markFlagAsAccessed(48, "useTurboModules"); + markFlagAsAccessed(49, "useTurboModules"); flagValue = currentProvider_->useTurboModules(); useTurboModules_ = flagValue; diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h index b1f0828ae51331..2aa3df0238a430 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<06a9b5f6baba48ae66b19b621e6b871a>> + * @generated SignedSource<<7b875c6b1b7120f664ab511a4b91c8d8>> */ /** @@ -48,7 +48,8 @@ class ReactNativeFeatureFlagsAccessor { bool enableIOSViewClipToPaddingBox(); bool enableLayoutAnimationsOnAndroid(); bool enableLayoutAnimationsOnIOS(); - bool enableLineHeightCentering(); + bool enableLineHeightCenteringOnAndroid(); + bool enableLineHeightCenteringOnIOS(); bool enableLongTaskAPI(); bool enableMicrotasks(); bool enablePreciseSchedulingForPremountItemsOnAndroid(); @@ -90,7 +91,7 @@ class ReactNativeFeatureFlagsAccessor { std::unique_ptr currentProvider_; bool wasOverridden_; - std::array, 49> accessedFeatureFlags_; + std::array, 50> accessedFeatureFlags_; std::atomic> commonTestFlag_; std::atomic> allowRecursiveCommitsWithSynchronousMountOnAndroid_; @@ -109,7 +110,8 @@ class ReactNativeFeatureFlagsAccessor { std::atomic> enableIOSViewClipToPaddingBox_; std::atomic> enableLayoutAnimationsOnAndroid_; std::atomic> enableLayoutAnimationsOnIOS_; - std::atomic> enableLineHeightCentering_; + std::atomic> enableLineHeightCenteringOnAndroid_; + std::atomic> enableLineHeightCenteringOnIOS_; std::atomic> enableLongTaskAPI_; std::atomic> enableMicrotasks_; std::atomic> enablePreciseSchedulingForPremountItemsOnAndroid_; diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h index a1b18d293f9f18..b3516b3f38a0a9 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<<0d812fecaa84185ac194eb680318a4e3>> */ /** @@ -95,7 +95,11 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider { return true; } - bool enableLineHeightCentering() override { + bool enableLineHeightCenteringOnAndroid() override { + return false; + } + + bool enableLineHeightCenteringOnIOS() override { return false; } diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h index a9200ba3c833c5..703ac3d1ef152b 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<> */ /** @@ -42,7 +42,8 @@ class ReactNativeFeatureFlagsProvider { virtual bool enableIOSViewClipToPaddingBox() = 0; virtual bool enableLayoutAnimationsOnAndroid() = 0; virtual bool enableLayoutAnimationsOnIOS() = 0; - virtual bool enableLineHeightCentering() = 0; + virtual bool enableLineHeightCenteringOnAndroid() = 0; + virtual bool enableLineHeightCenteringOnIOS() = 0; virtual bool enableLongTaskAPI() = 0; virtual bool enableMicrotasks() = 0; virtual bool enablePreciseSchedulingForPremountItemsOnAndroid() = 0; diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp index 4ac78694750835..ba2feca7e0da68 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<245ba233d0a20c3cf980bc5782816fc5>> + * @generated SignedSource<<5518b21fe37b29322a1f32036e1c5f98>> */ /** @@ -122,9 +122,14 @@ bool NativeReactNativeFeatureFlags::enableLayoutAnimationsOnIOS( return ReactNativeFeatureFlags::enableLayoutAnimationsOnIOS(); } -bool NativeReactNativeFeatureFlags::enableLineHeightCentering( +bool NativeReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid( jsi::Runtime& /*runtime*/) { - return ReactNativeFeatureFlags::enableLineHeightCentering(); + return ReactNativeFeatureFlags::enableLineHeightCenteringOnAndroid(); +} + +bool NativeReactNativeFeatureFlags::enableLineHeightCenteringOnIOS( + jsi::Runtime& /*runtime*/) { + return ReactNativeFeatureFlags::enableLineHeightCenteringOnIOS(); } bool NativeReactNativeFeatureFlags::enableLongTaskAPI( diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h index 6c351aadcf3b4b..de40a0168d1201 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<54a4c2fd073453d0fb8f654d55a19296>> + * @generated SignedSource<<182427eab9aa2c3374b4093e12d8d4d6>> */ /** @@ -69,7 +69,9 @@ class NativeReactNativeFeatureFlags bool enableLayoutAnimationsOnIOS(jsi::Runtime& runtime); - bool enableLineHeightCentering(jsi::Runtime& runtime); + bool enableLineHeightCenteringOnAndroid(jsi::Runtime& runtime); + + bool enableLineHeightCenteringOnIOS(jsi::Runtime& runtime); bool enableLongTaskAPI(jsi::Runtime& runtime); diff --git a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js index 630fd2dd32e598..bdd7c24574ef90 100644 --- a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js +++ b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js @@ -178,7 +178,7 @@ const definitions: FeatureFlagDefinitions = { purpose: 'release', }, }, - enableLineHeightCentering: { + enableLineHeightCenteringOnAndroid: { defaultValue: false, metadata: { dateAdded: '2024-09-11', @@ -187,6 +187,15 @@ const definitions: FeatureFlagDefinitions = { purpose: 'experimentation', }, }, + enableLineHeightCenteringOnIOS: { + defaultValue: false, + metadata: { + dateAdded: '2024-10-11', + description: + 'When enabled, custom line height calculation will be centered from top to bottom.', + purpose: 'experimentation', + }, + }, enableLongTaskAPI: { defaultValue: false, metadata: { diff --git a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js index 155373119c6a3d..e1e4bcbe0749e4 100644 --- a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<> + * @generated SignedSource<> * @flow strict */ @@ -67,7 +67,8 @@ export type ReactNativeFeatureFlags = { enableIOSViewClipToPaddingBox: Getter, enableLayoutAnimationsOnAndroid: Getter, enableLayoutAnimationsOnIOS: Getter, - enableLineHeightCentering: Getter, + enableLineHeightCenteringOnAndroid: Getter, + enableLineHeightCenteringOnIOS: Getter, enableLongTaskAPI: Getter, enableMicrotasks: Getter, enablePreciseSchedulingForPremountItemsOnAndroid: Getter, @@ -257,7 +258,11 @@ export const enableLayoutAnimationsOnIOS: Getter = createNativeFlagGett /** * When enabled, custom line height calculation will be centered from top to bottom. */ -export const enableLineHeightCentering: Getter = createNativeFlagGetter('enableLineHeightCentering', false); +export const enableLineHeightCenteringOnAndroid: Getter = createNativeFlagGetter('enableLineHeightCenteringOnAndroid', false); +/** + * When enabled, custom line height calculation will be centered from top to bottom. + */ +export const enableLineHeightCenteringOnIOS: Getter = createNativeFlagGetter('enableLineHeightCenteringOnIOS', false); /** * Enables the reporting of long tasks through `PerformanceObserver`. Only works if the event loop is enabled. */ diff --git a/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js index 2822c949bdba45..47ec8d07cced25 100644 --- a/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<35e08c715ee1214f787861796945985a>> + * @generated SignedSource<> * @flow strict */ @@ -40,7 +40,8 @@ export interface Spec extends TurboModule { +enableIOSViewClipToPaddingBox?: () => boolean; +enableLayoutAnimationsOnAndroid?: () => boolean; +enableLayoutAnimationsOnIOS?: () => boolean; - +enableLineHeightCentering?: () => boolean; + +enableLineHeightCenteringOnAndroid?: () => boolean; + +enableLineHeightCenteringOnIOS?: () => boolean; +enableLongTaskAPI?: () => boolean; +enableMicrotasks?: () => boolean; +enablePreciseSchedulingForPremountItemsOnAndroid?: () => boolean;