react-native 0.84.0-nightly-20251111-4f490818a → 0.84.0-nightly-20251112-7dcedf1de

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/Libraries/Text/Text.js +42 -2
  3. package/React/Base/RCTVersion.m +1 -1
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +8 -0
  5. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +20 -0
  6. package/ReactAndroid/gradle.properties +1 -1
  7. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +1 -1
  15. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  16. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  17. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  18. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  19. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  20. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +75 -57
  21. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  22. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  23. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  24. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  25. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
  26. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
  27. package/package.json +8 -8
  28. package/scripts/cocoapods/spm.rb +28 -10
  29. package/sdks/hermes-engine/hermes-utils.rb +14 -10
  30. package/src/private/featureflags/ReactNativeFeatureFlags.js +12 -1
  31. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 84;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'nightly-20251111-4f490818a';
32
+ static prerelease: string | null = 'nightly-20251112-7dcedf1de';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -45,6 +45,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
45
45
  ref: forwardedRef,
46
46
  accessible,
47
47
  accessibilityLabel,
48
+ accessibilityRole,
48
49
  accessibilityState,
49
50
  allowFontScaling,
50
51
  'aria-busy': ariaBusy,
@@ -71,6 +72,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
71
72
  onResponderTerminationRequest,
72
73
  onStartShouldSetResponder,
73
74
  pressRetentionOffset,
75
+ role,
74
76
  selectable,
75
77
  selectionColor,
76
78
  suppressHighlighting,
@@ -149,6 +151,17 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
149
151
  onStartShouldSetResponder != null) &&
150
152
  _disabled !== true;
151
153
 
154
+ const shouldUseLinkRole =
155
+ ReactNativeFeatureFlags.shouldUseLinkRoleForPressableText() &&
156
+ isPressable &&
157
+ accessibilityRole == null &&
158
+ role == null;
159
+
160
+ const _accessibilityRole =
161
+ accessibilityRole ?? (shouldUseLinkRole ? 'link' : undefined);
162
+
163
+ const _role = shouldUseLinkRole ? undefined : role;
164
+
152
165
  // TODO: Move this processing to the view configuration.
153
166
  const _selectionColor =
154
167
  selectionColor != null ? processColor(selectionColor) : undefined;
@@ -206,6 +219,9 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
206
219
  if (_accessibilityLabel !== undefined) {
207
220
  processedProps.accessibilityLabel = _accessibilityLabel;
208
221
  }
222
+ if (_accessibilityRole !== undefined) {
223
+ processedProps.accessibilityRole = _accessibilityRole;
224
+ }
209
225
  if (_accessibilityState !== undefined) {
210
226
  processedProps.accessibilityState = _accessibilityState;
211
227
  }
@@ -224,6 +240,9 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
224
240
  if (_selectionColor !== undefined) {
225
241
  processedProps.selectionColor = _selectionColor;
226
242
  }
243
+ if (_role !== undefined) {
244
+ processedProps.role = _role;
245
+ }
227
246
 
228
247
  let textPressabilityProps: ?TextPressabilityProps;
229
248
  if (isPressable) {
@@ -317,6 +336,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
317
336
  accessibilityElementsHidden,
318
337
  importantForAccessibility,
319
338
  accessibilityLabel,
339
+ accessibilityRole,
320
340
  accessibilityState,
321
341
  allowFontScaling,
322
342
  'aria-busy': ariaBusy,
@@ -343,6 +363,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
343
363
  onResponderTerminationRequest,
344
364
  onStartShouldSetResponder,
345
365
  pressRetentionOffset,
366
+ role,
346
367
  selectable,
347
368
  selectionColor,
348
369
  suppressHighlighting,
@@ -398,6 +419,17 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
398
419
  onStartShouldSetResponder != null) &&
399
420
  _disabled !== true;
400
421
 
422
+ const shouldUseLinkRole =
423
+ ReactNativeFeatureFlags.shouldUseLinkRoleForPressableText() &&
424
+ isPressable &&
425
+ accessibilityRole == null &&
426
+ role == null;
427
+
428
+ const _accessibilityRole =
429
+ accessibilityRole ?? (shouldUseLinkRole ? 'link' : undefined);
430
+
431
+ const _role = shouldUseLinkRole ? undefined : role;
432
+
401
433
  // TODO: Move this processing to the view configuration.
402
434
  const _selectionColor =
403
435
  selectionColor != null ? processColor(selectionColor) : undefined;
@@ -462,6 +494,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
462
494
  ...restProps,
463
495
  accessibilityElementsHidden: _accessibilityElementsHidden,
464
496
  accessibilityLabel: _accessibilityLabel,
497
+ accessibilityRole: _accessibilityRole,
465
498
  accessibilityState: _accessibilityState,
466
499
  importantForAccessibility: _importantForAccessibility,
467
500
  nativeID: _nativeID,
@@ -470,6 +503,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
470
503
  selectionColor: _selectionColor,
471
504
  style: _style,
472
505
  disabled: disabled,
506
+ role: _role,
473
507
  children,
474
508
  }}
475
509
  textPressabilityProps={{
@@ -495,6 +529,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
495
529
  {...restProps}
496
530
  accessibilityElementsHidden={_accessibilityElementsHidden}
497
531
  accessibilityLabel={_accessibilityLabel}
532
+ accessibilityRole={_accessibilityRole}
498
533
  accessibilityState={_accessibilityState}
499
534
  importantForAccessibility={_importantForAccessibility}
500
535
  nativeID={_nativeID}
@@ -503,7 +538,8 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
503
538
  selectable={_selectable}
504
539
  selectionColor={_selectionColor}
505
540
  style={_style}
506
- disabled={disabled}>
541
+ disabled={disabled}
542
+ role={_role}>
507
543
  {children}
508
544
  </NativeVirtualText>
509
545
  );
@@ -538,6 +574,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
538
574
  ...restProps,
539
575
  accessibilityElementsHidden: _accessibilityElementsHidden,
540
576
  accessibilityLabel: _accessibilityLabel,
577
+ accessibilityRole: _accessibilityRole,
541
578
  accessibilityState: _accessibilityState,
542
579
  accessible: _accessible,
543
580
  allowFontScaling: allowFontScaling !== false,
@@ -549,6 +586,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
549
586
  selectable: _selectable,
550
587
  selectionColor: _selectionColor,
551
588
  style: _style,
589
+ role: _role,
552
590
  children,
553
591
  }}
554
592
  textPressabilityProps={{
@@ -573,6 +611,7 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
573
611
  {...restProps}
574
612
  accessibilityElementsHidden={_accessibilityElementsHidden}
575
613
  accessibilityLabel={_accessibilityLabel}
614
+ accessibilityRole={_accessibilityRole}
576
615
  accessibilityState={_accessibilityState}
577
616
  accessible={_accessible}
578
617
  allowFontScaling={allowFontScaling !== false}
@@ -584,7 +623,8 @@ if (ReactNativeFeatureFlags.reduceDefaultPropsInText()) {
584
623
  ref={forwardedRef}
585
624
  selectable={_selectable}
586
625
  selectionColor={_selectionColor}
587
- style={_style}>
626
+ style={_style}
627
+ role={_role}>
588
628
  {children}
589
629
  </NativeText>
590
630
  );
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(84),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20251111-4f490818a",
27
+ RCTVersionPrerelease: @"nightly-20251112-7dcedf1de",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -253,6 +253,7 @@ protected:
253
253
  methodMap_["enableIOSTextBaselineOffsetPerLine"] = MethodMetadata {.argCount = 0, .invoker = __enableIOSTextBaselineOffsetPerLine};
254
254
  methodMap_["enableIOSViewClipToPaddingBox"] = MethodMetadata {.argCount = 0, .invoker = __enableIOSViewClipToPaddingBox};
255
255
  methodMap_["enableImagePrefetchingAndroid"] = MethodMetadata {.argCount = 0, .invoker = __enableImagePrefetchingAndroid};
256
+ methodMap_["enableImagePrefetchingJNIBatchingAndroid"] = MethodMetadata {.argCount = 0, .invoker = __enableImagePrefetchingJNIBatchingAndroid};
256
257
  methodMap_["enableImagePrefetchingOnUiThreadAndroid"] = MethodMetadata {.argCount = 0, .invoker = __enableImagePrefetchingOnUiThreadAndroid};
257
258
  methodMap_["enableImmediateUpdateModeForContentOffsetChanges"] = MethodMetadata {.argCount = 0, .invoker = __enableImmediateUpdateModeForContentOffsetChanges};
258
259
  methodMap_["enableImperativeFocus"] = MethodMetadata {.argCount = 0, .invoker = __enableImperativeFocus};
@@ -522,6 +523,13 @@ private:
522
523
  return bridging::callFromJs<bool>(rt, &T::enableImagePrefetchingAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
523
524
  }
524
525
 
526
+ static jsi::Value __enableImagePrefetchingJNIBatchingAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
527
+ static_assert(
528
+ bridging::getParameterCount(&T::enableImagePrefetchingJNIBatchingAndroid) == 1,
529
+ "Expected enableImagePrefetchingJNIBatchingAndroid(...) to have 1 parameters");
530
+ return bridging::callFromJs<bool>(rt, &T::enableImagePrefetchingJNIBatchingAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
531
+ }
532
+
525
533
  static jsi::Value __enableImagePrefetchingOnUiThreadAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
526
534
  static_assert(
527
535
  bridging::getParameterCount(&T::enableImagePrefetchingOnUiThreadAndroid) == 1,
@@ -623,6 +623,26 @@ const CGFloat BACKGROUND_COLOR_ZPOSITION = -1024.0f;
623
623
  self.layer.opacity = (float)props.opacity;
624
624
  }
625
625
 
626
+ // Clean up box shadow layers to prevent cross-component contamination
627
+ if (_boxShadowLayers != nullptr) {
628
+ for (CALayer *boxShadowLayer = nullptr in _boxShadowLayers) {
629
+ [boxShadowLayer removeFromSuperlayer];
630
+ }
631
+ [_boxShadowLayers removeAllObjects];
632
+ _boxShadowLayers = nil;
633
+ }
634
+
635
+ // Clean up other visual layers
636
+ [_backgroundColorLayer removeFromSuperlayer];
637
+ _backgroundColorLayer = nil;
638
+ [_borderLayer removeFromSuperlayer];
639
+ _borderLayer = nil;
640
+ [_outlineLayer removeFromSuperlayer];
641
+ _outlineLayer = nil;
642
+ [_filterLayer removeFromSuperlayer];
643
+ _filterLayer = nil;
644
+ [self clearExistingBackgroundImageLayers];
645
+
626
646
  _propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN = nil;
627
647
  _eventEmitter.reset();
628
648
  _isJSResponder = NO;
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.84.0-nightly-20251111-4f490818a
1
+ VERSION_NAME=0.84.0-nightly-20251112-7dcedf1de
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<862c5a78fec94408ca78ef2349627a02>>
7
+ * @generated SignedSource<<a9af5f83c6e958cf170cd77f69e85ef0>>
8
8
  */
9
9
 
10
10
  /**
@@ -204,6 +204,12 @@ public object ReactNativeFeatureFlags {
204
204
  @JvmStatic
205
205
  public fun enableImagePrefetchingAndroid(): Boolean = accessor.enableImagePrefetchingAndroid()
206
206
 
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
+
207
213
  /**
208
214
  * When enabled, Android will initiate image prefetch requested on ImageShadowNode::layout on the UI thread
209
215
  */
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<67b008ecdc29278a7019f60e24673fc1>>
7
+ * @generated SignedSource<<3b95ad320a62bf77d5090436f457d87a>>
8
8
  */
9
9
 
10
10
  /**
@@ -49,6 +49,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
49
49
  private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
50
50
  private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
51
51
  private var enableImagePrefetchingAndroidCache: Boolean? = null
52
+ private var enableImagePrefetchingJNIBatchingAndroidCache: Boolean? = null
52
53
  private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
53
54
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
54
55
  private var enableImperativeFocusCache: Boolean? = null
@@ -367,6 +368,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
367
368
  return cached
368
369
  }
369
370
 
371
+ override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
372
+ var cached = enableImagePrefetchingJNIBatchingAndroidCache
373
+ if (cached == null) {
374
+ cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingJNIBatchingAndroid()
375
+ enableImagePrefetchingJNIBatchingAndroidCache = cached
376
+ }
377
+ return cached
378
+ }
379
+
370
380
  override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
371
381
  var cached = enableImagePrefetchingOnUiThreadAndroidCache
372
382
  if (cached == null) {
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<553d71b2c9e8e89b2e5d48723f3009b4>>
7
+ * @generated SignedSource<<ba3df1f078a7f5f10dced908ef1d170a>>
8
8
  */
9
9
 
10
10
  /**
@@ -86,6 +86,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
86
86
 
87
87
  @DoNotStrip @JvmStatic public external fun enableImagePrefetchingAndroid(): Boolean
88
88
 
89
+ @DoNotStrip @JvmStatic public external fun enableImagePrefetchingJNIBatchingAndroid(): Boolean
90
+
89
91
  @DoNotStrip @JvmStatic public external fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
90
92
 
91
93
  @DoNotStrip @JvmStatic public external fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<bf1a3a96ae311f186f7fffacc466407e>>
7
+ * @generated SignedSource<<e5c3f111e00075dac0a6e594ce622ca7>>
8
8
  */
9
9
 
10
10
  /**
@@ -81,6 +81,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
81
81
 
82
82
  override fun enableImagePrefetchingAndroid(): Boolean = false
83
83
 
84
+ override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean = false
85
+
84
86
  override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean = false
85
87
 
86
88
  override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean = false
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<7a2517498558f2c0f69831d5466ddec3>>
7
+ * @generated SignedSource<<f484a05ce73cdf166d785560dca0536b>>
8
8
  */
9
9
 
10
10
  /**
@@ -53,6 +53,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
53
53
  private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
54
54
  private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
55
55
  private var enableImagePrefetchingAndroidCache: Boolean? = null
56
+ private var enableImagePrefetchingJNIBatchingAndroidCache: Boolean? = null
56
57
  private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
57
58
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
58
59
  private var enableImperativeFocusCache: Boolean? = null
@@ -400,6 +401,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
400
401
  return cached
401
402
  }
402
403
 
404
+ override fun enableImagePrefetchingJNIBatchingAndroid(): Boolean {
405
+ var cached = enableImagePrefetchingJNIBatchingAndroidCache
406
+ if (cached == null) {
407
+ cached = currentProvider.enableImagePrefetchingJNIBatchingAndroid()
408
+ accessedFeatureFlags.add("enableImagePrefetchingJNIBatchingAndroid")
409
+ enableImagePrefetchingJNIBatchingAndroidCache = cached
410
+ }
411
+ return cached
412
+ }
413
+
403
414
  override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
404
415
  var cached = enableImagePrefetchingOnUiThreadAndroidCache
405
416
  if (cached == null) {
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<0efef5db3ded62f312486ac2fb04bcdb>>
7
+ * @generated SignedSource<<a2bdf7bbb1c18dbcdd4ea424362d3e9d>>
8
8
  */
9
9
 
10
10
  /**
@@ -81,6 +81,8 @@ public interface ReactNativeFeatureFlagsProvider {
81
81
 
82
82
  @DoNotStrip public fun enableImagePrefetchingAndroid(): Boolean
83
83
 
84
+ @DoNotStrip public fun enableImagePrefetchingJNIBatchingAndroid(): Boolean
85
+
84
86
  @DoNotStrip public fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
85
87
 
86
88
  @DoNotStrip public fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 84,
17
17
  "patch" to 0,
18
- "prerelease" to "nightly-20251111-4f490818a"
18
+ "prerelease" to "nightly-20251112-7dcedf1de"
19
19
  )
20
20
  }
@@ -467,7 +467,7 @@ public object BackgroundStyleApplicator {
467
467
  */
468
468
  @JvmStatic
469
469
  public fun setFeedbackUnderlay(view: View, drawable: Drawable?) {
470
- ensureCompositeBackgroundDrawable(view).withNewFeedbackUnderlay(drawable)
470
+ view.background = ensureCompositeBackgroundDrawable(view).withNewFeedbackUnderlay(drawable)
471
471
  }
472
472
 
473
473
  /**
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<09f32ad880a470e45d3e5ba67a6e5831>>
7
+ * @generated SignedSource<<4c9dda599d2c1467fb1602f71c7c7a54>>
8
8
  */
9
9
 
10
10
  /**
@@ -213,6 +213,12 @@ class ReactNativeFeatureFlagsJavaProvider
213
213
  return method(javaProvider_);
214
214
  }
215
215
 
216
+ bool enableImagePrefetchingJNIBatchingAndroid() override {
217
+ static const auto method =
218
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImagePrefetchingJNIBatchingAndroid");
219
+ return method(javaProvider_);
220
+ }
221
+
216
222
  bool enableImagePrefetchingOnUiThreadAndroid() override {
217
223
  static const auto method =
218
224
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableImagePrefetchingOnUiThreadAndroid");
@@ -698,6 +704,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid(
698
704
  return ReactNativeFeatureFlags::enableImagePrefetchingAndroid();
699
705
  }
700
706
 
707
+ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid(
708
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
709
+ return ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid();
710
+ }
711
+
701
712
  bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid(
702
713
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
703
714
  return ReactNativeFeatureFlags::enableImagePrefetchingOnUiThreadAndroid();
@@ -1096,6 +1107,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1096
1107
  makeNativeMethod(
1097
1108
  "enableImagePrefetchingAndroid",
1098
1109
  JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid),
1110
+ makeNativeMethod(
1111
+ "enableImagePrefetchingJNIBatchingAndroid",
1112
+ JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid),
1099
1113
  makeNativeMethod(
1100
1114
  "enableImagePrefetchingOnUiThreadAndroid",
1101
1115
  JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid),
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<414ebc294bc434bdf5f9eca094eac268>>
7
+ * @generated SignedSource<<7a72ab75c6e155769bf583cc8cac6a66>>
8
8
  */
9
9
 
10
10
  /**
@@ -117,6 +117,9 @@ class JReactNativeFeatureFlagsCxxInterop
117
117
  static bool enableImagePrefetchingAndroid(
118
118
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
119
119
 
120
+ static bool enableImagePrefetchingJNIBatchingAndroid(
121
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
122
+
120
123
  static bool enableImagePrefetchingOnUiThreadAndroid(
121
124
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
122
125
 
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 84;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "nightly-20251111-4f490818a";
25
+ std::string_view Prerelease = "nightly-20251112-7dcedf1de";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<1cc51e2c15762d3863d0e1fe7c30ef29>>
7
+ * @generated SignedSource<<c4020a265f61714560e6742482cc05ab>>
8
8
  */
9
9
 
10
10
  /**
@@ -142,6 +142,10 @@ bool ReactNativeFeatureFlags::enableImagePrefetchingAndroid() {
142
142
  return getAccessor().enableImagePrefetchingAndroid();
143
143
  }
144
144
 
145
+ bool ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid() {
146
+ return getAccessor().enableImagePrefetchingJNIBatchingAndroid();
147
+ }
148
+
145
149
  bool ReactNativeFeatureFlags::enableImagePrefetchingOnUiThreadAndroid() {
146
150
  return getAccessor().enableImagePrefetchingOnUiThreadAndroid();
147
151
  }
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<0117140f60ecb65706734187cb0c2169>>
7
+ * @generated SignedSource<<972740252a5ef5f89f739599da789b79>>
8
8
  */
9
9
 
10
10
  /**
@@ -184,6 +184,11 @@ class ReactNativeFeatureFlags {
184
184
  */
185
185
  RN_EXPORT static bool enableImagePrefetchingAndroid();
186
186
 
187
+ /**
188
+ * When enabled, Android will build and initiate image prefetch requests on ImageShadowNode::layout and batch them together in a single JNI call
189
+ */
190
+ RN_EXPORT static bool enableImagePrefetchingJNIBatchingAndroid();
191
+
187
192
  /**
188
193
  * When enabled, Android will initiate image prefetch requested on ImageShadowNode::layout on the UI thread
189
194
  */