Skip to content

Commit 30c01e5

Browse files
Consolidate image prefetch flags into enableImagePrefetchingAndroid (#56610)
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] Reviewed By: sammy-SC Differential Revision: D102428102
1 parent 86dbb3b commit 30c01e5

24 files changed

Lines changed: 87 additions & 333 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<<6ad566ffaa8330c696fa2088ff696a2b>>
7+
* @generated SignedSource<<c9be40b9d016463d1531057598a6aa88>>
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<<ff84a26e3306cc438fead82ad766ce53>>
7+
* @generated SignedSource<<d07f1b96cf6e0a1798f86fc9f61caf73>>
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
@@ -375,24 +373,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
375373
return cached
376374
}
377375

378-
override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
379-
var cached = enableImagePrefetchingJNIBatchingAndroidCache
380-
if (cached == null) {
381-
cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingJNIBatchingAndroid()
382-
enableImagePrefetchingJNIBatchingAndroidCache = cached
383-
}
384-
return cached
385-
}
386-
387-
override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
388-
var cached = enableImagePrefetchingOnUiThreadAndroidCache
389-
if (cached == null) {
390-
cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingOnUiThreadAndroid()
391-
enableImagePrefetchingOnUiThreadAndroidCache = cached
392-
}
393-
return cached
394-
}
395-
396376
override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
397377
var cached = enableImmediateUpdateModeForContentOffsetChangesCache
398378
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<<817790c7ceb9112376b4ab4ee338ff43>>
7+
* @generated SignedSource<<d9aa2a16720aa9fd4378c0c14e4f8ffa>>
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<<1d764e41252e2709e574da5e0ac64bd7>>
7+
* @generated SignedSource<<54a4f6d01a052e5ab19b15652d5ab1a5>>
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<<299507458fe84339ddf816dd58671fd3>>
7+
* @generated SignedSource<<4d09d820304f454bc3850da89087caec>>
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
@@ -408,26 +406,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
408406
return cached
409407
}
410408

411-
override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
412-
var cached = enableImagePrefetchingJNIBatchingAndroidCache
413-
if (cached == null) {
414-
cached = currentProvider.enableImagePrefetchingJNIBatchingAndroid()
415-
accessedFeatureFlags.add("enableImagePrefetchingJNIBatchingAndroid")
416-
enableImagePrefetchingJNIBatchingAndroidCache = cached
417-
}
418-
return cached
419-
}
420-
421-
override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
422-
var cached = enableImagePrefetchingOnUiThreadAndroidCache
423-
if (cached == null) {
424-
cached = currentProvider.enableImagePrefetchingOnUiThreadAndroid()
425-
accessedFeatureFlags.add("enableImagePrefetchingOnUiThreadAndroid")
426-
enableImagePrefetchingOnUiThreadAndroidCache = cached
427-
}
428-
return cached
429-
}
430-
431409
override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
432410
var cached = enableImmediateUpdateModeForContentOffsetChangesCache
433411
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<<8f887fb839df553b23886a61537e6991>>
7+
* @generated SignedSource<<592acf445c4b4e56651cd6afb57e46fa>>
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<<5cd1b7223dd852a97280f6dd9bd3e559>>
7+
* @generated SignedSource<<55e4d6d6dc930b4ccf3e20cb77f7a042>>
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");
@@ -746,16 +734,6 @@ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid(
746734
return ReactNativeFeatureFlags::enableImagePrefetchingAndroid();
747735
}
748736

749-
bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid(
750-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
751-
return ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid();
752-
}
753-
754-
bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid(
755-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
756-
return ReactNativeFeatureFlags::enableImagePrefetchingOnUiThreadAndroid();
757-
}
758-
759737
bool JReactNativeFeatureFlagsCxxInterop::enableImmediateUpdateModeForContentOffsetChanges(
760738
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
761739
return ReactNativeFeatureFlags::enableImmediateUpdateModeForContentOffsetChanges();
@@ -1184,12 +1162,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
11841162
makeNativeMethod(
11851163
"enableImagePrefetchingAndroid",
11861164
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid),
1187-
makeNativeMethod(
1188-
"enableImagePrefetchingJNIBatchingAndroid",
1189-
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid),
1190-
makeNativeMethod(
1191-
"enableImagePrefetchingOnUiThreadAndroid",
1192-
JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid),
11931165
makeNativeMethod(
11941166
"enableImmediateUpdateModeForContentOffsetChanges",
11951167
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<<b738c6cd756294b4d2a79f3a058a20b8>>
7+
* @generated SignedSource<<f1db4e44d0b5d3daa11aec0e6a83e09f>>
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)