react-native 0.84.0-nightly-20251109-b7012ba92 → 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 (48) 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 +16 -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 +13 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -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 +29 -1
  16. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  17. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +4 -1
  18. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  19. package/ReactCommon/hermes/React-hermes.podspec +1 -0
  20. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -0
  21. package/ReactCommon/jsinspector-modern/HostAgent.cpp +33 -0
  22. package/ReactCommon/jsinspector-modern/HostAgent.h +6 -0
  23. package/ReactCommon/jsinspector-modern/HostTarget.h +5 -0
  24. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -0
  25. package/ReactCommon/jsinspector-modern/InspectorFlags.h +7 -0
  26. package/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +37 -0
  27. package/ReactCommon/jsinspector-modern/InspectorInterfaces.h +12 -1
  28. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +11 -0
  29. package/ReactCommon/jsitooling/React-jsitooling.podspec +4 -0
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +92 -56
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  37. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  38. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  39. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +2 -1
  40. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +4 -0
  41. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +3 -2
  42. package/package.json +8 -8
  43. package/scripts/cocoapods/rncore.rb +3 -2
  44. package/scripts/cocoapods/spm.rb +28 -10
  45. package/sdks/hermes-engine/hermes-utils.rb +14 -10
  46. package/sdks/hermes-engine/version.properties +1 -1
  47. package/src/private/featureflags/ReactNativeFeatureFlags.js +17 -1
  48. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -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-20251109-b7012ba92';
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-20251109-b7012ba92",
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};
@@ -281,6 +282,7 @@ protected:
281
282
  methodMap_["enableVirtualViewWindowFocusDetection"] = MethodMetadata {.argCount = 0, .invoker = __enableVirtualViewWindowFocusDetection};
282
283
  methodMap_["enableWebPerformanceAPIsByDefault"] = MethodMetadata {.argCount = 0, .invoker = __enableWebPerformanceAPIsByDefault};
283
284
  methodMap_["fixMappingOfEventPrioritiesBetweenFabricAndReact"] = MethodMetadata {.argCount = 0, .invoker = __fixMappingOfEventPrioritiesBetweenFabricAndReact};
285
+ methodMap_["fuseboxAssertSingleHostState"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxAssertSingleHostState};
284
286
  methodMap_["fuseboxEnabledRelease"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxEnabledRelease};
285
287
  methodMap_["fuseboxNetworkInspectionEnabled"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxNetworkInspectionEnabled};
286
288
  methodMap_["hideOffscreenVirtualViewsOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __hideOffscreenVirtualViewsOnIOS};
@@ -521,6 +523,13 @@ private:
521
523
  return bridging::callFromJs<bool>(rt, &T::enableImagePrefetchingAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
522
524
  }
523
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
+
524
533
  static jsi::Value __enableImagePrefetchingOnUiThreadAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
525
534
  static_assert(
526
535
  bridging::getParameterCount(&T::enableImagePrefetchingOnUiThreadAndroid) == 1,
@@ -717,6 +726,13 @@ private:
717
726
  return bridging::callFromJs<bool>(rt, &T::fixMappingOfEventPrioritiesBetweenFabricAndReact, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
718
727
  }
719
728
 
729
+ static jsi::Value __fuseboxAssertSingleHostState(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
730
+ static_assert(
731
+ bridging::getParameterCount(&T::fuseboxAssertSingleHostState) == 1,
732
+ "Expected fuseboxAssertSingleHostState(...) to have 1 parameters");
733
+ return bridging::callFromJs<bool>(rt, &T::fuseboxAssertSingleHostState, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
734
+ }
735
+
720
736
  static jsi::Value __fuseboxEnabledRelease(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
721
737
  static_assert(
722
738
  bridging::getParameterCount(&T::fuseboxEnabledRelease) == 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-20251109-b7012ba92
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<<01feab16132bc07b79b359178e322327>>
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
  */
@@ -372,6 +378,12 @@ public object ReactNativeFeatureFlags {
372
378
  @JvmStatic
373
379
  public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = accessor.fixMappingOfEventPrioritiesBetweenFabricAndReact()
374
380
 
381
+ /**
382
+ * Enable system assertion validating that Fusebox is configured with a single host. When set, the CDP backend will dynamically disable features (Perf and Network) in the event that multiple hosts are registered (undefined behaviour), and broadcast this over `ReactNativeApplication.systemStateChanged`.
383
+ */
384
+ @JvmStatic
385
+ public fun fuseboxAssertSingleHostState(): Boolean = accessor.fuseboxAssertSingleHostState()
386
+
375
387
  /**
376
388
  * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in release builds. This flag is global and should not be changed across React Host lifetimes.
377
389
  */
@@ -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<<405bf283e4631e166cd57f5dfe30d5f9>>
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
@@ -77,6 +78,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
77
78
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
78
79
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
79
80
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
81
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
80
82
  private var fuseboxEnabledReleaseCache: Boolean? = null
81
83
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
82
84
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -366,6 +368,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
366
368
  return cached
367
369
  }
368
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
+
369
380
  override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
370
381
  var cached = enableImagePrefetchingOnUiThreadAndroidCache
371
382
  if (cached == null) {
@@ -618,6 +629,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
618
629
  return cached
619
630
  }
620
631
 
632
+ override fun fuseboxAssertSingleHostState(): Boolean {
633
+ var cached = fuseboxAssertSingleHostStateCache
634
+ if (cached == null) {
635
+ cached = ReactNativeFeatureFlagsCxxInterop.fuseboxAssertSingleHostState()
636
+ fuseboxAssertSingleHostStateCache = cached
637
+ }
638
+ return cached
639
+ }
640
+
621
641
  override fun fuseboxEnabledRelease(): Boolean {
622
642
  var cached = fuseboxEnabledReleaseCache
623
643
  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<<bffd645aa55b941acff92ca4efe6192a>>
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
@@ -142,6 +144,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
142
144
 
143
145
  @DoNotStrip @JvmStatic public external fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
144
146
 
147
+ @DoNotStrip @JvmStatic public external fun fuseboxAssertSingleHostState(): Boolean
148
+
145
149
  @DoNotStrip @JvmStatic public external fun fuseboxEnabledRelease(): Boolean
146
150
 
147
151
  @DoNotStrip @JvmStatic public external fun fuseboxNetworkInspectionEnabled(): 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<<a25d191472f7777804175ef9f56521d6>>
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
@@ -137,6 +139,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
137
139
 
138
140
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = false
139
141
 
142
+ override fun fuseboxAssertSingleHostState(): Boolean = true
143
+
140
144
  override fun fuseboxEnabledRelease(): Boolean = false
141
145
 
142
146
  override fun fuseboxNetworkInspectionEnabled(): 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<<e8531e8c374d0ea1e604a2f3d5000078>>
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
@@ -81,6 +82,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
81
82
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
82
83
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
83
84
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
85
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
84
86
  private var fuseboxEnabledReleaseCache: Boolean? = null
85
87
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
86
88
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -399,6 +401,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
399
401
  return cached
400
402
  }
401
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
+
402
414
  override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
403
415
  var cached = enableImagePrefetchingOnUiThreadAndroidCache
404
416
  if (cached == null) {
@@ -679,6 +691,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
679
691
  return cached
680
692
  }
681
693
 
694
+ override fun fuseboxAssertSingleHostState(): Boolean {
695
+ var cached = fuseboxAssertSingleHostStateCache
696
+ if (cached == null) {
697
+ cached = currentProvider.fuseboxAssertSingleHostState()
698
+ accessedFeatureFlags.add("fuseboxAssertSingleHostState")
699
+ fuseboxAssertSingleHostStateCache = cached
700
+ }
701
+ return cached
702
+ }
703
+
682
704
  override fun fuseboxEnabledRelease(): Boolean {
683
705
  var cached = fuseboxEnabledReleaseCache
684
706
  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<<2325f5410537941e25998ca8c59bf51d>>
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
@@ -137,6 +139,8 @@ public interface ReactNativeFeatureFlagsProvider {
137
139
 
138
140
  @DoNotStrip public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
139
141
 
142
+ @DoNotStrip public fun fuseboxAssertSingleHostState(): Boolean
143
+
140
144
  @DoNotStrip public fun fuseboxEnabledRelease(): Boolean
141
145
 
142
146
  @DoNotStrip public fun fuseboxNetworkInspectionEnabled(): 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-20251109-b7012ba92"
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<<95ebd4929bf0f98aa059ad4b8139f7b3>>
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");
@@ -381,6 +387,12 @@ class ReactNativeFeatureFlagsJavaProvider
381
387
  return method(javaProvider_);
382
388
  }
383
389
 
390
+ bool fuseboxAssertSingleHostState() override {
391
+ static const auto method =
392
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxAssertSingleHostState");
393
+ return method(javaProvider_);
394
+ }
395
+
384
396
  bool fuseboxEnabledRelease() override {
385
397
  static const auto method =
386
398
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxEnabledRelease");
@@ -692,6 +704,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid(
692
704
  return ReactNativeFeatureFlags::enableImagePrefetchingAndroid();
693
705
  }
694
706
 
707
+ bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid(
708
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
709
+ return ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid();
710
+ }
711
+
695
712
  bool JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid(
696
713
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
697
714
  return ReactNativeFeatureFlags::enableImagePrefetchingOnUiThreadAndroid();
@@ -832,6 +849,11 @@ bool JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabri
832
849
  return ReactNativeFeatureFlags::fixMappingOfEventPrioritiesBetweenFabricAndReact();
833
850
  }
834
851
 
852
+ bool JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState(
853
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
854
+ return ReactNativeFeatureFlags::fuseboxAssertSingleHostState();
855
+ }
856
+
835
857
  bool JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease(
836
858
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
837
859
  return ReactNativeFeatureFlags::fuseboxEnabledRelease();
@@ -1085,6 +1107,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1085
1107
  makeNativeMethod(
1086
1108
  "enableImagePrefetchingAndroid",
1087
1109
  JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingAndroid),
1110
+ makeNativeMethod(
1111
+ "enableImagePrefetchingJNIBatchingAndroid",
1112
+ JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingJNIBatchingAndroid),
1088
1113
  makeNativeMethod(
1089
1114
  "enableImagePrefetchingOnUiThreadAndroid",
1090
1115
  JReactNativeFeatureFlagsCxxInterop::enableImagePrefetchingOnUiThreadAndroid),
@@ -1169,6 +1194,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1169
1194
  makeNativeMethod(
1170
1195
  "fixMappingOfEventPrioritiesBetweenFabricAndReact",
1171
1196
  JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabricAndReact),
1197
+ makeNativeMethod(
1198
+ "fuseboxAssertSingleHostState",
1199
+ JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState),
1172
1200
  makeNativeMethod(
1173
1201
  "fuseboxEnabledRelease",
1174
1202
  JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease),
@@ -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<<155f615584a7738dc5b89205c2ecad8b>>
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
 
@@ -201,6 +204,9 @@ class JReactNativeFeatureFlagsCxxInterop
201
204
  static bool fixMappingOfEventPrioritiesBetweenFabricAndReact(
202
205
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
203
206
 
207
+ static bool fuseboxAssertSingleHostState(
208
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
209
+
204
210
  static bool fuseboxEnabledRelease(
205
211
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
206
212
 
@@ -24,6 +24,8 @@
24
24
  CADisplayLink *_displayLink;
25
25
  #endif
26
26
  std::function<void()> _onRender;
27
+
28
+ std::weak_ptr<facebook::react::NativeAnimatedNodesManagerProvider> _nativeAnimatedNodesManagerProvider;
27
29
  }
28
30
 
29
31
  - (void)dealloc
@@ -48,7 +50,7 @@
48
50
 
49
51
  - (void)_onDisplayLinkTick
50
52
  {
51
- if (_displayLink != nullptr && _onRender != nullptr) {
53
+ if (_nativeAnimatedNodesManagerProvider.lock() != nullptr && _displayLink != nullptr && _onRender != nullptr) {
52
54
  _onRender();
53
55
  }
54
56
  }
@@ -110,6 +112,7 @@
110
112
  stop_render();
111
113
  }
112
114
  });
115
+ _nativeAnimatedNodesManagerProvider = provider;
113
116
  return std::make_shared<facebook::react::AnimatedModule>(std::move(jsInvoker), std::move(provider));
114
117
  }
115
118
  }
@@ -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-20251109-b7012ba92";
25
+ std::string_view Prerelease = "nightly-20251112-7dcedf1de";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -47,6 +47,7 @@ Pod::Spec.new do |s|
47
47
  s.dependency "React-jsi"
48
48
  add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])
49
49
  add_dependency(s, "React-oscompat")
50
+ add_dependency(s, "React-jsitooling", :framework_name => "JSITooling")
50
51
 
51
52
  add_rn_third_party_dependencies(s)
52
53
  add_rncore_dependency(s)
@@ -40,6 +40,7 @@ Pod::Spec.new do |s|
40
40
  add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
41
41
  add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
42
42
  add_dependency(s, "React-utils", :additional_framework_paths => ["react/utils/platform/ios"])
43
+ add_dependency(s, "React-jsitooling", :framework_name => "JSITooling")
43
44
  if use_hermes()
44
45
  s.dependency 'hermes-engine'
45
46
  end