react-native-windows 0.0.0-canary.992 → 0.0.0-canary.993

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 (195) hide show
  1. package/.flowconfig +3 -1
  2. package/Libraries/Animated/Animated.js +0 -1
  3. package/Libraries/Animated/Animated.js.flow +0 -1
  4. package/Libraries/Animated/AnimatedExports.js +0 -1
  5. package/Libraries/Animated/AnimatedExports.js.flow +1 -2
  6. package/Libraries/Animated/animations/Animation.js +5 -2
  7. package/Libraries/Animated/components/AnimatedScrollView.js +53 -52
  8. package/Libraries/Animated/createAnimatedComponent.js +37 -33
  9. package/Libraries/Animated/nodes/AnimatedObject.js +2 -3
  10. package/Libraries/Animated/nodes/AnimatedProps.js +1 -1
  11. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +6 -1
  12. package/Libraries/AppState/AppState.js +6 -1
  13. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +19 -18
  14. package/Libraries/Components/Button.js +2 -2
  15. package/Libraries/Components/Button.windows.js +2 -3
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +2 -3
  17. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +2 -1
  18. package/Libraries/Components/LayoutConformance/LayoutConformance.js +0 -1
  19. package/Libraries/Components/Pressable/Pressable.js +9 -6
  20. package/Libraries/Components/Pressable/Pressable.windows.js +9 -6
  21. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +14 -13
  22. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +13 -1
  23. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidTypes.js +29 -20
  24. package/Libraries/Components/ScrollView/ScrollView.d.ts +9 -5
  25. package/Libraries/Components/ScrollView/ScrollView.js +18 -12
  26. package/Libraries/Components/ScrollView/ScrollView.windows.js +19 -12
  27. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -1
  28. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -1
  29. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +19 -6
  30. package/Libraries/Components/Switch/Switch.js +8 -2
  31. package/Libraries/Components/Switch/Switch.windows.js +8 -2
  32. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +1 -5
  33. package/Libraries/Components/TextInput/TextInput.flow.js +1 -5
  34. package/Libraries/Components/TextInput/TextInput.flow.windows.js +1 -6
  35. package/Libraries/Components/TextInput/TextInput.js +26 -25
  36. package/Libraries/Components/TextInput/TextInput.windows.js +27 -25
  37. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -5
  38. package/Libraries/Components/Touchable/TouchableBounce.js +9 -3
  39. package/Libraries/Components/Touchable/TouchableBounce.windows.js +9 -3
  40. package/Libraries/Components/Touchable/TouchableHighlight.js +9 -4
  41. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +9 -4
  42. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -1
  43. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +2 -1
  44. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -3
  45. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +7 -3
  46. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  47. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -2
  48. package/Libraries/Components/View/View.js +111 -25
  49. package/Libraries/Components/View/View.windows.js +427 -227
  50. package/Libraries/Core/Devtools/loadBundleFromServer.js +49 -7
  51. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +49 -7
  52. package/Libraries/Core/InitializeCore.js +1 -22
  53. package/Libraries/Core/ReactNativeVersion.js +3 -2
  54. package/Libraries/Debugging/DebuggingOverlay.js +6 -8
  55. package/Libraries/Debugging/DebuggingOverlayRegistry.js +0 -1
  56. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +0 -1
  57. package/Libraries/EventEmitter/NativeEventEmitter.js +1 -1
  58. package/Libraries/Image/AssetRegistry.js +4 -10
  59. package/Libraries/Image/AssetSourceResolver.js +17 -4
  60. package/Libraries/Image/AssetSourceResolver.windows.js +17 -4
  61. package/Libraries/Image/Image.android.js +112 -106
  62. package/Libraries/Image/Image.ios.js +10 -2
  63. package/Libraries/Image/Image.windows.js +30 -20
  64. package/Libraries/Image/ImageAnalyticsTagContext.js +2 -2
  65. package/Libraries/Image/RelativeImageStub.js +1 -0
  66. package/Libraries/Lists/FlatList.d.ts +9 -5
  67. package/Libraries/Lists/FlatList.js +1 -1
  68. package/Libraries/Lists/SectionListModern.js +9 -3
  69. package/Libraries/LogBox/UI/LogBoxButton.js +2 -1
  70. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +2 -1
  71. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +2 -1
  72. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +3 -2
  73. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +2 -1
  74. package/Libraries/ReactNative/AppContainer-dev.js +4 -4
  75. package/Libraries/ReactNative/AppContainer-prod.js +0 -1
  76. package/Libraries/ReactNative/RootTag.js +2 -2
  77. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -0
  78. package/Libraries/Renderer/shims/ReactNativeTypes.js +21 -25
  79. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +270 -0
  80. package/Libraries/StyleSheet/StyleSheetExports.js.flow +3 -1
  81. package/Libraries/StyleSheet/StyleSheetTypes.js +4 -3
  82. package/Libraries/StyleSheet/private/_TransformStyle.js +49 -21
  83. package/Libraries/StyleSheet/processBoxShadow.js +0 -1
  84. package/Libraries/StyleSheet/processFilter.js +0 -1
  85. package/Libraries/Text/Text.d.ts +1 -2
  86. package/Libraries/Text/Text.js +255 -244
  87. package/Libraries/Text/Text.windows.js +281 -300
  88. package/Libraries/Text/TextAncestor.js +3 -2
  89. package/Libraries/Text/TextProps.js +2 -34
  90. package/Libraries/Text/TextProps.windows.js +2 -34
  91. package/Libraries/Types/ReactDevToolsTypes.js +0 -1
  92. package/Libraries/Utilities/PerformanceLoggerContext.js +2 -2
  93. package/Libraries/Utilities/PlatformTypes.js +1 -1
  94. package/Libraries/vendor/core/ErrorUtils.js +28 -4
  95. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +1 -1
  96. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.h +1 -1
  97. package/Microsoft.ReactNative/Fabric/AbiShadowNode.h +1 -1
  98. package/Microsoft.ReactNative/Fabric/AbiViewComponentDescriptor.h +1 -1
  99. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +2 -2
  100. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +10 -9
  101. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +21 -17
  102. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -4
  103. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.cpp +19 -0
  104. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputState.h +76 -0
  105. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +6 -0
  106. package/Microsoft.ReactNative/Modules/PaperUIManagerModule.cpp +19 -2
  107. package/Microsoft.ReactNative/Utils/ThemeUtils.cpp +49 -0
  108. package/Microsoft.ReactNative/Utils/ThemeUtils.h +31 -0
  109. package/Microsoft.ReactNative/Views/ShadowNodeBase.cpp +36 -8
  110. package/Microsoft.ReactNative/Views/ShadowNodeRegistry.cpp +6 -2
  111. package/Microsoft.ReactNative/Views/ViewManagerBase.cpp +9 -1
  112. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Base.h +45 -34
  113. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +1 -1
  114. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +1 -0
  115. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +36 -33
  116. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Number.h +10 -10
  117. package/PropertySheets/External/Microsoft.ReactNative.Cpp.Dependencies.props +10 -0
  118. package/PropertySheets/Generated/PackageVersion.g.props +2 -2
  119. package/PropertySheets/React.Cpp.props +1 -1
  120. package/ReactCommon/ReactCommon.vcxproj +10 -19
  121. package/ReactCommon/ReactCommon.vcxproj.filters +36 -13
  122. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +1 -1
  123. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +110 -0
  124. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +1 -0
  125. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.cpp +19 -3
  126. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/dom/NativeDOM.h +9 -0
  127. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp +459 -0
  128. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/platform/android/react/renderer/components/text/ParagraphState.h +92 -0
  129. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +35 -0
  130. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityProps.cpp +28 -1
  131. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +1 -2
  132. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +2 -1
  133. package/Scripts/creaternwapp.cmd +11 -8
  134. package/Shared/HermesRuntimeHolder.cpp +3 -1
  135. package/Shared/Shared.vcxitems +5 -1
  136. package/Shared/Shared.vcxitems.filters +4 -0
  137. package/codegen/NativeDOMSpec.g.h +6 -0
  138. package/codegen/NativeIntersectionObserverSpec.g.h +19 -5
  139. package/codegen/NativeMutationObserverSpec.g.h +11 -5
  140. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +104 -92
  141. package/codegen/react/components/rnwcore/States.h +8 -8
  142. package/codegen/rnwcoreJSI-generated.cpp +48 -3
  143. package/codegen/rnwcoreJSI.h +73 -10
  144. package/index.js +0 -1
  145. package/jest/mockNativeComponent.js +2 -1
  146. package/jest/renderer.js +0 -1
  147. package/jest/resolver.js +31 -0
  148. package/package.json +13 -13
  149. package/src/private/animated/NativeAnimatedHelper.js +6 -1
  150. package/src/private/animated/createAnimatedPropsHook.js +11 -4
  151. package/src/private/animated/createAnimatedPropsMemoHook.js +0 -1
  152. package/src/private/components/safeareaview/SafeAreaView_INTERNAL_DO_NOT_USE.js +0 -1
  153. package/src/private/components/scrollview/HScrollViewNativeComponents.js +0 -1
  154. package/src/private/components/scrollview/VScrollViewNativeComponents.js +0 -1
  155. package/src/private/devsupport/rndevtools/FuseboxSessionObserver.js +0 -1
  156. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.android.js +8 -9
  157. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.ios.js +12 -15
  158. package/src/private/devsupport/rndevtools/ReactDevToolsSettingsManager.windows.js +8 -9
  159. package/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +0 -1
  160. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +0 -1
  161. package/src/private/featureflags/ReactNativeFeatureFlags.js +39 -4
  162. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -2
  163. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +44 -0
  164. package/src/private/styles/composeStyles.js +12 -5
  165. package/src/private/webapis/dom/events/Event.js +3 -0
  166. package/src/private/webapis/dom/events/EventTarget.js +3 -0
  167. package/src/private/webapis/dom/nodes/ReactNativeElement.js +6 -23
  168. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +3 -1
  169. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +38 -0
  170. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +3 -0
  171. package/src/private/webapis/dom/oldstylecollections/NodeList.js +3 -0
  172. package/src/private/webapis/errors/DOMException.js +166 -0
  173. package/src/private/webapis/geometry/DOMRect.js +5 -0
  174. package/src/private/webapis/geometry/DOMRectList.js +3 -0
  175. package/src/private/webapis/geometry/DOMRectReadOnly.js +6 -0
  176. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +15 -7
  177. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +3 -0
  178. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +80 -18
  179. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +12 -0
  180. package/src/private/webapis/mutationobserver/MutationObserver.js +23 -33
  181. package/src/private/webapis/mutationobserver/MutationRecord.js +3 -0
  182. package/src/private/webapis/mutationobserver/internals/MutationObserverManager.js +56 -24
  183. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -1
  184. package/src/private/webapis/performance/MemoryInfo.js +4 -1
  185. package/src/private/webapis/performance/Performance.js +19 -8
  186. package/src/private/webapis/performance/PerformanceEntry.js +4 -0
  187. package/src/private/webapis/performance/ReactNativeStartupTiming.js +4 -1
  188. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +2 -0
  189. package/src/private/webapis/structuredClone/structuredClone.js +233 -0
  190. package/src/private/webapis/webidl/PlatformObjects.js +59 -0
  191. package/src/types/globals.d.ts +42 -0
  192. package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +0 -1
  193. package/types/index.d.ts +1 -1
  194. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +0 -78
  195. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +0 -196
@@ -23,6 +23,7 @@ public:
23
23
  virtual bool commonTestFlag(jsi::Runtime &rt) = 0;
24
24
  virtual bool commonTestFlagWithoutNativeImplementation(jsi::Runtime &rt) = 0;
25
25
  virtual bool animatedShouldSignalBatch(jsi::Runtime &rt) = 0;
26
+ virtual bool avoidCeilingAvailableAndroidTextWidth(jsi::Runtime &rt) = 0;
26
27
  virtual bool cxxNativeAnimatedEnabled(jsi::Runtime &rt) = 0;
27
28
  virtual bool disableMainQueueSyncDispatchIOS(jsi::Runtime &rt) = 0;
28
29
  virtual bool disableMountItemReorderingAndroid(jsi::Runtime &rt) = 0;
@@ -39,7 +40,7 @@ public:
39
40
  virtual bool enableFixForParentTagDuringReparenting(jsi::Runtime &rt) = 0;
40
41
  virtual bool enableFontScaleChangesUpdatingLayout(jsi::Runtime &rt) = 0;
41
42
  virtual bool enableIOSViewClipToPaddingBox(jsi::Runtime &rt) = 0;
42
- virtual bool enableJSRuntimeGCOnMemoryPressureOnIOS(jsi::Runtime &rt) = 0;
43
+ virtual bool enableIntersectionObserverEventLoopIntegration(jsi::Runtime &rt) = 0;
43
44
  virtual bool enableLayoutAnimationsOnAndroid(jsi::Runtime &rt) = 0;
44
45
  virtual bool enableLayoutAnimationsOnIOS(jsi::Runtime &rt) = 0;
45
46
  virtual bool enableMainQueueModulesOnIOS(jsi::Runtime &rt) = 0;
@@ -61,6 +62,7 @@ public:
61
62
  virtual bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) = 0;
62
63
  virtual bool updateRuntimeShadowNodeReferencesOnCommit(jsi::Runtime &rt) = 0;
63
64
  virtual bool useAlwaysAvailableJSErrorHandling(jsi::Runtime &rt) = 0;
65
+ virtual bool useAndroidTextLayoutWidthDirectly(jsi::Runtime &rt) = 0;
64
66
  virtual bool useFabricInterop(jsi::Runtime &rt) = 0;
65
67
  virtual bool useNativeViewConfigsInBridgelessMode(jsi::Runtime &rt) = 0;
66
68
  virtual bool useOptimizedEventBatchingOnAndroid(jsi::Runtime &rt) = 0;
@@ -122,6 +124,14 @@ private:
122
124
  return bridging::callFromJs<bool>(
123
125
  rt, &T::animatedShouldSignalBatch, jsInvoker_, instance_);
124
126
  }
127
+ bool avoidCeilingAvailableAndroidTextWidth(jsi::Runtime &rt) override {
128
+ static_assert(
129
+ bridging::getParameterCount(&T::avoidCeilingAvailableAndroidTextWidth) == 1,
130
+ "Expected avoidCeilingAvailableAndroidTextWidth(...) to have 1 parameters");
131
+
132
+ return bridging::callFromJs<bool>(
133
+ rt, &T::avoidCeilingAvailableAndroidTextWidth, jsInvoker_, instance_);
134
+ }
125
135
  bool cxxNativeAnimatedEnabled(jsi::Runtime &rt) override {
126
136
  static_assert(
127
137
  bridging::getParameterCount(&T::cxxNativeAnimatedEnabled) == 1,
@@ -250,13 +260,13 @@ private:
250
260
  return bridging::callFromJs<bool>(
251
261
  rt, &T::enableIOSViewClipToPaddingBox, jsInvoker_, instance_);
252
262
  }
253
- bool enableJSRuntimeGCOnMemoryPressureOnIOS(jsi::Runtime &rt) override {
263
+ bool enableIntersectionObserverEventLoopIntegration(jsi::Runtime &rt) override {
254
264
  static_assert(
255
- bridging::getParameterCount(&T::enableJSRuntimeGCOnMemoryPressureOnIOS) == 1,
256
- "Expected enableJSRuntimeGCOnMemoryPressureOnIOS(...) to have 1 parameters");
265
+ bridging::getParameterCount(&T::enableIntersectionObserverEventLoopIntegration) == 1,
266
+ "Expected enableIntersectionObserverEventLoopIntegration(...) to have 1 parameters");
257
267
 
258
268
  return bridging::callFromJs<bool>(
259
- rt, &T::enableJSRuntimeGCOnMemoryPressureOnIOS, jsInvoker_, instance_);
269
+ rt, &T::enableIntersectionObserverEventLoopIntegration, jsInvoker_, instance_);
260
270
  }
261
271
  bool enableLayoutAnimationsOnAndroid(jsi::Runtime &rt) override {
262
272
  static_assert(
@@ -426,6 +436,14 @@ private:
426
436
  return bridging::callFromJs<bool>(
427
437
  rt, &T::useAlwaysAvailableJSErrorHandling, jsInvoker_, instance_);
428
438
  }
439
+ bool useAndroidTextLayoutWidthDirectly(jsi::Runtime &rt) override {
440
+ static_assert(
441
+ bridging::getParameterCount(&T::useAndroidTextLayoutWidthDirectly) == 1,
442
+ "Expected useAndroidTextLayoutWidthDirectly(...) to have 1 parameters");
443
+
444
+ return bridging::callFromJs<bool>(
445
+ rt, &T::useAndroidTextLayoutWidthDirectly, jsInvoker_, instance_);
446
+ }
429
447
  bool useFabricInterop(jsi::Runtime &rt) override {
430
448
  static_assert(
431
449
  bridging::getParameterCount(&T::useFabricInterop) == 1,
@@ -8239,14 +8257,15 @@ struct NativeIntersectionObserverNativeIntersectionObserverEntryBridging {
8239
8257
 
8240
8258
  #pragma mark - NativeIntersectionObserverNativeIntersectionObserverObserveOptions
8241
8259
 
8242
- template <typename P0, typename P1, typename P2, typename P3>
8260
+ template <typename P0, typename P1, typename P2, typename P3, typename P4>
8243
8261
  struct NativeIntersectionObserverNativeIntersectionObserverObserveOptions {
8244
8262
  P0 intersectionObserverId;
8245
- P1 targetShadowNode;
8246
- P2 thresholds;
8247
- P3 rootThresholds;
8263
+ P1 rootShadowNode;
8264
+ P2 targetShadowNode;
8265
+ P3 thresholds;
8266
+ P4 rootThresholds;
8248
8267
  bool operator==(const NativeIntersectionObserverNativeIntersectionObserverObserveOptions &other) const {
8249
- return intersectionObserverId == other.intersectionObserverId && targetShadowNode == other.targetShadowNode && thresholds == other.thresholds && rootThresholds == other.rootThresholds;
8268
+ return intersectionObserverId == other.intersectionObserverId && rootShadowNode == other.rootShadowNode && targetShadowNode == other.targetShadowNode && thresholds == other.thresholds && rootThresholds == other.rootThresholds;
8250
8269
  }
8251
8270
  };
8252
8271
 
@@ -8260,6 +8279,7 @@ struct NativeIntersectionObserverNativeIntersectionObserverObserveOptionsBridgin
8260
8279
  const std::shared_ptr<CallInvoker> &jsInvoker) {
8261
8280
  T result{
8262
8281
  bridging::fromJs<decltype(types.intersectionObserverId)>(rt, value.getProperty(rt, "intersectionObserverId"), jsInvoker),
8282
+ bridging::fromJs<decltype(types.rootShadowNode)>(rt, value.getProperty(rt, "rootShadowNode"), jsInvoker),
8263
8283
  bridging::fromJs<decltype(types.targetShadowNode)>(rt, value.getProperty(rt, "targetShadowNode"), jsInvoker),
8264
8284
  bridging::fromJs<decltype(types.thresholds)>(rt, value.getProperty(rt, "thresholds"), jsInvoker),
8265
8285
  bridging::fromJs<decltype(types.rootThresholds)>(rt, value.getProperty(rt, "rootThresholds"), jsInvoker)};
@@ -8271,6 +8291,10 @@ struct NativeIntersectionObserverNativeIntersectionObserverObserveOptionsBridgin
8271
8291
  return bridging::toJs(rt, value);
8272
8292
  }
8273
8293
 
8294
+ static std::optional<jsi::Value> rootShadowNodeToJs(jsi::Runtime &rt, decltype(types.rootShadowNode) value) {
8295
+ return bridging::toJs(rt, value);
8296
+ }
8297
+
8274
8298
  static jsi::Value targetShadowNodeToJs(jsi::Runtime &rt, decltype(types.targetShadowNode) value) {
8275
8299
  return bridging::toJs(rt, value);
8276
8300
  }
@@ -8290,6 +8314,9 @@ struct NativeIntersectionObserverNativeIntersectionObserverObserveOptionsBridgin
8290
8314
  const std::shared_ptr<CallInvoker> &jsInvoker) {
8291
8315
  auto result = facebook::jsi::Object(rt);
8292
8316
  result.setProperty(rt, "intersectionObserverId", bridging::toJs(rt, value.intersectionObserverId, jsInvoker));
8317
+ if (value.rootShadowNode) {
8318
+ result.setProperty(rt, "rootShadowNode", bridging::toJs(rt, value.rootShadowNode.value(), jsInvoker));
8319
+ }
8293
8320
  result.setProperty(rt, "targetShadowNode", bridging::toJs(rt, value.targetShadowNode, jsInvoker));
8294
8321
  result.setProperty(rt, "thresholds", bridging::toJs(rt, value.thresholds, jsInvoker));
8295
8322
  if (value.rootThresholds) {
@@ -8306,6 +8333,8 @@ protected:
8306
8333
  public:
8307
8334
  virtual void observe(jsi::Runtime &rt, jsi::Object options) = 0;
8308
8335
  virtual void unobserve(jsi::Runtime &rt, double intersectionObserverId, jsi::Value targetShadowNode) = 0;
8336
+ virtual jsi::Value observeV2(jsi::Runtime &rt, jsi::Object options) = 0;
8337
+ virtual void unobserveV2(jsi::Runtime &rt, double intersectionObserverId, jsi::Value token) = 0;
8309
8338
  virtual void connect(jsi::Runtime &rt, jsi::Function notifyIntersectionObserversCallback) = 0;
8310
8339
  virtual void disconnect(jsi::Runtime &rt) = 0;
8311
8340
  virtual jsi::Array takeRecords(jsi::Runtime &rt) = 0;
@@ -8355,6 +8384,22 @@ private:
8355
8384
  return bridging::callFromJs<void>(
8356
8385
  rt, &T::unobserve, jsInvoker_, instance_, std::move(intersectionObserverId), std::move(targetShadowNode));
8357
8386
  }
8387
+ jsi::Value observeV2(jsi::Runtime &rt, jsi::Object options) override {
8388
+ static_assert(
8389
+ bridging::getParameterCount(&T::observeV2) == 2,
8390
+ "Expected observeV2(...) to have 2 parameters");
8391
+
8392
+ return bridging::callFromJs<jsi::Value>(
8393
+ rt, &T::observeV2, jsInvoker_, instance_, std::move(options));
8394
+ }
8395
+ void unobserveV2(jsi::Runtime &rt, double intersectionObserverId, jsi::Value token) override {
8396
+ static_assert(
8397
+ bridging::getParameterCount(&T::unobserveV2) == 3,
8398
+ "Expected unobserveV2(...) to have 3 parameters");
8399
+
8400
+ return bridging::callFromJs<void>(
8401
+ rt, &T::unobserveV2, jsInvoker_, instance_, std::move(intersectionObserverId), std::move(token));
8402
+ }
8358
8403
  void connect(jsi::Runtime &rt, jsi::Function notifyIntersectionObserversCallback) override {
8359
8404
  static_assert(
8360
8405
  bridging::getParameterCount(&T::connect) == 2,
@@ -8566,6 +8611,7 @@ protected:
8566
8611
  public:
8567
8612
  virtual void observe(jsi::Runtime &rt, jsi::Object options) = 0;
8568
8613
  virtual void unobserve(jsi::Runtime &rt, double mutationObserverId, jsi::Value targetShadowNode) = 0;
8614
+ virtual void unobserveAll(jsi::Runtime &rt, double mutationObserverId) = 0;
8569
8615
  virtual void connect(jsi::Runtime &rt, jsi::Function notifyMutationObservers, jsi::Function getPublicInstanceFromInstanceHandle) = 0;
8570
8616
  virtual void disconnect(jsi::Runtime &rt) = 0;
8571
8617
  virtual jsi::Array takeRecords(jsi::Runtime &rt) = 0;
@@ -8615,6 +8661,14 @@ private:
8615
8661
  return bridging::callFromJs<void>(
8616
8662
  rt, &T::unobserve, jsInvoker_, instance_, std::move(mutationObserverId), std::move(targetShadowNode));
8617
8663
  }
8664
+ void unobserveAll(jsi::Runtime &rt, double mutationObserverId) override {
8665
+ static_assert(
8666
+ bridging::getParameterCount(&T::unobserveAll) == 2,
8667
+ "Expected unobserveAll(...) to have 2 parameters");
8668
+
8669
+ return bridging::callFromJs<void>(
8670
+ rt, &T::unobserveAll, jsInvoker_, instance_, std::move(mutationObserverId));
8671
+ }
8618
8672
  void connect(jsi::Runtime &rt, jsi::Function notifyMutationObservers, jsi::Function getPublicInstanceFromInstanceHandle) override {
8619
8673
  static_assert(
8620
8674
  bridging::getParameterCount(&T::connect) == 3,
@@ -9094,6 +9148,7 @@ public:
9094
9148
  virtual void measure(jsi::Runtime &rt, jsi::Value nativeElementReference, jsi::Function callback) = 0;
9095
9149
  virtual void measureInWindow(jsi::Runtime &rt, jsi::Value nativeElementReference, jsi::Function callback) = 0;
9096
9150
  virtual void measureLayout(jsi::Runtime &rt, jsi::Value nativeElementReference, jsi::Value relativeNode, jsi::Function onFail, jsi::Function onSuccess) = 0;
9151
+ virtual void setNativeProps(jsi::Runtime &rt, jsi::Value nativeElementReference, jsi::Value updatePayload) = 0;
9097
9152
 
9098
9153
  };
9099
9154
 
@@ -9276,6 +9331,14 @@ private:
9276
9331
  return bridging::callFromJs<void>(
9277
9332
  rt, &T::measureLayout, jsInvoker_, instance_, std::move(nativeElementReference), std::move(relativeNode), std::move(onFail), std::move(onSuccess));
9278
9333
  }
9334
+ void setNativeProps(jsi::Runtime &rt, jsi::Value nativeElementReference, jsi::Value updatePayload) override {
9335
+ static_assert(
9336
+ bridging::getParameterCount(&T::setNativeProps) == 3,
9337
+ "Expected setNativeProps(...) to have 3 parameters");
9338
+
9339
+ return bridging::callFromJs<void>(
9340
+ rt, &T::setNativeProps, jsInvoker_, instance_, std::move(nativeElementReference), std::move(updatePayload));
9341
+ }
9279
9342
 
9280
9343
  private:
9281
9344
  friend class NativeDOMCxxSpec;
package/index.js CHANGED
@@ -9,7 +9,6 @@
9
9
  */
10
10
 
11
11
  // flowlint unsafe-getters-setters:off
12
- /* eslint-disable lint/no-commonjs-exports */
13
12
 
14
13
  'use strict';
15
14
  'use client';
@@ -10,6 +10,7 @@
10
10
  'use strict';
11
11
 
12
12
  const React = require('react');
13
+ const {createElement} = require('react');
13
14
 
14
15
  let nativeTag = 1;
15
16
 
@@ -18,7 +19,7 @@ export default viewName => {
18
19
  _nativeTag = nativeTag++;
19
20
 
20
21
  render() {
21
- return React.createElement(viewName, this.props, this.props.children);
22
+ return createElement(viewName, this.props, this.props.children);
22
23
  }
23
24
 
24
25
  // The methods that exist on host components
package/jest/renderer.js CHANGED
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {ReactTestRenderer} from 'react-test-renderer';
@@ -0,0 +1,31 @@
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
+ * @format
8
+ */
9
+
10
+ 'use strict';
11
+
12
+ module.exports = (path, options) => {
13
+ const originalPackageFilter = options.packageFilter;
14
+
15
+ return options.defaultResolver(path, {
16
+ ...options,
17
+ packageFilter: pkg => {
18
+ const filteredPkg = originalPackageFilter
19
+ ? originalPackageFilter(pkg)
20
+ : pkg;
21
+
22
+ // Temporarily allow any react-native subpaths to be resolved and
23
+ // mocked by Jest (backwards compatibility around RFC0894)
24
+ if (filteredPkg.name === 'react-native') {
25
+ delete filteredPkg.exports;
26
+ }
27
+
28
+ return filteredPkg;
29
+ },
30
+ });
31
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-windows",
3
- "version": "0.0.0-canary.992",
3
+ "version": "0.0.0-canary.993",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,14 +28,14 @@
28
28
  "@react-native-community/cli-platform-ios": "17.0.0",
29
29
  "@react-native-windows/cli": "0.0.0-canary.276",
30
30
  "@react-native/assets": "1.0.0",
31
- "@react-native/assets-registry": "0.80.0-nightly-20250506-3ac16dd6a",
32
- "@react-native/codegen": "0.80.0-nightly-20250506-3ac16dd6a",
33
- "@react-native/community-cli-plugin": "0.80.0-nightly-20250506-3ac16dd6a",
34
- "@react-native/gradle-plugin": "0.80.0-nightly-20250506-3ac16dd6a",
35
- "@react-native/js-polyfills": "0.80.0-nightly-20250506-3ac16dd6a",
36
- "@react-native/normalize-colors": "0.80.0-nightly-20250506-3ac16dd6a",
37
- "@react-native/virtualized-lists": "0.80.0-nightly-20250506-3ac16dd6a",
38
- "@react-native/new-app-screen": "0.80.0-nightly-20250506-3ac16dd6a",
31
+ "@react-native/assets-registry": "0.81.0-nightly-20250521-3cb70bb6a",
32
+ "@react-native/codegen": "0.81.0-nightly-20250521-3cb70bb6a",
33
+ "@react-native/community-cli-plugin": "0.81.0-nightly-20250521-3cb70bb6a",
34
+ "@react-native/gradle-plugin": "0.81.0-nightly-20250521-3cb70bb6a",
35
+ "@react-native/js-polyfills": "0.81.0-nightly-20250521-3cb70bb6a",
36
+ "@react-native/normalize-colors": "0.81.0-nightly-20250521-3cb70bb6a",
37
+ "@react-native/virtualized-lists": "0.81.0-nightly-20250521-3cb70bb6a",
38
+ "@react-native/new-app-screen": "0.81.0-nightly-20250521-3cb70bb6a",
39
39
  "abort-controller": "^3.0.0",
40
40
  "anser": "^1.4.9",
41
41
  "ansi-regex": "^5.0.0",
@@ -69,7 +69,7 @@
69
69
  },
70
70
  "devDependencies": {
71
71
  "@react-native-windows/codegen": "0.0.0-canary.125",
72
- "@react-native/metro-config": "0.80.0-nightly-20250506-3ac16dd6a",
72
+ "@react-native/metro-config": "0.81.0-nightly-20250521-3cb70bb6a",
73
73
  "@rnw-scripts/babel-react-native-config": "0.0.0",
74
74
  "@rnw-scripts/eslint-config": "1.2.37",
75
75
  "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.41",
@@ -84,15 +84,15 @@
84
84
  "just-scripts": "^1.3.3",
85
85
  "prettier": "2.8.8",
86
86
  "react": "19.1.0",
87
- "react-native": "0.80.0-nightly-20250506-3ac16dd6a",
88
- "react-native-platform-override": "^1.9.57",
87
+ "react-native": "0.81.0-nightly-20250521-3cb70bb6a",
88
+ "react-native-platform-override": "^1.9.58",
89
89
  "react-refresh": "^0.14.0",
90
90
  "typescript": "5.0.4"
91
91
  },
92
92
  "peerDependencies": {
93
93
  "@types/react": "^19.1.0",
94
94
  "react": "^19.1.0",
95
- "react-native": "0.80.0-nightly-20250506-3ac16dd6a"
95
+ "react-native": "0.81.0-nightly-20250521-3cb70bb6a"
96
96
  },
97
97
  "beachball": {
98
98
  "defaultNpmTag": "canary",
@@ -57,7 +57,7 @@ const eventListenerAnimationFinishedCallbacks: {
57
57
  let globalEventEmitterGetValueListener: ?EventSubscription = null;
58
58
  let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
59
59
 
60
- const shouldSignalBatch =
60
+ const shouldSignalBatch: boolean =
61
61
  ReactNativeFeatureFlags.animatedShouldSignalBatch() ||
62
62
  ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
63
63
 
@@ -97,6 +97,10 @@ function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
97
97
  // is possible because # arguments is fixed for each operation. For more
98
98
  // details, see `NativeAnimatedModule.queueAndExecuteBatchedOperations`.
99
99
  singleOpQueue.push(operationID, ...args);
100
+ if (shouldSignalBatch) {
101
+ clearImmediate(flushQueueImmediate);
102
+ flushQueueImmediate = setImmediate(API.flushQueue);
103
+ }
100
104
  };
101
105
  }
102
106
  } else {
@@ -436,6 +440,7 @@ export default {
436
440
  generateNewAnimationId,
437
441
  assertNativeAnimatedModule,
438
442
  shouldUseNativeDriver,
443
+ shouldSignalBatch,
439
444
  transformDataType,
440
445
  // $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppression
441
446
  // $FlowExpectedError[missing-type-arg] - unsafe getter lint suppression
@@ -66,9 +66,13 @@ export default function createAnimatedPropsHook(
66
66
  );
67
67
 
68
68
  useEffect(() => {
69
- // If multiple components call `flushQueue`, the first one will flush the
70
- // queue and subsequent ones will do nothing.
71
- NativeAnimatedHelper.API.flushQueue();
69
+ // Animated queue flush is handled deterministically in setImmediate for the following feature flags:
70
+ // animatedShouldSignalBatch, cxxNativeAnimatedEnabled
71
+ if (!NativeAnimatedHelper.shouldSignalBatch) {
72
+ // If multiple components call `flushQueue`, the first one will flush the
73
+ // queue and subsequent ones will do nothing.
74
+ NativeAnimatedHelper.API.flushQueue();
75
+ }
72
76
  let drivenAnimationEndedListener: ?EventSubscription = null;
73
77
  if (node.__isNative) {
74
78
  drivenAnimationEndedListener =
@@ -128,7 +132,10 @@ export default function createAnimatedPropsHook(
128
132
  if (node.__isNative) {
129
133
  // Check 2: this is an animation driven by native.
130
134
  // In native driven animations, this callback is only called once the animation completes.
131
- if (isFabricNode) {
135
+ if (
136
+ isFabricNode &&
137
+ !ReactNativeFeatureFlags.cxxNativeAnimatedEnabled()
138
+ ) {
132
139
  // Call `scheduleUpdate` to synchronise Fiber and Shadow tree.
133
140
  // Must not be called in Paper.
134
141
  scheduleUpdate();
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {ScrollViewNativeProps} from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponentType';
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {ScrollViewNativeProps} from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponentType';
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  class FuseboxSessionObserver {
@@ -4,17 +4,16 @@
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-local
7
+ * @flow strict
8
8
  * @format
9
9
  */
10
10
 
11
11
  import NativeReactDevToolsSettingsManager from './specs/NativeReactDevToolsSettingsManager';
12
12
 
13
- module.exports = {
14
- setGlobalHookSettings(settings: string) {
15
- NativeReactDevToolsSettingsManager?.setGlobalHookSettings(settings);
16
- },
17
- getGlobalHookSettings(): ?string {
18
- return NativeReactDevToolsSettingsManager?.getGlobalHookSettings();
19
- },
20
- };
13
+ export function setGlobalHookSettings(settings: string) {
14
+ NativeReactDevToolsSettingsManager?.setGlobalHookSettings(settings);
15
+ }
16
+
17
+ export function getGlobalHookSettings(): ?string {
18
+ return NativeReactDevToolsSettingsManager?.getGlobalHookSettings();
19
+ }
@@ -12,19 +12,16 @@ import Settings from '../../../../Libraries/Settings/Settings';
12
12
 
13
13
  const GLOBAL_HOOK_SETTINGS = 'ReactDevTools::HookSettings';
14
14
 
15
- const ReactDevToolsSettingsManager = {
16
- setGlobalHookSettings(settings: string): void {
17
- Settings.set({
18
- [GLOBAL_HOOK_SETTINGS]: settings,
19
- });
20
- },
21
- getGlobalHookSettings(): ?string {
22
- const value = Settings.get(GLOBAL_HOOK_SETTINGS);
23
- if (typeof value === 'string') {
24
- return value;
25
- }
26
- return null;
27
- },
28
- };
15
+ export function setGlobalHookSettings(settings: string) {
16
+ Settings.set({
17
+ [GLOBAL_HOOK_SETTINGS]: settings,
18
+ });
19
+ }
29
20
 
30
- module.exports = ReactDevToolsSettingsManager;
21
+ export function getGlobalHookSettings(): ?string {
22
+ const value = Settings.get(GLOBAL_HOOK_SETTINGS);
23
+ if (typeof value === 'string') {
24
+ return value;
25
+ }
26
+ return null;
27
+ }
@@ -4,17 +4,16 @@
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-local
7
+ * @flow strict
8
8
  * @format
9
9
  */
10
10
 
11
11
  import NativeReactDevToolsSettingsManager from './specs/NativeReactDevToolsSettingsManager';
12
12
 
13
- module.exports = {
14
- setGlobalHookSettings(settings: string) {
15
- NativeReactDevToolsSettingsManager?.setGlobalHookSettings(settings);
16
- },
17
- getGlobalHookSettings(): ?string {
18
- return NativeReactDevToolsSettingsManager?.getGlobalHookSettings();
19
- },
20
- };
13
+ export function setGlobalHookSettings(settings: string) {
14
+ NativeReactDevToolsSettingsManager?.setGlobalHookSettings(settings);
15
+ }
16
+
17
+ export function getGlobalHookSettings(): ?string {
18
+ return NativeReactDevToolsSettingsManager?.getGlobalHookSettings();
19
+ }
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  type JSONValue =
@@ -6,7 +6,6 @@
6
6
  *
7
7
  * @flow strict-local
8
8
  * @format
9
- * @oncall react_native
10
9
  */
11
10
 
12
11
  import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
@@ -4,8 +4,9 @@
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<<6667fc8e4fdd2db0b54c908155b110cf>>
7
+ * @generated SignedSource<<81be36e22e6ec5f6720c89089d725086>>
8
8
  * @flow strict
9
+ * @noformat
9
10
  */
10
11
 
11
12
  /**
@@ -33,12 +34,16 @@ export type ReactNativeFeatureFlagsJsOnly = $ReadOnly<{
33
34
  avoidStateUpdateInAnimatedPropsMemo: Getter<boolean>,
34
35
  disableInteractionManager: Getter<boolean>,
35
36
  enableAccessToHostTreeInFabric: Getter<boolean>,
37
+ enableVirtualViewDebugFeatures: Getter<boolean>,
38
+ enableVirtualViewDoubleStateHidden: Getter<boolean>,
36
39
  fixVirtualizeListCollapseWindowSize: Getter<boolean>,
37
40
  isLayoutAnimationEnabled: Getter<boolean>,
41
+ reduceDefaultPropsInView: Getter<boolean>,
38
42
  scheduleAnimatedCleanupInMicrotask: Getter<boolean>,
39
43
  shouldUseAnimatedObjectForTransform: Getter<boolean>,
40
44
  shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean>,
41
45
  shouldUseSetNativePropsInFabric: Getter<boolean>,
46
+ utilizeTokensInIntersectionObserver: Getter<boolean>,
42
47
  }>;
43
48
 
44
49
  export type ReactNativeFeatureFlagsJsOnlyOverrides = OverridesFor<ReactNativeFeatureFlagsJsOnly>;
@@ -48,6 +53,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
48
53
  commonTestFlag: Getter<boolean>,
49
54
  commonTestFlagWithoutNativeImplementation: Getter<boolean>,
50
55
  animatedShouldSignalBatch: Getter<boolean>,
56
+ avoidCeilingAvailableAndroidTextWidth: Getter<boolean>,
51
57
  cxxNativeAnimatedEnabled: Getter<boolean>,
52
58
  disableMainQueueSyncDispatchIOS: Getter<boolean>,
53
59
  disableMountItemReorderingAndroid: Getter<boolean>,
@@ -64,7 +70,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
64
70
  enableFixForParentTagDuringReparenting: Getter<boolean>,
65
71
  enableFontScaleChangesUpdatingLayout: Getter<boolean>,
66
72
  enableIOSViewClipToPaddingBox: Getter<boolean>,
67
- enableJSRuntimeGCOnMemoryPressureOnIOS: Getter<boolean>,
73
+ enableIntersectionObserverEventLoopIntegration: Getter<boolean>,
68
74
  enableLayoutAnimationsOnAndroid: Getter<boolean>,
69
75
  enableLayoutAnimationsOnIOS: Getter<boolean>,
70
76
  enableMainQueueModulesOnIOS: Getter<boolean>,
@@ -86,6 +92,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
86
92
  traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean>,
87
93
  updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean>,
88
94
  useAlwaysAvailableJSErrorHandling: Getter<boolean>,
95
+ useAndroidTextLayoutWidthDirectly: Getter<boolean>,
89
96
  useFabricInterop: Getter<boolean>,
90
97
  useNativeViewConfigsInBridgelessMode: Getter<boolean>,
91
98
  useOptimizedEventBatchingOnAndroid: Getter<boolean>,
@@ -125,6 +132,16 @@ export const disableInteractionManager: Getter<boolean> = createJavaScriptFlagGe
125
132
  */
126
133
  export const enableAccessToHostTreeInFabric: Getter<boolean> = createJavaScriptFlagGetter('enableAccessToHostTreeInFabric', false);
127
134
 
135
+ /**
136
+ * Enables VirtualView debug features such as logging and overlays.
137
+ */
138
+ export const enableVirtualViewDebugFeatures: Getter<boolean> = createJavaScriptFlagGetter('enableVirtualViewDebugFeatures', false);
139
+
140
+ /**
141
+ * Enables a VirtualView workaround that triggers a second state update when changing to hidden mode.
142
+ */
143
+ export const enableVirtualViewDoubleStateHidden: Getter<boolean> = createJavaScriptFlagGetter('enableVirtualViewDoubleStateHidden', false);
144
+
128
145
  /**
129
146
  * Fixing an edge case where the current window size is not properly calculated with fast scrolling. Window size collapsed to 1 element even if windowSize more than the current amount of elements
130
147
  */
@@ -135,6 +152,11 @@ export const fixVirtualizeListCollapseWindowSize: Getter<boolean> = createJavaSc
135
152
  */
136
153
  export const isLayoutAnimationEnabled: Getter<boolean> = createJavaScriptFlagGetter('isLayoutAnimationEnabled', true);
137
154
 
155
+ /**
156
+ * Optimize how default (accessibility) props are processed in View to avoid unnecessary keys.
157
+ */
158
+ export const reduceDefaultPropsInView: Getter<boolean> = createJavaScriptFlagGetter('reduceDefaultPropsInView', true);
159
+
138
160
  /**
139
161
  * Changes the cleanup of `AnimatedProps` to occur in a microtask instead of synchronously during effect cleanup (for unmount) or subsequent mounts (for updates).
140
162
  */
@@ -155,6 +177,11 @@ export const shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean> = cre
155
177
  */
156
178
  export const shouldUseSetNativePropsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInFabric', true);
157
179
 
180
+ /**
181
+ * Use tokens in IntersectionObserver vs ShadowNode.
182
+ */
183
+ export const utilizeTokensInIntersectionObserver: Getter<boolean> = createJavaScriptFlagGetter('utilizeTokensInIntersectionObserver', true);
184
+
158
185
  /**
159
186
  * Common flag for testing. Do NOT modify.
160
187
  */
@@ -167,6 +194,10 @@ export const commonTestFlagWithoutNativeImplementation: Getter<boolean> = create
167
194
  * Enables start- and finishOperationBatch on any platform.
168
195
  */
169
196
  export const animatedShouldSignalBatch: Getter<boolean> = createNativeFlagGetter('animatedShouldSignalBatch', false);
197
+ /**
198
+ * Do not incorrectly ceil the available width of an Android text layout
199
+ */
200
+ export const avoidCeilingAvailableAndroidTextWidth: Getter<boolean> = createNativeFlagGetter('avoidCeilingAvailableAndroidTextWidth', true);
170
201
  /**
171
202
  * Use a C++ implementation of Native Animated instead of the platform implementation.
172
203
  */
@@ -232,9 +263,9 @@ export const enableFontScaleChangesUpdatingLayout: Getter<boolean> = createNativ
232
263
  */
233
264
  export const enableIOSViewClipToPaddingBox: Getter<boolean> = createNativeFlagGetter('enableIOSViewClipToPaddingBox', false);
234
265
  /**
235
- * Trigger JS runtime GC on memory pressure event on iOS
266
+ * Integrates IntersectionObserver in the Event Loop in the new architecture, to dispatch the initial notifications for observations in the "Update the rendering" step.
236
267
  */
237
- export const enableJSRuntimeGCOnMemoryPressureOnIOS: Getter<boolean> = createNativeFlagGetter('enableJSRuntimeGCOnMemoryPressureOnIOS', false);
268
+ export const enableIntersectionObserverEventLoopIntegration: Getter<boolean> = createNativeFlagGetter('enableIntersectionObserverEventLoopIntegration', true);
238
269
  /**
239
270
  * When enabled, LayoutAnimations API will animate state changes on Android.
240
271
  */
@@ -319,6 +350,10 @@ export const updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean> = create
319
350
  * In Bridgeless mode, use the always available javascript error reporting pipeline.
320
351
  */
321
352
  export const useAlwaysAvailableJSErrorHandling: Getter<boolean> = createNativeFlagGetter('useAlwaysAvailableJSErrorHandling', false);
353
+ /**
354
+ * Trust the width of a text layout we create, instead of re-deriving it from its contents
355
+ */
356
+ export const useAndroidTextLayoutWidthDirectly: Getter<boolean> = createNativeFlagGetter('useAndroidTextLayoutWidthDirectly', true);
322
357
  /**
323
358
  * Should this application enable the Fabric Interop Layer for Android? If yes, the application will behave so that it can accept non-Fabric components and render them on Fabric. This toggle is controlling extra logic such as custom event dispatching that are needed for the Fabric Interop Layer to work correctly.
324
359
  */