Skip to content

Commit 3a1c393

Browse files
Consolidate image prefetch flags into enableImagePrefetchingAndroid
Summary: Removes deprecated feature flags `enableImagePrefetchingJNIBatchingAndroid` and `enableImagePrefetchingOnUiThreadAndroid` by consolidating their behavior into `enableImagePrefetchingAndroid`. The changes make image prefetch batching and UI thread dispatch the default behavior when `enableImagePrefetchingAndroid` is enabled. This simplifies the feature flag system and removes intermediate experimentation flags that are no longer needed. Changelog: [Internal] Differential Revision: D102428102
1 parent 11d894d commit 3a1c393

24 files changed

Lines changed: 85 additions & 331 deletions

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,15 +1011,8 @@ private void scheduleReactRevisionMerge(int surfaceId) {
10111011
@UnstableReactNativeAPI
10121012
public void experimental_prefetchResources(
10131013
int surfaceId, String componentName, ReadableMapBuffer params) {
1014-
if (ReactNativeFeatureFlags.enableImagePrefetchingOnUiThreadAndroid()) {
1015-
mMountItemDispatcher.addMountItem(
1016-
new PrefetchResourcesMountItem(surfaceId, componentName, params));
1017-
} else {
1018-
SurfaceMountingManager surfaceMountingManager = mMountingManager.getSurfaceManager(surfaceId);
1019-
if (surfaceMountingManager != null) {
1020-
surfaceMountingManager.experimental_prefetchResources(surfaceId, componentName, params);
1021-
}
1022-
}
1014+
mMountItemDispatcher.addMountItem(
1015+
new PrefetchResourcesMountItem(surfaceId, componentName, params));
10231016
}
10241017

10251018
void setBinding(FabricUIManagerBinding binding) {

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<<eb70fd41bc36f1a49849e29bea081007>>
7+
* @generated SignedSource<<53daad65df12e466da679ffc43d6dd9a>>
88
*/
99

1010
/**
@@ -204,18 +204,6 @@ public object ReactNativeFeatureFlags {
204204
@JvmStatic
205205
public fun enableImagePrefetchingAndroid(): Boolean = accessor.enableImagePrefetchingAndroid()
206206

207-
/**
208-
* When enabled, Android will build and initiate image prefetch requests on ImageShadowNode::layout and batch them together in a single JNI call
209-
*/
210-
@JvmStatic
211-
public fun enableImagePrefetchingJNIBatchingAndroid(): Boolean = accessor.enableImagePrefetchingJNIBatchingAndroid()
212-
213-
/**
214-
* When enabled, Android will initiate image prefetch requested on ImageShadowNode::layout on the UI thread
215-
*/
216-
@JvmStatic
217-
public fun enableImagePrefetchingOnUiThreadAndroid(): Boolean = accessor.enableImagePrefetchingOnUiThreadAndroid()
218-
219207
/**
220208
* Dispatches state updates for content offset changes synchronously on the main thread.
221209
*/

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<<f79ca61a0da053a1661eca4d3a35b081>>
7+
* @generated SignedSource<<a994cffc9e97d5fed7301c05e18b136c>>
88
*/
99

1010
/**
@@ -49,8 +49,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
4949
private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
5050
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
5151
private var enableImagePrefetchingAndroidCache: Boolean? = null
52-
private var enableImagePrefetchingJNIBatchingAndroidCache: Boolean? = null
53-
private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
5452
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5553
private var enableImperativeFocusCache: Boolean? = null
5654
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
@@ -373,24 +371,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
373371
return cached
374372
}
375373

376-
override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
377-
var cached = enableImagePrefetchingJNIBatchingAndroidCache
378-
if (cached == null) {
379-
cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingJNIBatchingAndroid()
380-
enableImagePrefetchingJNIBatchingAndroidCache = cached
381-
}
382-
return cached
383-
}
384-
385-
override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
386-
var cached = enableImagePrefetchingOnUiThreadAndroidCache
387-
if (cached == null) {
388-
cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingOnUiThreadAndroid()
389-
enableImagePrefetchingOnUiThreadAndroidCache = cached
390-
}
391-
return cached
392-
}
393-
394374
override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
395375
var cached = enableImmediateUpdateModeForContentOffsetChangesCache
396376
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<<62d1f0fcdf8e3165480da12575d62826>>
7+
* @generated SignedSource<<fbbb77307c3302656b1fffb81b8da376>>
88
*/
99

1010
/**
@@ -86,10 +86,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
8686

8787
@DoNotStrip @JvmStatic public external fun enableImagePrefetchingAndroid(): Boolean
8888

89-
@DoNotStrip @JvmStatic public external fun enableImagePrefetchingJNIBatchingAndroid(): Boolean
90-
91-
@DoNotStrip @JvmStatic public external fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
92-
9389
@DoNotStrip @JvmStatic public external fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
9490

9591
@DoNotStrip @JvmStatic public external fun enableImperativeFocus(): 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<<84ac5b80585f9185c879c81822718d86>>
7+
* @generated SignedSource<<713730866be213b4d6a9d98e34cffb55>>
88
*/
99

1010
/**
@@ -81,10 +81,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
8181

8282
override fun enableImagePrefetchingAndroid(): Boolean = false
8383

84-
override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean = false
85-
86-
override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean = false
87-
8884
override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean = false
8985

9086
override fun enableImperativeFocus(): 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<<3574e23fe8f846e408964af26cf0dd4c>>
7+
* @generated SignedSource<<3a0ca9affe6a3a334d78a7896e13c768>>
88
*/
99

1010
/**
@@ -53,8 +53,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
5353
private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
5454
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
5555
private var enableImagePrefetchingAndroidCache: Boolean? = null
56-
private var enableImagePrefetchingJNIBatchingAndroidCache: Boolean? = null
57-
private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
5856
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5957
private var enableImperativeFocusCache: Boolean? = null
6058
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
@@ -406,26 +404,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
406404
return cached
407405
}
408406

409-
override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
410-
var cached = enableImagePrefetchingJNIBatchingAndroidCache
411-
if (cached == null) {
412-
cached = currentProvider.enableImagePrefetchingJNIBatchingAndroid()
413-
accessedFeatureFlags.add("enableImagePrefetchingJNIBatchingAndroid")
414-
enableImagePrefetchingJNIBatchingAndroidCache = cached
415-
}
416-
return cached
417-
}
418-
419-
override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
420-
var cached = enableImagePrefetchingOnUiThreadAndroidCache
421-
if (cached == null) {
422-
cached = currentProvider.enableImagePrefetchingOnUiThreadAndroid()
423-
accessedFeatureFlags.add("enableImagePrefetchingOnUiThreadAndroid")
424-
enableImagePrefetchingOnUiThreadAndroidCache = cached
425-
}
426-
return cached
427-
}
428-
429407
override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
430408
var cached = enableImmediateUpdateModeForContentOffsetChangesCache
431409
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<<9222fd90d191a91893e2c58770d83259>>
7+
* @generated SignedSource<<cdbe341cf71613a2ae07ff1ad332a964>>
88
*/
99

1010
/**
@@ -81,10 +81,6 @@ public interface ReactNativeFeatureFlagsProvider {
8181

8282
@DoNotStrip public fun enableImagePrefetchingAndroid(): Boolean
8383

84-
@DoNotStrip public fun enableImagePrefetchingJNIBatchingAndroid(): Boolean
85-
86-
@DoNotStrip public fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
87-
8884
@DoNotStrip public fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
8985

9086
@DoNotStrip public fun enableImperativeFocus(): Boolean

packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ void FabricUIManagerBinding::schedulerShouldRenderTransactions(
659659
return;
660660
}
661661

662-
if (ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid()) {
662+
if (ReactNativeFeatureFlags::enableImagePrefetchingAndroid()) {
663663
auto weakImageFetcher =
664664
scheduler_->getContextContainer()->find<std::weak_ptr<ImageFetcher>>(
665665
ImageFetcherKey);

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

Lines changed: 1 addition & 29 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<<e8cf371a99a72250ea1b0104dc7f8254>>
7+
* @generated SignedSource<<29ad901fc656874b205ab73f3095fc9a>>
88
*/
99

1010
/**
@@ -213,18 +213,6 @@ class ReactNativeFeatureFlagsJavaProvider
213213
return method(javaProvider_);
214214
}
215215

216-
bool enableImagePrefetchingJNIBatchingAndroid() override {
217-
static const auto method =
218-
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImagePrefetchingJNIBatchingAndroid");
219-
return method(javaProvider_);
220-
}
221-
222-
bool enableImagePrefetchingOnUiThreadAndroid() override {
223-
static const auto method =
224-
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImagePrefetchingOnUiThreadAndroid");
225-
return method(javaProvider_);
226-
}
227-
228216
bool enableImmediateUpdateModeForContentOffsetChanges() override {
229217
static const auto method =
230218
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImmediateUpdateModeForContentOffsetChanges");
@@ -734,16 +722,6 @@ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid(
734722
return ReactNativeFeatureFlags::enableImagePrefetchingAndroid();
735723
}
736724

737-
bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid(
738-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
739-
return ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid();
740-
}
741-
742-
bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid(
743-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
744-
return ReactNativeFeatureFlags::enableImagePrefetchingOnUiThreadAndroid();
745-
}
746-
747725
bool JReactNativeFeatureFlagsCxxInterop::enableImmediateUpdateModeForContentOffsetChanges(
748726
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
749727
return ReactNativeFeatureFlags::enableImmediateUpdateModeForContentOffsetChanges();
@@ -1162,12 +1140,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
11621140
makeNativeMethod(
11631141
"enableImagePrefetchingAndroid",
11641142
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid),
1165-
makeNativeMethod(
1166-
"enableImagePrefetchingJNIBatchingAndroid",
1167-
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid),
1168-
makeNativeMethod(
1169-
"enableImagePrefetchingOnUiThreadAndroid",
1170-
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid),
11711143
makeNativeMethod(
11721144
"enableImmediateUpdateModeForContentOffsetChanges",
11731145
JReactNativeFeatureFlagsCxxInterop::enableImmediateUpdateModeForContentOffsetChanges),

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

Lines changed: 1 addition & 7 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<<773741594e911047dac28904e9fc9544>>
7+
* @generated SignedSource<<f69e8e4143d7361f8130cdcdbec83970>>
88
*/
99

1010
/**
@@ -117,12 +117,6 @@ class JReactNativeFeatureFlagsCxxInterop
117117
static bool enableImagePrefetchingAndroid(
118118
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
119119

120-
static bool enableImagePrefetchingJNIBatchingAndroid(
121-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
122-
123-
static bool enableImagePrefetchingOnUiThreadAndroid(
124-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
125-
126120
static bool enableImmediateUpdateModeForContentOffsetChanges(
127121
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
128122

0 commit comments

Comments
 (0)