react-native 0.82.0-rc.0 → 0.83.0-nightly-20250903-f33a1cd26

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 (72) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +2 -2
  2. package/Libraries/Core/setUpPerformance.js +3 -5
  3. package/Libraries/Lists/FlatList.js +8 -8
  4. package/Libraries/Lists/ViewabilityHelper.js +1 -1
  5. package/Libraries/Lists/VirtualizedList.js +1 -0
  6. package/React/Base/RCTVersion.m +2 -2
  7. package/React/CoreModules/RCTAlertController.mm +6 -1
  8. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +6 -6
  9. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +9 -9
  10. package/ReactAndroid/gradle.properties +1 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +8 -2
  12. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PrefetchResourcesMountItem.kt +34 -0
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -7
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -11
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -3
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -3
  17. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -12
  18. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -3
  19. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +2 -2
  20. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  21. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +53 -145
  22. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CompositeBackgroundDrawable.kt +0 -32
  23. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -15
  24. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -4
  25. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  26. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -5
  27. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -6
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +27 -27
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +3 -3
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -5
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -10
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -2
  33. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -6
  34. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -3
  35. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +3 -0
  36. package/ReactCommon/react/renderer/animated/nodes/AnimatedNode.cpp +2 -0
  37. package/ReactCommon/react/renderer/animated/nodes/AnimatedNode.h +1 -0
  38. package/ReactCommon/react/renderer/animated/nodes/ObjectAnimatedNode.cpp +121 -0
  39. package/ReactCommon/react/renderer/animated/nodes/ObjectAnimatedNode.h +38 -0
  40. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +7 -0
  41. package/ReactCommon/react/renderer/animated/nodes/StyleAnimatedNode.cpp +7 -0
  42. package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +51 -0
  43. package/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +2 -60
  44. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +56 -0
  45. package/ReactCommon/react/renderer/components/view/conversions.h +1 -1
  46. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +3 -40
  47. package/flow/bom.js.flow +157 -0
  48. package/index.js.flow +1 -0
  49. package/package.json +8 -8
  50. package/scripts/replace-rncore-version.js +4 -2
  51. package/sdks/hermes-engine/utils/replace_hermes_version.js +4 -2
  52. package/sdks/hermesc/osx-bin/hermes +0 -0
  53. package/sdks/hermesc/osx-bin/hermesc +0 -0
  54. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  55. package/src/private/components/virtualview/VirtualView.js +22 -27
  56. package/src/private/featureflags/ReactNativeFeatureFlags.js +12 -6
  57. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -2
  58. package/src/private/setup/{setUpPerformanceObserver.js → setUpPerformanceModern.js} +43 -18
  59. package/src/private/webapis/performance/EventTiming.js +34 -15
  60. package/src/private/webapis/performance/LongTasks.js +35 -2
  61. package/src/private/webapis/performance/Performance.js +23 -6
  62. package/src/private/webapis/performance/PerformanceEntry.js +21 -8
  63. package/src/private/webapis/performance/PerformanceObserver.js +30 -1
  64. package/src/private/webapis/performance/ResourceTiming.js +29 -18
  65. package/src/private/webapis/performance/UserTiming.js +33 -28
  66. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +3 -4
  67. package/third-party-podspecs/replace_dependencies_version.js +4 -2
  68. package/types_generated/Libraries/Lists/VirtualizedList.d.ts +2 -2
  69. package/types_generated/index.d.ts +2 -2
  70. package/types_generated/src/private/components/virtualview/VirtualView.d.ts +7 -7
  71. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/CSSBackgroundDrawable.java +0 -1474
  72. package/sdks/.hermesversion +0 -1
@@ -27,9 +27,9 @@
27
27
  */
28
28
  export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
- static minor: number = 82;
30
+ static minor: number = 83;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'rc.0';
32
+ static prerelease: string | null = 'nightly-20250903-f33a1cd26';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -4,19 +4,17 @@
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
- * @flow strict
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
+ import setUpPerformanceModern from '../../src/private/setup/setUpPerformanceModern';
11
12
  import NativePerformance from '../../src/private/webapis/performance/specs/NativePerformance';
12
13
 
13
14
  // In case if the native implementation of the Performance API is available, use it,
14
15
  // otherwise fall back to the legacy/default one, which only defines 'Performance.now()'
15
16
  if (NativePerformance) {
16
- const Performance =
17
- require('../../src/private/webapis/performance/Performance').default;
18
- // $FlowExpectedError[cannot-write]
19
- global.performance = new Performance();
17
+ setUpPerformanceModern();
20
18
  } else {
21
19
  if (!global.performance) {
22
20
  // $FlowExpectedError[cannot-write]
@@ -13,8 +13,8 @@ import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
13
13
  import type {
14
14
  ListRenderItem,
15
15
  ListRenderItemInfo,
16
+ ListViewToken,
16
17
  ViewabilityConfigCallbackPair,
17
- ViewToken,
18
18
  VirtualizedListProps,
19
19
  } from '@react-native/virtualized-lists';
20
20
 
@@ -573,7 +573,7 @@ class FlatList<ItemT = any> extends React.PureComponent<FlatListProps<ItemT>> {
573
573
  return keyExtractor(items, index);
574
574
  };
575
575
 
576
- _pushMultiColumnViewable(arr: Array<ViewToken>, v: ViewToken): void {
576
+ _pushMultiColumnViewable(arr: Array<ListViewToken>, v: ListViewToken): void {
577
577
  const numColumns = numColumnsOrDefault(this.props.numColumns);
578
578
  const keyExtractor = this.props.keyExtractor ?? defaultKeyExtractor;
579
579
  v.item.forEach((item, ii) => {
@@ -585,22 +585,22 @@ class FlatList<ItemT = any> extends React.PureComponent<FlatListProps<ItemT>> {
585
585
 
586
586
  _createOnViewableItemsChanged(
587
587
  onViewableItemsChanged: ?(info: {
588
- viewableItems: Array<ViewToken>,
589
- changed: Array<ViewToken>,
588
+ viewableItems: Array<ListViewToken>,
589
+ changed: Array<ListViewToken>,
590
590
  ...
591
591
  }) => void,
592
592
  // $FlowFixMe[missing-local-annot]
593
593
  ) {
594
594
  return (info: {
595
- viewableItems: Array<ViewToken>,
596
- changed: Array<ViewToken>,
595
+ viewableItems: Array<ListViewToken>,
596
+ changed: Array<ListViewToken>,
597
597
  ...
598
598
  }) => {
599
599
  const numColumns = numColumnsOrDefault(this.props.numColumns);
600
600
  if (onViewableItemsChanged) {
601
601
  if (numColumns > 1) {
602
- const changed: Array<ViewToken> = [];
603
- const viewableItems: Array<ViewToken> = [];
602
+ const changed: Array<ListViewToken> = [];
603
+ const viewableItems: Array<ListViewToken> = [];
604
604
  info.viewableItems.forEach(v =>
605
605
  this._pushMultiColumnViewable(viewableItems, v),
606
606
  );
@@ -11,7 +11,7 @@
11
11
  'use strict';
12
12
 
13
13
  export type {
14
- ViewToken,
14
+ ListViewToken as ViewToken,
15
15
  ViewabilityConfig,
16
16
  ViewabilityConfigCallbackPair,
17
17
  } from '@react-native/virtualized-lists';
@@ -19,6 +19,7 @@ const VirtualizedListComponent: VirtualizedListType =
19
19
  export type {
20
20
  ListRenderItemInfo,
21
21
  ListRenderItem,
22
+ ListViewToken,
22
23
  Separators,
23
24
  VirtualizedListProps,
24
25
  } from '@react-native/virtualized-lists';
@@ -22,9 +22,9 @@ NSDictionary* RCTGetReactNativeVersion(void)
22
22
  dispatch_once(&onceToken, ^(void){
23
23
  __rnVersion = @{
24
24
  RCTVersionMajor: @(0),
25
- RCTVersionMinor: @(82),
25
+ RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.0",
27
+ RCTVersionPrerelease: @"nightly-20250903-f33a1cd26",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -20,7 +20,12 @@
20
20
  - (UIWindow *)alertWindow
21
21
  {
22
22
  if (_alertWindow == nil) {
23
- _alertWindow = [[UIWindow alloc] initWithWindowScene:RCTKeyWindow().windowScene];
23
+ UIWindowScene *scene = RCTKeyWindow().windowScene;
24
+ if (scene != nil) {
25
+ _alertWindow = [[UIWindow alloc] initWithWindowScene:scene];
26
+ } else {
27
+ _alertWindow = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
28
+ }
24
29
 
25
30
  if (_alertWindow) {
26
31
  _alertWindow.rootViewController = [UIViewController new];
@@ -207,6 +207,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableI
207
207
  rt
208
208
  );
209
209
  }
210
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImagePrefetchingOnUiThreadAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
211
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->enableImagePrefetchingOnUiThreadAndroid(
212
+ rt
213
+ );
214
+ }
210
215
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
211
216
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->enableImmediateUpdateModeForContentOffsetChanges(
212
217
  rt
@@ -247,11 +252,6 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableN
247
252
  rt
248
253
  );
249
254
  }
250
- static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNewBackgroundAndBorderDrawables(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
251
- return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->enableNewBackgroundAndBorderDrawables(
252
- rt
253
- );
254
- }
255
255
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePreparedTextLayout(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
256
256
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->enablePreparedTextLayout(
257
257
  rt
@@ -460,6 +460,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
460
460
  methodMap_["enableIOSTextBaselineOffsetPerLine"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableIOSTextBaselineOffsetPerLine};
461
461
  methodMap_["enableIOSViewClipToPaddingBox"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableIOSViewClipToPaddingBox};
462
462
  methodMap_["enableImagePrefetchingAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImagePrefetchingAndroid};
463
+ methodMap_["enableImagePrefetchingOnUiThreadAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImagePrefetchingOnUiThreadAndroid};
463
464
  methodMap_["enableImmediateUpdateModeForContentOffsetChanges"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableImmediateUpdateModeForContentOffsetChanges};
464
465
  methodMap_["enableInteropViewManagerClassLookUpOptimizationIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableInteropViewManagerClassLookUpOptimizationIOS};
465
466
  methodMap_["enableLayoutAnimationsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableLayoutAnimationsOnAndroid};
@@ -468,7 +469,6 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
468
469
  methodMap_["enableModuleArgumentNSNullConversionIOS"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableModuleArgumentNSNullConversionIOS};
469
470
  methodMap_["enableNativeCSSParsing"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNativeCSSParsing};
470
471
  methodMap_["enableNetworkEventReporting"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNetworkEventReporting};
471
- methodMap_["enableNewBackgroundAndBorderDrawables"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNewBackgroundAndBorderDrawables};
472
472
  methodMap_["enablePreparedTextLayout"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePreparedTextLayout};
473
473
  methodMap_["enablePropsUpdateReconciliationAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePropsUpdateReconciliationAndroid};
474
474
  methodMap_["enableResourceTimingAPI"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableResourceTimingAPI};
@@ -351,6 +351,7 @@ public:
351
351
  virtual bool enableIOSTextBaselineOffsetPerLine(jsi::Runtime &rt) = 0;
352
352
  virtual bool enableIOSViewClipToPaddingBox(jsi::Runtime &rt) = 0;
353
353
  virtual bool enableImagePrefetchingAndroid(jsi::Runtime &rt) = 0;
354
+ virtual bool enableImagePrefetchingOnUiThreadAndroid(jsi::Runtime &rt) = 0;
354
355
  virtual bool enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt) = 0;
355
356
  virtual bool enableInteropViewManagerClassLookUpOptimizationIOS(jsi::Runtime &rt) = 0;
356
357
  virtual bool enableLayoutAnimationsOnAndroid(jsi::Runtime &rt) = 0;
@@ -359,7 +360,6 @@ public:
359
360
  virtual bool enableModuleArgumentNSNullConversionIOS(jsi::Runtime &rt) = 0;
360
361
  virtual bool enableNativeCSSParsing(jsi::Runtime &rt) = 0;
361
362
  virtual bool enableNetworkEventReporting(jsi::Runtime &rt) = 0;
362
- virtual bool enableNewBackgroundAndBorderDrawables(jsi::Runtime &rt) = 0;
363
363
  virtual bool enablePreparedTextLayout(jsi::Runtime &rt) = 0;
364
364
  virtual bool enablePropsUpdateReconciliationAndroid(jsi::Runtime &rt) = 0;
365
365
  virtual bool enableResourceTimingAPI(jsi::Runtime &rt) = 0;
@@ -626,6 +626,14 @@ private:
626
626
  return bridging::callFromJs<bool>(
627
627
  rt, &T::enableImagePrefetchingAndroid, jsInvoker_, instance_);
628
628
  }
629
+ bool enableImagePrefetchingOnUiThreadAndroid(jsi::Runtime &rt) override {
630
+ static_assert(
631
+ bridging::getParameterCount(&T::enableImagePrefetchingOnUiThreadAndroid) == 1,
632
+ "Expected enableImagePrefetchingOnUiThreadAndroid(...) to have 1 parameters");
633
+
634
+ return bridging::callFromJs<bool>(
635
+ rt, &T::enableImagePrefetchingOnUiThreadAndroid, jsInvoker_, instance_);
636
+ }
629
637
  bool enableImmediateUpdateModeForContentOffsetChanges(jsi::Runtime &rt) override {
630
638
  static_assert(
631
639
  bridging::getParameterCount(&T::enableImmediateUpdateModeForContentOffsetChanges) == 1,
@@ -690,14 +698,6 @@ private:
690
698
  return bridging::callFromJs<bool>(
691
699
  rt, &T::enableNetworkEventReporting, jsInvoker_, instance_);
692
700
  }
693
- bool enableNewBackgroundAndBorderDrawables(jsi::Runtime &rt) override {
694
- static_assert(
695
- bridging::getParameterCount(&T::enableNewBackgroundAndBorderDrawables) == 1,
696
- "Expected enableNewBackgroundAndBorderDrawables(...) to have 1 parameters");
697
-
698
- return bridging::callFromJs<bool>(
699
- rt, &T::enableNewBackgroundAndBorderDrawables, jsInvoker_, instance_);
700
- }
701
701
  bool enablePreparedTextLayout(jsi::Runtime &rt) override {
702
702
  static_assert(
703
703
  bridging::getParameterCount(&T::enablePreparedTextLayout) == 1,
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.82.0-rc.0
1
+ VERSION_NAME=0.83.0-nightly-20250903-f33a1cd26
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
 
4
4
  android.useAndroidX=true
@@ -65,6 +65,7 @@ import com.facebook.react.fabric.mounting.mountitems.BatchMountItem;
65
65
  import com.facebook.react.fabric.mounting.mountitems.DispatchCommandMountItem;
66
66
  import com.facebook.react.fabric.mounting.mountitems.MountItem;
67
67
  import com.facebook.react.fabric.mounting.mountitems.MountItemFactory;
68
+ import com.facebook.react.fabric.mounting.mountitems.PrefetchResourcesMountItem;
68
69
  import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
69
70
  import com.facebook.react.internal.featureflags.ReactNativeNewArchitectureFeatureFlags;
70
71
  import com.facebook.react.internal.interop.InteropEventEmitter;
@@ -985,8 +986,13 @@ public class FabricUIManager
985
986
  */
986
987
  @UnstableReactNativeAPI
987
988
  public void experimental_prefetchResources(String componentName, ReadableMapBuffer params) {
988
- mMountingManager.experimental_prefetchResources(
989
- mReactApplicationContext, componentName, params);
989
+ if (ReactNativeFeatureFlags.enableImagePrefetchingOnUiThreadAndroid()) {
990
+ mMountItemDispatcher.addMountItem(
991
+ new PrefetchResourcesMountItem(mReactApplicationContext, componentName, params));
992
+ } else {
993
+ mMountingManager.experimental_prefetchResources(
994
+ mReactApplicationContext, componentName, params);
995
+ }
990
996
  }
991
997
 
992
998
  void setBinding(FabricUIManagerBinding binding) {
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ package com.facebook.react.fabric.mounting.mountitems
9
+
10
+ import com.facebook.react.bridge.ReactApplicationContext
11
+ import com.facebook.react.common.annotations.FrameworkAPI
12
+ import com.facebook.react.common.annotations.UnstableReactNativeAPI
13
+ import com.facebook.react.common.mapbuffer.ReadableMapBuffer
14
+ import com.facebook.react.fabric.mounting.MountingManager
15
+
16
+ internal class PrefetchResourcesMountItem(
17
+ private val reactApplicationContext: ReactApplicationContext,
18
+ private val componentName: String,
19
+ private val params: ReadableMapBuffer,
20
+ ) : MountItem {
21
+
22
+ @OptIn(UnstableReactNativeAPI::class, FrameworkAPI::class)
23
+ override fun execute(mountingManager: MountingManager) {
24
+ mountingManager.experimental_prefetchResources(
25
+ reactApplicationContext,
26
+ componentName,
27
+ params,
28
+ )
29
+ }
30
+
31
+ override fun getSurfaceId(): Int = -1 /* unused */
32
+
33
+ override fun toString(): String = "PrefetchResourcesMountItem"
34
+ }
@@ -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<<34c12f5a31aab5bfb874953f1beefef1>>
7
+ * @generated SignedSource<<a5534457a42ada7d6e2a5d820844b782>>
8
8
  */
9
9
 
10
10
  /**
@@ -174,6 +174,12 @@ public object ReactNativeFeatureFlags {
174
174
  @JvmStatic
175
175
  public fun enableImagePrefetchingAndroid(): Boolean = accessor.enableImagePrefetchingAndroid()
176
176
 
177
+ /**
178
+ * When enabled, Android will initiate image prefetch requested on ImageShadowNode::layout on the UI thread
179
+ */
180
+ @JvmStatic
181
+ public fun enableImagePrefetchingOnUiThreadAndroid(): Boolean = accessor.enableImagePrefetchingOnUiThreadAndroid()
182
+
177
183
  /**
178
184
  * Dispatches state updates for content offset changes synchronously on the main thread.
179
185
  */
@@ -222,12 +228,6 @@ public object ReactNativeFeatureFlags {
222
228
  @JvmStatic
223
229
  public fun enableNetworkEventReporting(): Boolean = accessor.enableNetworkEventReporting()
224
230
 
225
- /**
226
- * Use BackgroundDrawable and BorderDrawable instead of CSSBackgroundDrawable
227
- */
228
- @JvmStatic
229
- public fun enableNewBackgroundAndBorderDrawables(): Boolean = accessor.enableNewBackgroundAndBorderDrawables()
230
-
231
231
  /**
232
232
  * Enables caching text layout artifacts for later reuse
233
233
  */
@@ -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<<392da016e0bf4193b72c44a508811e10>>
7
+ * @generated SignedSource<<7dbb21bddd9c2ae447c83923a25372e4>>
8
8
  */
9
9
 
10
10
  /**
@@ -44,6 +44,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
44
44
  private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
45
45
  private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
46
46
  private var enableImagePrefetchingAndroidCache: Boolean? = null
47
+ private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
47
48
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
48
49
  private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
49
50
  private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
@@ -52,7 +53,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
52
53
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
53
54
  private var enableNativeCSSParsingCache: Boolean? = null
54
55
  private var enableNetworkEventReportingCache: Boolean? = null
55
- private var enableNewBackgroundAndBorderDrawablesCache: Boolean? = null
56
56
  private var enablePreparedTextLayoutCache: Boolean? = null
57
57
  private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
58
58
  private var enableResourceTimingAPICache: Boolean? = null
@@ -306,6 +306,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
306
306
  return cached
307
307
  }
308
308
 
309
+ override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
310
+ var cached = enableImagePrefetchingOnUiThreadAndroidCache
311
+ if (cached == null) {
312
+ cached = ReactNativeFeatureFlagsCxxInterop.enableImagePrefetchingOnUiThreadAndroid()
313
+ enableImagePrefetchingOnUiThreadAndroidCache = cached
314
+ }
315
+ return cached
316
+ }
317
+
309
318
  override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
310
319
  var cached = enableImmediateUpdateModeForContentOffsetChangesCache
311
320
  if (cached == null) {
@@ -378,15 +387,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
378
387
  return cached
379
388
  }
380
389
 
381
- override fun enableNewBackgroundAndBorderDrawables(): Boolean {
382
- var cached = enableNewBackgroundAndBorderDrawablesCache
383
- if (cached == null) {
384
- cached = ReactNativeFeatureFlagsCxxInterop.enableNewBackgroundAndBorderDrawables()
385
- enableNewBackgroundAndBorderDrawablesCache = cached
386
- }
387
- return cached
388
- }
389
-
390
390
  override fun enablePreparedTextLayout(): Boolean {
391
391
  var cached = enablePreparedTextLayoutCache
392
392
  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<<a0453230524ebca2bfb8fad656a6f54a>>
7
+ * @generated SignedSource<<4f93b4eb8f3cb427d3b926ffa18f9f9b>>
8
8
  */
9
9
 
10
10
  /**
@@ -76,6 +76,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
76
76
 
77
77
  @DoNotStrip @JvmStatic public external fun enableImagePrefetchingAndroid(): Boolean
78
78
 
79
+ @DoNotStrip @JvmStatic public external fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
80
+
79
81
  @DoNotStrip @JvmStatic public external fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
80
82
 
81
83
  @DoNotStrip @JvmStatic public external fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
@@ -92,8 +94,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
92
94
 
93
95
  @DoNotStrip @JvmStatic public external fun enableNetworkEventReporting(): Boolean
94
96
 
95
- @DoNotStrip @JvmStatic public external fun enableNewBackgroundAndBorderDrawables(): Boolean
96
-
97
97
  @DoNotStrip @JvmStatic public external fun enablePreparedTextLayout(): Boolean
98
98
 
99
99
  @DoNotStrip @JvmStatic public external fun enablePropsUpdateReconciliationAndroid(): 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<<719706a983a073b6c286c49d993f7f80>>
7
+ * @generated SignedSource<<731176315c5589990865a0995f8b7e20>>
8
8
  */
9
9
 
10
10
  /**
@@ -71,6 +71,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
71
71
 
72
72
  override fun enableImagePrefetchingAndroid(): Boolean = false
73
73
 
74
+ override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean = false
75
+
74
76
  override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean = false
75
77
 
76
78
  override fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = false
@@ -87,8 +89,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
87
89
 
88
90
  override fun enableNetworkEventReporting(): Boolean = false
89
91
 
90
- override fun enableNewBackgroundAndBorderDrawables(): Boolean = true
91
-
92
92
  override fun enablePreparedTextLayout(): Boolean = false
93
93
 
94
94
  override fun enablePropsUpdateReconciliationAndroid(): 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<<594815ba6a984c460ab8bddd91c5cae2>>
7
+ * @generated SignedSource<<7af6546cb6e02afcfca90635b3cbe603>>
8
8
  */
9
9
 
10
10
  /**
@@ -48,6 +48,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
48
48
  private var enableIOSTextBaselineOffsetPerLineCache: Boolean? = null
49
49
  private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
50
50
  private var enableImagePrefetchingAndroidCache: Boolean? = null
51
+ private var enableImagePrefetchingOnUiThreadAndroidCache: Boolean? = null
51
52
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
52
53
  private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
53
54
  private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
@@ -56,7 +57,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
56
57
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
57
58
  private var enableNativeCSSParsingCache: Boolean? = null
58
59
  private var enableNetworkEventReportingCache: Boolean? = null
59
- private var enableNewBackgroundAndBorderDrawablesCache: Boolean? = null
60
60
  private var enablePreparedTextLayoutCache: Boolean? = null
61
61
  private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
62
62
  private var enableResourceTimingAPICache: Boolean? = null
@@ -334,6 +334,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
334
334
  return cached
335
335
  }
336
336
 
337
+ override fun enableImagePrefetchingOnUiThreadAndroid(): Boolean {
338
+ var cached = enableImagePrefetchingOnUiThreadAndroidCache
339
+ if (cached == null) {
340
+ cached = currentProvider.enableImagePrefetchingOnUiThreadAndroid()
341
+ accessedFeatureFlags.add("enableImagePrefetchingOnUiThreadAndroid")
342
+ enableImagePrefetchingOnUiThreadAndroidCache = cached
343
+ }
344
+ return cached
345
+ }
346
+
337
347
  override fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean {
338
348
  var cached = enableImmediateUpdateModeForContentOffsetChangesCache
339
349
  if (cached == null) {
@@ -414,16 +424,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
414
424
  return cached
415
425
  }
416
426
 
417
- override fun enableNewBackgroundAndBorderDrawables(): Boolean {
418
- var cached = enableNewBackgroundAndBorderDrawablesCache
419
- if (cached == null) {
420
- cached = currentProvider.enableNewBackgroundAndBorderDrawables()
421
- accessedFeatureFlags.add("enableNewBackgroundAndBorderDrawables")
422
- enableNewBackgroundAndBorderDrawablesCache = cached
423
- }
424
- return cached
425
- }
426
-
427
427
  override fun enablePreparedTextLayout(): Boolean {
428
428
  var cached = enablePreparedTextLayoutCache
429
429
  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<<dfbd5e84392f1fda0e68324582c328b2>>
7
+ * @generated SignedSource<<9a982d4167179619629627529916259b>>
8
8
  */
9
9
 
10
10
  /**
@@ -71,6 +71,8 @@ public interface ReactNativeFeatureFlagsProvider {
71
71
 
72
72
  @DoNotStrip public fun enableImagePrefetchingAndroid(): Boolean
73
73
 
74
+ @DoNotStrip public fun enableImagePrefetchingOnUiThreadAndroid(): Boolean
75
+
74
76
  @DoNotStrip public fun enableImmediateUpdateModeForContentOffsetChanges(): Boolean
75
77
 
76
78
  @DoNotStrip public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
@@ -87,8 +89,6 @@ public interface ReactNativeFeatureFlagsProvider {
87
89
 
88
90
  @DoNotStrip public fun enableNetworkEventReporting(): Boolean
89
91
 
90
- @DoNotStrip public fun enableNewBackgroundAndBorderDrawables(): Boolean
91
-
92
92
  @DoNotStrip public fun enablePreparedTextLayout(): Boolean
93
93
 
94
94
  @DoNotStrip public fun enablePropsUpdateReconciliationAndroid(): Boolean
@@ -230,8 +230,8 @@ internal class ImageLoaderModule : NativeImageLoaderAndroidSpec, LifecycleEventL
230
230
  override fun doInBackgroundGuarded(vararg params: Void) {
231
231
  val result = buildReadableMap {
232
232
  val imagePipeline: ImagePipeline = this@ImageLoaderModule.imagePipeline
233
- repeat(uris.size()) {
234
- val uriString = uris.getString(it)
233
+ repeat(uris.size()) { index ->
234
+ val uriString = uris.getString(index)
235
235
  if (!uriString.isNullOrEmpty()) {
236
236
  val uri = Uri.parse(uriString)
237
237
  if (imagePipeline.isInBitmapMemoryCache(uri)) {
@@ -13,8 +13,8 @@ public object ReactNativeVersion {
13
13
  @JvmField
14
14
  public val VERSION: Map<String, Any?> = mapOf(
15
15
  "major" to 0,
16
- "minor" to 82,
16
+ "minor" to 83,
17
17
  "patch" to 0,
18
- "prerelease" to "rc.0"
18
+ "prerelease" to "nightly-20250903-f33a1cd26"
19
19
  )
20
20
  }