Skip to content

Commit 7f62ff6

Browse files
javachefacebook-github-bot
authored andcommitted
Cleanup completeReactInstanceCreationOnBgThreadOnAndroid and useImmediateExecutorInAndroidBridgeless flags (facebook#48916)
Summary: Pull Request resolved: facebook#48916 Cleaning up this feature flag since we no longer require this gating. This was already fulled rulled out as default. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D68621578 fbshipit-source-id: 3fd3ad007b8beb8e2525ffa7b4da372be1dbbd94
1 parent b186d8f commit 7f62ff6

21 files changed

+75
-342
lines changed

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

Lines changed: 1 addition & 13 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<<b859be47c2d48d62aff10ad54de36e55>>
7+
* @generated SignedSource<<ee8592f9694f255c1f16e847db87cefe>>
88
*/
99

1010
/**
@@ -34,12 +34,6 @@ public object ReactNativeFeatureFlags {
3434
@JvmStatic
3535
public fun commonTestFlag(): Boolean = accessor.commonTestFlag()
3636

37-
/**
38-
* Do not wait for a main-thread dispatch to complete init to start executing work on the JS thread on Android
39-
*/
40-
@JvmStatic
41-
public fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean = accessor.completeReactInstanceCreationOnBgThreadOnAndroid()
42-
4337
/**
4438
* Prevent FabricMountingManager from reordering mountitems, which may lead to invalid state on the UI thread
4539
*/
@@ -250,12 +244,6 @@ public object ReactNativeFeatureFlags {
250244
@JvmStatic
251245
public fun useFabricInterop(): Boolean = accessor.useFabricInterop()
252246

253-
/**
254-
* Invoke callbacks immediately on the ReactInstance rather than going through a background thread for synchronization
255-
*/
256-
@JvmStatic
257-
public fun useImmediateExecutorInAndroidBridgeless(): Boolean = accessor.useImmediateExecutorInAndroidBridgeless()
258-
259247
/**
260248
* When enabled, the native view configs are used in bridgeless mode.
261249
*/

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

Lines changed: 1 addition & 21 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<<abef684a503f04c2af679c9a0d71fb94>>
7+
* @generated SignedSource<<9e914ad3b6c5e588c65fc4ff189299f4>>
88
*/
99

1010
/**
@@ -21,7 +21,6 @@ package com.facebook.react.internal.featureflags
2121

2222
internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccessor {
2323
private var commonTestFlagCache: Boolean? = null
24-
private var completeReactInstanceCreationOnBgThreadOnAndroidCache: Boolean? = null
2524
private var disableMountItemReorderingAndroidCache: Boolean? = null
2625
private var enableAccumulatedUpdatesInRawPropsAndroidCache: Boolean? = null
2726
private var enableBridgelessArchitectureCache: Boolean? = null
@@ -57,7 +56,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
5756
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
5857
private var useEditTextStockAndroidFocusBehaviorCache: Boolean? = null
5958
private var useFabricInteropCache: Boolean? = null
60-
private var useImmediateExecutorInAndroidBridgelessCache: Boolean? = null
6159
private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
6260
private var useOptimisedViewPreallocationOnAndroidCache: Boolean? = null
6361
private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
@@ -75,15 +73,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
7573
return cached
7674
}
7775

78-
override fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean {
79-
var cached = completeReactInstanceCreationOnBgThreadOnAndroidCache
80-
if (cached == null) {
81-
cached = ReactNativeFeatureFlagsCxxInterop.completeReactInstanceCreationOnBgThreadOnAndroid()
82-
completeReactInstanceCreationOnBgThreadOnAndroidCache = cached
83-
}
84-
return cached
85-
}
86-
8776
override fun disableMountItemReorderingAndroid(): Boolean {
8877
var cached = disableMountItemReorderingAndroidCache
8978
if (cached == null) {
@@ -399,15 +388,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
399388
return cached
400389
}
401390

402-
override fun useImmediateExecutorInAndroidBridgeless(): Boolean {
403-
var cached = useImmediateExecutorInAndroidBridgelessCache
404-
if (cached == null) {
405-
cached = ReactNativeFeatureFlagsCxxInterop.useImmediateExecutorInAndroidBridgeless()
406-
useImmediateExecutorInAndroidBridgelessCache = cached
407-
}
408-
return cached
409-
}
410-
411391
override fun useNativeViewConfigsInBridgelessMode(): Boolean {
412392
var cached = useNativeViewConfigsInBridgelessModeCache
413393
if (cached == null) {

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

Lines changed: 1 addition & 5 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<<e78c96fa240965844d5b9142e58e448e>>
7+
* @generated SignedSource<<de387611b8d57f9c468a641c1eec6e09>>
88
*/
99

1010
/**
@@ -30,8 +30,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
3030

3131
@DoNotStrip @JvmStatic public external fun commonTestFlag(): Boolean
3232

33-
@DoNotStrip @JvmStatic public external fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean
34-
3533
@DoNotStrip @JvmStatic public external fun disableMountItemReorderingAndroid(): Boolean
3634

3735
@DoNotStrip @JvmStatic public external fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean
@@ -102,8 +100,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
102100

103101
@DoNotStrip @JvmStatic public external fun useFabricInterop(): Boolean
104102

105-
@DoNotStrip @JvmStatic public external fun useImmediateExecutorInAndroidBridgeless(): Boolean
106-
107103
@DoNotStrip @JvmStatic public external fun useNativeViewConfigsInBridgelessMode(): Boolean
108104

109105
@DoNotStrip @JvmStatic public external fun useOptimisedViewPreallocationOnAndroid(): Boolean

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

Lines changed: 1 addition & 5 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<<2d28a6cd8bce4cb845511749e46a6695>>
7+
* @generated SignedSource<<60faf8d807eeec68261bffb84bb3794b>>
88
*/
99

1010
/**
@@ -25,8 +25,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
2525

2626
override fun commonTestFlag(): Boolean = false
2727

28-
override fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean = true
29-
3028
override fun disableMountItemReorderingAndroid(): Boolean = false
3129

3230
override fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean = false
@@ -97,8 +95,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
9795

9896
override fun useFabricInterop(): Boolean = false
9997

100-
override fun useImmediateExecutorInAndroidBridgeless(): Boolean = true
101-
10298
override fun useNativeViewConfigsInBridgelessMode(): Boolean = false
10399

104100
override fun useOptimisedViewPreallocationOnAndroid(): Boolean = false

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

Lines changed: 1 addition & 23 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<<196d9ffaf89a44b190d2513c0a1fb0e1>>
7+
* @generated SignedSource<<2074a87060761850c6d619aaac40e0cf>>
88
*/
99

1010
/**
@@ -25,7 +25,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
2525
private val accessedFeatureFlags = mutableSetOf<String>()
2626

2727
private var commonTestFlagCache: Boolean? = null
28-
private var completeReactInstanceCreationOnBgThreadOnAndroidCache: Boolean? = null
2928
private var disableMountItemReorderingAndroidCache: Boolean? = null
3029
private var enableAccumulatedUpdatesInRawPropsAndroidCache: Boolean? = null
3130
private var enableBridgelessArchitectureCache: Boolean? = null
@@ -61,7 +60,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
6160
private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
6261
private var useEditTextStockAndroidFocusBehaviorCache: Boolean? = null
6362
private var useFabricInteropCache: Boolean? = null
64-
private var useImmediateExecutorInAndroidBridgelessCache: Boolean? = null
6563
private var useNativeViewConfigsInBridgelessModeCache: Boolean? = null
6664
private var useOptimisedViewPreallocationOnAndroidCache: Boolean? = null
6765
private var useOptimizedEventBatchingOnAndroidCache: Boolean? = null
@@ -80,16 +78,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
8078
return cached
8179
}
8280

83-
override fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean {
84-
var cached = completeReactInstanceCreationOnBgThreadOnAndroidCache
85-
if (cached == null) {
86-
cached = currentProvider.completeReactInstanceCreationOnBgThreadOnAndroid()
87-
accessedFeatureFlags.add("completeReactInstanceCreationOnBgThreadOnAndroid")
88-
completeReactInstanceCreationOnBgThreadOnAndroidCache = cached
89-
}
90-
return cached
91-
}
92-
9381
override fun disableMountItemReorderingAndroid(): Boolean {
9482
var cached = disableMountItemReorderingAndroidCache
9583
if (cached == null) {
@@ -440,16 +428,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
440428
return cached
441429
}
442430

443-
override fun useImmediateExecutorInAndroidBridgeless(): Boolean {
444-
var cached = useImmediateExecutorInAndroidBridgelessCache
445-
if (cached == null) {
446-
cached = currentProvider.useImmediateExecutorInAndroidBridgeless()
447-
accessedFeatureFlags.add("useImmediateExecutorInAndroidBridgeless")
448-
useImmediateExecutorInAndroidBridgelessCache = cached
449-
}
450-
return cached
451-
}
452-
453431
override fun useNativeViewConfigsInBridgelessMode(): Boolean {
454432
var cached = useNativeViewConfigsInBridgelessModeCache
455433
if (cached == null) {

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

Lines changed: 1 addition & 5 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<<2c72645e0cfcb38493bc9daddfb8cd06>>
7+
* @generated SignedSource<<8c953d87b8fb25b0d52ddd916312a1d9>>
88
*/
99

1010
/**
@@ -25,8 +25,6 @@ import com.facebook.proguard.annotations.DoNotStrip
2525
public interface ReactNativeFeatureFlagsProvider {
2626
@DoNotStrip public fun commonTestFlag(): Boolean
2727

28-
@DoNotStrip public fun completeReactInstanceCreationOnBgThreadOnAndroid(): Boolean
29-
3028
@DoNotStrip public fun disableMountItemReorderingAndroid(): Boolean
3129

3230
@DoNotStrip public fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean
@@ -97,8 +95,6 @@ public interface ReactNativeFeatureFlagsProvider {
9795

9896
@DoNotStrip public fun useFabricInterop(): Boolean
9997

100-
@DoNotStrip public fun useImmediateExecutorInAndroidBridgeless(): Boolean
101-
10298
@DoNotStrip public fun useNativeViewConfigsInBridgelessMode(): Boolean
10399

104100
@DoNotStrip public fun useOptimisedViewPreallocationOnAndroid(): Boolean

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java

Lines changed: 13 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,12 +1026,6 @@ private void raiseSoftException(
10261026
TAG, new ReactNoCrashSoftException(method + ": " + message, throwable));
10271027
}
10281028

1029-
private Executor getDefaultReactInstanceExecutor() {
1030-
return ReactNativeFeatureFlags.useImmediateExecutorInAndroidBridgeless()
1031-
? Task.IMMEDIATE_EXECUTOR
1032-
: mBGExecutor;
1033-
}
1034-
10351029
/** Schedule work on a ReactInstance that is already created. */
10361030
private Task<Boolean> callWithExistingReactInstance(
10371031
final String callingMethod,
@@ -1040,17 +1034,14 @@ private Task<Boolean> callWithExistingReactInstance(
10401034
final String method = "callWithExistingReactInstance(" + callingMethod + ")";
10411035

10421036
if (executor == null) {
1043-
executor = getDefaultReactInstanceExecutor();
1037+
executor = Task.IMMEDIATE_EXECUTOR;
10441038
}
10451039

10461040
return mCreateReactInstanceTaskRef
10471041
.get()
10481042
.onSuccess(
10491043
task -> {
1050-
final ReactInstance reactInstance =
1051-
ReactNativeFeatureFlags.completeReactInstanceCreationOnBgThreadOnAndroid()
1052-
? task.getResult()
1053-
: mReactInstance;
1044+
final ReactInstance reactInstance = task.getResult();
10541045
if (reactInstance == null) {
10551046
raiseSoftException(method, "Execute: reactInstance is null. Dropping work.");
10561047
return FALSE;
@@ -1070,16 +1061,13 @@ private Task<Void> callAfterGetOrCreateReactInstance(
10701061
final String method = "callAfterGetOrCreateReactInstance(" + callingMethod + ")";
10711062

10721063
if (executor == null) {
1073-
executor = getDefaultReactInstanceExecutor();
1064+
executor = Task.IMMEDIATE_EXECUTOR;
10741065
}
10751066

10761067
return getOrCreateReactInstance()
10771068
.onSuccess(
10781069
task -> {
1079-
final ReactInstance reactInstance =
1080-
ReactNativeFeatureFlags.completeReactInstanceCreationOnBgThreadOnAndroid()
1081-
? task.getResult()
1082-
: mReactInstance;
1070+
final ReactInstance reactInstance = task.getResult();
10831071
if (reactInstance == null) {
10841072
raiseSoftException(method, "Execute: reactInstance is null. Dropping work.");
10851073
return null;
@@ -1280,13 +1268,9 @@ private Task<ReactInstance> getOrCreateReactInstanceTask() {
12801268
return reactInstance;
12811269
};
12821270

1283-
if (ReactNativeFeatureFlags.completeReactInstanceCreationOnBgThreadOnAndroid()) {
1284-
creationTask.onSuccess(lifecycleUpdateTask, mUIExecutor);
1285-
return creationTask.onSuccess(
1286-
task -> task.getResult().mInstance, Task.IMMEDIATE_EXECUTOR);
1287-
} else {
1288-
return creationTask.onSuccess(lifecycleUpdateTask, mUIExecutor);
1289-
}
1271+
creationTask.onSuccess(lifecycleUpdateTask, mUIExecutor);
1272+
return creationTask.onSuccess(
1273+
task -> task.getResult().mInstance, Task.IMMEDIATE_EXECUTOR);
12901274
});
12911275
}
12921276

@@ -1480,12 +1464,10 @@ private Task<ReactInstance> getOrCreateReloadTask(String reason) {
14801464
if (mReloadTask == null) {
14811465
// When using the immediate executor, we want to avoid scheduling any further work immediately
14821466
// when destruction is kicked off.
1483-
Task<ReactInstance> createTask =
1484-
ReactNativeFeatureFlags.completeReactInstanceCreationOnBgThreadOnAndroid()
1485-
? mCreateReactInstanceTaskRef.getAndReset()
1486-
: mCreateReactInstanceTaskRef.get();
1467+
log(method, "Resetting createReactInstance task ref");
14871468
mReloadTask =
1488-
createTask
1469+
mCreateReactInstanceTaskRef
1470+
.getAndReset()
14891471
.continueWithTask(
14901472
(task) -> {
14911473
log(method, "Starting React Native reload");
@@ -1570,14 +1552,6 @@ private Task<ReactInstance> getOrCreateReloadTask(String reason) {
15701552
reactInstance.destroy();
15711553
}
15721554

1573-
// Originally, we reset the instance task ref quite late, leading to potential
1574-
// racing invocations while shutting down
1575-
if (!ReactNativeFeatureFlags
1576-
.completeReactInstanceCreationOnBgThreadOnAndroid()) {
1577-
log(method, "Resetting createReactInstance task ref");
1578-
mCreateReactInstanceTaskRef.reset();
1579-
}
1580-
15811555
log(method, "Resetting start task ref");
15821556
mStartTask = null;
15831557

@@ -1656,13 +1630,10 @@ private Task<Void> getOrCreateDestroyTask(final String reason, @Nullable Excepti
16561630
if (mDestroyTask == null) {
16571631
// When using the immediate executor, we want to avoid scheduling any further work immediately
16581632
// when destruction is kicked off.
1659-
Task<ReactInstance> createTask =
1660-
ReactNativeFeatureFlags.completeReactInstanceCreationOnBgThreadOnAndroid()
1661-
? mCreateReactInstanceTaskRef.getAndReset()
1662-
: mCreateReactInstanceTaskRef.get();
1663-
1633+
log(method, "Resetting createReactInstance task ref");
16641634
mDestroyTask =
1665-
createTask
1635+
mCreateReactInstanceTaskRef
1636+
.getAndReset()
16661637
.continueWithTask(
16671638
task -> {
16681639
log(method, "Starting React Native destruction");
@@ -1768,14 +1739,6 @@ private Task<Void> getOrCreateDestroyTask(final String reason, @Nullable Excepti
17681739
reactInstance.destroy();
17691740
}
17701741

1771-
// Originally, we reset the instance task ref quite late, leading to potential
1772-
// racing invocations while shutting down
1773-
if (!ReactNativeFeatureFlags
1774-
.completeReactInstanceCreationOnBgThreadOnAndroid()) {
1775-
log(method, "Resetting createReactInstance task ref");
1776-
mCreateReactInstanceTaskRef.reset();
1777-
}
1778-
17791742
log(method, "Resetting start task ref");
17801743
mStartTask = null;
17811744

0 commit comments

Comments
 (0)