Skip to content

Commit f1d2756

Browse files
j-piaseckimeta-codesync[bot]
authored andcommitted
Introduce enableFabricCommitBranchingMergeOnMainThread feature flag (#58614)
Summary: Pull Request resolved: #58614 Changelog: [Internal] Adds `enableFabricCommitBranchingMergeOnMainThread` feature flag for follow-up diffs. Reviewed By: javache Differential Revision: D120981615 fbshipit-source-id: 2294f6bee061eebc01702e0224c95d0e2c625705
1 parent 17dec8b commit f1d2756

20 files changed

Lines changed: 205 additions & 89 deletions

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<7d7547b5f25dbe0d0e6722d2f2bf5baf>>
7+
* @generated SignedSource<<a5c748863dbb09c323056ca1ec17774b>>
88
*/
99

1010
/**
@@ -163,11 +163,17 @@ public object ReactNativeFeatureFlags {
163163
public fun enableExclusivePropsUpdateAndroid(): Boolean = accessor.enableExclusivePropsUpdateAndroid()
164164

165165
/**
166-
* Enables Fabric commit branching to fix starvation problems and atomic JS updates.
166+
* Enables Fabric commit branching to fix atomic JS updates.
167167
*/
168168
@JvmStatic
169169
public fun enableFabricCommitBranching(): Boolean = accessor.enableFabricCommitBranching()
170170

171+
/**
172+
* Enables Fabric commit branching merge to happen on the main thread to fix starvation problems.
173+
*/
174+
@JvmStatic
175+
public fun enableFabricCommitBranchingMergeOnMainThread(): Boolean = accessor.enableFabricCommitBranchingMergeOnMainThread()
176+
171177
/**
172178
* This feature flag enables logs for Fabric.
173179
*/

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<c07cb2f4489ba94f267d0c76616ee718>>
7+
* @generated SignedSource<<e69290c5801d6f796d368c643f9e8072>>
88
*/
99

1010
/**
@@ -43,6 +43,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
4343
private var enableEagerRootViewAttachmentCache: Boolean? = null
4444
private var enableExclusivePropsUpdateAndroidCache: Boolean? = null
4545
private var enableFabricCommitBranchingCache: Boolean? = null
46+
private var enableFabricCommitBranchingMergeOnMainThreadCache: Boolean? = null
4647
private var enableFabricLogsCache: Boolean? = null
4748
private var enableFlexboxAutoMinSizeInStrictModeCache: Boolean? = null
4849
private var enableFontScaleChangesUpdatingLayoutCache: Boolean? = null
@@ -316,6 +317,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
316317
return cached
317318
}
318319

320+
override fun enableFabricCommitBranchingMergeOnMainThread(): Boolean {
321+
var cached = enableFabricCommitBranchingMergeOnMainThreadCache
322+
if (cached == null) {
323+
cached = ReactNativeFeatureFlagsCxxInterop.enableFabricCommitBranchingMergeOnMainThread()
324+
enableFabricCommitBranchingMergeOnMainThreadCache = cached
325+
}
326+
return cached
327+
}
328+
319329
override fun enableFabricLogs(): Boolean {
320330
var cached = enableFabricLogsCache
321331
if (cached == null) {

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<7d6ce76213f08ecb356fa68e77edfe84>>
7+
* @generated SignedSource<<b56cf5b92dffb93e08b3f89668b7eb90>>
88
*/
99

1010
/**
@@ -74,6 +74,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
7474

7575
@DoNotStrip @JvmStatic public external fun enableFabricCommitBranching(): Boolean
7676

77+
@DoNotStrip @JvmStatic public external fun enableFabricCommitBranchingMergeOnMainThread(): Boolean
78+
7779
@DoNotStrip @JvmStatic public external fun enableFabricLogs(): Boolean
7880

7981
@DoNotStrip @JvmStatic public external fun enableFlexboxAutoMinSizeInStrictMode(): Boolean

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<0c228a0f53ced43d6744551a92d0ed86>>
7+
* @generated SignedSource<<763e4b3cc142f1d34e7ce656ede0cb96>>
88
*/
99

1010
/**
@@ -69,6 +69,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
6969

7070
override fun enableFabricCommitBranching(): Boolean = false
7171

72+
override fun enableFabricCommitBranchingMergeOnMainThread(): Boolean = false
73+
7274
override fun enableFabricLogs(): Boolean = false
7375

7476
override fun enableFlexboxAutoMinSizeInStrictMode(): Boolean = false

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<37c9d46dfd98d868601390a9262f8d5a>>
7+
* @generated SignedSource<<50bc14130889050ec9d447626454fe58>>
88
*/
99

1010
/**
@@ -47,6 +47,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
4747
private var enableEagerRootViewAttachmentCache: Boolean? = null
4848
private var enableExclusivePropsUpdateAndroidCache: Boolean? = null
4949
private var enableFabricCommitBranchingCache: Boolean? = null
50+
private var enableFabricCommitBranchingMergeOnMainThreadCache: Boolean? = null
5051
private var enableFabricLogsCache: Boolean? = null
5152
private var enableFlexboxAutoMinSizeInStrictModeCache: Boolean? = null
5253
private var enableFontScaleChangesUpdatingLayoutCache: Boolean? = null
@@ -343,6 +344,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
343344
return cached
344345
}
345346

347+
override fun enableFabricCommitBranchingMergeOnMainThread(): Boolean {
348+
var cached = enableFabricCommitBranchingMergeOnMainThreadCache
349+
if (cached == null) {
350+
cached = currentProvider.enableFabricCommitBranchingMergeOnMainThread()
351+
accessedFeatureFlags.add("enableFabricCommitBranchingMergeOnMainThread")
352+
enableFabricCommitBranchingMergeOnMainThreadCache = cached
353+
}
354+
return cached
355+
}
356+
346357
override fun enableFabricLogs(): Boolean {
347358
var cached = enableFabricLogsCache
348359
if (cached == null) {

‎packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<18ffa42c9d28304df99548a350b014ac>>
7+
* @generated SignedSource<<a9eed3dc15b11bd5708439de0dc46cf9>>
88
*/
99

1010
/**
@@ -69,6 +69,8 @@ public interface ReactNativeFeatureFlagsProvider {
6969

7070
@DoNotStrip public fun enableFabricCommitBranching(): Boolean
7171

72+
@DoNotStrip public fun enableFabricCommitBranchingMergeOnMainThread(): Boolean
73+
7274
@DoNotStrip public fun enableFabricLogs(): Boolean
7375

7476
@DoNotStrip public fun enableFlexboxAutoMinSizeInStrictMode(): Boolean

‎packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<ebc2ba98faa638c89c86c45d35e93c3d>>
7+
* @generated SignedSource<<faf56e666f2f0aab01e17fa7d6e186c0>>
88
*/
99

1010
/**
@@ -177,6 +177,12 @@ class ReactNativeFeatureFlagsJavaProvider
177177
return method(javaProvider_);
178178
}
179179

180+
bool enableFabricCommitBranchingMergeOnMainThread() override {
181+
static const auto method =
182+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableFabricCommitBranchingMergeOnMainThread");
183+
return method(javaProvider_);
184+
}
185+
180186
bool enableFabricLogs() override {
181187
static const auto method =
182188
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableFabricLogs");
@@ -686,6 +692,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableFabricCommitBranching(
686692
return ReactNativeFeatureFlags::enableFabricCommitBranching();
687693
}
688694

695+
bool JReactNativeFeatureFlagsCxxInterop::enableFabricCommitBranchingMergeOnMainThread(
696+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
697+
return ReactNativeFeatureFlags::enableFabricCommitBranchingMergeOnMainThread();
698+
}
699+
689700
bool JReactNativeFeatureFlagsCxxInterop::enableFabricLogs(
690701
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
691702
return ReactNativeFeatureFlags::enableFabricLogs();
@@ -1111,6 +1122,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
11111122
makeNativeMethod(
11121123
"enableFabricCommitBranching",
11131124
JReactNativeFeatureFlagsCxxInterop::enableFabricCommitBranching),
1125+
makeNativeMethod(
1126+
"enableFabricCommitBranchingMergeOnMainThread",
1127+
JReactNativeFeatureFlagsCxxInterop::enableFabricCommitBranchingMergeOnMainThread),
11141128
makeNativeMethod(
11151129
"enableFabricLogs",
11161130
JReactNativeFeatureFlagsCxxInterop::enableFabricLogs),

‎packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<a19681d4edcac5523ea8978c2fbc52ab>>
7+
* @generated SignedSource<<006f29ff357deddc058c69c31528db83>>
88
*/
99

1010
/**
@@ -99,6 +99,9 @@ class JReactNativeFeatureFlagsCxxInterop
9999
static bool enableFabricCommitBranching(
100100
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
101101

102+
static bool enableFabricCommitBranchingMergeOnMainThread(
103+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
104+
102105
static bool enableFabricLogs(
103106
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
104107

‎packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<37ceecaa4ef7ce8b076a46652b6cf0f0>>
7+
* @generated SignedSource<<d61dace8faf4a80d6babbcd72bdbbde9>>
88
*/
99

1010
/**
@@ -118,6 +118,10 @@ bool ReactNativeFeatureFlags::enableFabricCommitBranching() {
118118
return getAccessor().enableFabricCommitBranching();
119119
}
120120

121+
bool ReactNativeFeatureFlags::enableFabricCommitBranchingMergeOnMainThread() {
122+
return getAccessor().enableFabricCommitBranchingMergeOnMainThread();
123+
}
124+
121125
bool ReactNativeFeatureFlags::enableFabricLogs() {
122126
return getAccessor().enableFabricLogs();
123127
}

‎packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<d3937c47ffa5234a2b7632aa92387ee3>>
7+
* @generated SignedSource<<7f1f0374fb5e2ec1b2727d1d2a7fc304>>
88
*/
99

1010
/**
@@ -152,10 +152,15 @@ class ReactNativeFeatureFlags {
152152
RN_EXPORT static bool enableExclusivePropsUpdateAndroid();
153153

154154
/**
155-
* Enables Fabric commit branching to fix starvation problems and atomic JS updates.
155+
* Enables Fabric commit branching to fix atomic JS updates.
156156
*/
157157
RN_EXPORT static bool enableFabricCommitBranching();
158158

159+
/**
160+
* Enables Fabric commit branching merge to happen on the main thread to fix starvation problems.
161+
*/
162+
RN_EXPORT static bool enableFabricCommitBranchingMergeOnMainThread();
163+
159164
/**
160165
* This feature flag enables logs for Fabric.
161166
*/

0 commit comments

Comments
 (0)