From 6cf0cfb5a47a437b8a17b50b4c70460be15ee1cd Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Thu, 3 Oct 2024 10:41:59 -0700 Subject: [PATCH] Reenable `setAndroidLayoutDirection` by default (#46811) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/46811 I turned this off a few weeks after we turned off in FB app in (D60273063), after discovering it defeated a check used to disable `removeClippedSubviews` in RTL (reintroducing its bugged behavior). D63318754 fixed that bug, so this is turning back on by default. This is also needed to fix border rendering direction bug introduced in BackgroundStyleApplicator in views where the contextual layout direction is different from the root Android layout direction (either because of `direction`, or `I18nManager` forceRTL). This fixes some existing RNTester RTL screenshot test failures which are hooked via forceRTL. This also fixes rendering of some native components like `Switch` which would previously not respect contextual direction. Changelog: [Android][Fixed] - Reenable `setAndroidLayoutDirection` by default Reviewed By: javache Differential Revision: D63815077 fbshipit-source-id: fea64191d83d366c6bfc7b8c58b215773c8e8efe --- .../internal/featureflags/ReactNativeFeatureFlagsDefaults.kt | 4 ++-- .../react/featureflags/ReactNativeFeatureFlagsDefaults.h | 4 ++-- .../scripts/featureflags/ReactNativeFeatureFlags.config.js | 2 +- .../src/private/featureflags/ReactNativeFeatureFlags.js | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) 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 edd9694fc05..c899fdbe81e 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<<01fab77f1ec0e0bf3c7d8c894bb558bc>> + * @generated SignedSource<> */ /** @@ -97,7 +97,7 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi override fun removeNestedCallsToDispatchMountItemsOnAndroid(): Boolean = false - override fun setAndroidLayoutDirection(): Boolean = false + override fun setAndroidLayoutDirection(): Boolean = true override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = false diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h index 396628491ac..33c58ce6ed2 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<<37c9fda4f1bc361bde3ba3fce8f18eb9>> + * @generated SignedSource<> */ /** @@ -176,7 +176,7 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider { } bool setAndroidLayoutDirection() override { - return false; + return true; } bool traceTurboModulePromiseRejectionsOnAndroid() override { diff --git a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js index 9ff7b1cb415..8acaebeaa1f 100644 --- a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js +++ b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js @@ -355,7 +355,7 @@ const definitions: FeatureFlagDefinitions = { }, }, setAndroidLayoutDirection: { - defaultValue: false, + defaultValue: true, metadata: { dateAdded: '2024-05-17', description: 'Propagate layout direction to Android views.', diff --git a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js index d2a9d37a513..37a0375094f 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 */ @@ -337,7 +337,7 @@ export const removeNestedCallsToDispatchMountItemsOnAndroid: Getter = c /** * Propagate layout direction to Android views. */ -export const setAndroidLayoutDirection: Getter = createNativeFlagGetter('setAndroidLayoutDirection', false); +export const setAndroidLayoutDirection: Getter = createNativeFlagGetter('setAndroidLayoutDirection', true); /** * Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause. */