react-native 0.84.0-nightly-20251112-7dcedf1de → 0.84.0-nightly-20251114-dd6805dec

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 (77) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTAssert.m +2 -2
  3. package/React/Base/RCTModuleData.mm +2 -2
  4. package/React/Base/RCTVersion.m +1 -1
  5. package/React/CxxModule/RCTCxxMethod.mm +1 -1
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +24 -8
  7. package/ReactAndroid/api/ReactAndroid.api +1 -0
  8. package/ReactAndroid/build.gradle.kts +2 -0
  9. package/ReactAndroid/gradle.properties +1 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +28 -0
  11. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FrameTiming.kt +68 -0
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +20 -8
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +31 -11
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +7 -3
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +7 -3
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +34 -12
  17. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +3 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +7 -3
  19. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +23 -0
  20. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  21. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  22. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +11 -2
  23. package/ReactAndroid/src/main/jni/CMakeLists.txt +8 -0
  24. package/ReactAndroid/src/main/jni/react/devsupport/CMakeLists.txt +3 -1
  25. package/ReactAndroid/src/main/jni/react/devsupport/JFrameTiming.cpp +46 -0
  26. package/ReactAndroid/src/main/jni/react/devsupport/JFrameTiming.h +32 -0
  27. package/ReactAndroid/src/main/jni/react/devsupport/OnLoad.cpp +2 -0
  28. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +14 -0
  29. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +43 -15
  30. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +10 -4
  31. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +27 -0
  32. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +2 -0
  33. package/ReactCommon/React-Fabric.podspec +8 -2
  34. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  35. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +9 -0
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +13 -5
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +17 -7
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +117 -81
  39. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +8 -4
  40. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +13 -5
  41. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +28 -10
  42. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +5 -1
  43. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +4 -2
  44. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +2 -2
  45. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  46. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  47. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +5 -1
  48. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +16 -6
  49. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +7 -3
  50. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.h +4 -0
  51. package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +66 -0
  52. package/ReactCommon/react/networking/NetworkReporter.cpp +19 -22
  53. package/ReactCommon/react/networking/React-networking.podspec +0 -1
  54. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +1 -1
  55. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +3 -0
  56. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -1
  57. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +14 -0
  58. package/ReactCommon/react/renderer/core/Props.cpp +23 -8
  59. package/ReactCommon/react/renderer/core/Props.h +6 -4
  60. package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -10
  61. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +32 -0
  62. package/ReactCommon/react/renderer/graphics/BlendMode.h +2 -0
  63. package/ReactCommon/react/renderer/graphics/Filter.h +2 -0
  64. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +3 -0
  65. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +7 -2
  66. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +6 -3
  67. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +16 -4
  68. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  69. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -3
  70. package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +6 -6
  71. package/ReactCommon/yoga/yoga/algorithm/SizingMode.h +4 -4
  72. package/ReactCommon/yoga/yoga/style/Style.h +8 -8
  73. package/package.json +8 -8
  74. package/scripts/react_native_pods.rb +1 -0
  75. package/src/private/featureflags/ReactNativeFeatureFlags.js +18 -8
  76. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +4 -2
  77. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
@@ -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<<f484a05ce73cdf166d785560dca0536b>>
7
+ * @generated SignedSource<<bd86cec4dcf659b9586aeee1c141963c>>
8
8
  */
9
9
 
10
10
  /**
@@ -47,6 +47,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
47
47
  private var enableDoubleMeasurementFixAndroidCache: Boolean? = null
48
48
  private var enableEagerMainQueueModulesOnIOSCache: Boolean? = null
49
49
  private var enableEagerRootViewAttachmentCache: Boolean? = null
50
+ private var enableExclusivePropsUpdateAndroidCache: Boolean? = null
50
51
  private var enableFabricLogsCache: Boolean? = null
51
52
  private var enableFabricRendererCache: Boolean? = null
52
53
  private var enableFontScaleChangesUpdatingLayoutCache: Boolean? = null
@@ -58,6 +59,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
58
59
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
59
60
  private var enableImperativeFocusCache: Boolean? = null
60
61
  private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
62
+ private var enableIntersectionObserverByDefaultCache: Boolean? = null
61
63
  private var enableKeyEventsCache: Boolean? = null
62
64
  private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
63
65
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
@@ -67,7 +69,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
67
69
  private var enableNetworkEventReportingCache: Boolean? = null
68
70
  private var enablePreparedTextLayoutCache: Boolean? = null
69
71
  private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
70
- private var enableResourceTimingAPICache: Boolean? = null
71
72
  private var enableSwiftUIBasedFiltersCache: Boolean? = null
72
73
  private var enableViewCullingCache: Boolean? = null
73
74
  private var enableViewRecyclingCache: Boolean? = null
@@ -92,6 +93,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
92
93
  private var preparedTextCacheSizeCache: Double? = null
93
94
  private var preventShadowTreeCommitExhaustionCache: Boolean? = null
94
95
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
96
+ private var shouldSetEnabledBasedOnAccessibilityStateCache: Boolean? = null
95
97
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
96
98
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
97
99
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -341,6 +343,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
341
343
  return cached
342
344
  }
343
345
 
346
+ override fun enableExclusivePropsUpdateAndroid(): Boolean {
347
+ var cached = enableExclusivePropsUpdateAndroidCache
348
+ if (cached == null) {
349
+ cached = currentProvider.enableExclusivePropsUpdateAndroid()
350
+ accessedFeatureFlags.add("enableExclusivePropsUpdateAndroid")
351
+ enableExclusivePropsUpdateAndroidCache = cached
352
+ }
353
+ return cached
354
+ }
355
+
344
356
  override fun enableFabricLogs(): Boolean {
345
357
  var cached = enableFabricLogsCache
346
358
  if (cached == null) {
@@ -451,6 +463,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
451
463
  return cached
452
464
  }
453
465
 
466
+ override fun enableIntersectionObserverByDefault(): Boolean {
467
+ var cached = enableIntersectionObserverByDefaultCache
468
+ if (cached == null) {
469
+ cached = currentProvider.enableIntersectionObserverByDefault()
470
+ accessedFeatureFlags.add("enableIntersectionObserverByDefault")
471
+ enableIntersectionObserverByDefaultCache = cached
472
+ }
473
+ return cached
474
+ }
475
+
454
476
  override fun enableKeyEvents(): Boolean {
455
477
  var cached = enableKeyEventsCache
456
478
  if (cached == null) {
@@ -541,16 +563,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
541
563
  return cached
542
564
  }
543
565
 
544
- override fun enableResourceTimingAPI(): Boolean {
545
- var cached = enableResourceTimingAPICache
546
- if (cached == null) {
547
- cached = currentProvider.enableResourceTimingAPI()
548
- accessedFeatureFlags.add("enableResourceTimingAPI")
549
- enableResourceTimingAPICache = cached
550
- }
551
- return cached
552
- }
553
-
554
566
  override fun enableSwiftUIBasedFilters(): Boolean {
555
567
  var cached = enableSwiftUIBasedFiltersCache
556
568
  if (cached == null) {
@@ -791,6 +803,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
791
803
  return cached
792
804
  }
793
805
 
806
+ override fun shouldSetEnabledBasedOnAccessibilityState(): Boolean {
807
+ var cached = shouldSetEnabledBasedOnAccessibilityStateCache
808
+ if (cached == null) {
809
+ cached = currentProvider.shouldSetEnabledBasedOnAccessibilityState()
810
+ accessedFeatureFlags.add("shouldSetEnabledBasedOnAccessibilityState")
811
+ shouldSetEnabledBasedOnAccessibilityStateCache = cached
812
+ }
813
+ return cached
814
+ }
815
+
794
816
  override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
795
817
  var cached = shouldTriggerResponderTransferOnScrollAndroidCache
796
818
  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<<f82b5905d822f8009c054a9443f86e39>>
7
+ * @generated SignedSource<<2912fe4c90e3b493770bf14e70264656>>
8
8
  */
9
9
 
10
10
  /**
@@ -27,6 +27,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android : ReactN
27
27
 
28
28
  override fun enableFabricRenderer(): Boolean = true
29
29
 
30
+ override fun enableIntersectionObserverByDefault(): Boolean = true
31
+
30
32
  override fun useNativeViewConfigsInBridgelessMode(): Boolean = true
31
33
 
32
34
  override fun useTurboModuleInterop(): Boolean = true
@@ -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<<a2bdf7bbb1c18dbcdd4ea424362d3e9d>>
7
+ * @generated SignedSource<<90fd5f8d9c5b6833c6fdd10167577bb9>>
8
8
  */
9
9
 
10
10
  /**
@@ -69,6 +69,8 @@ public interface ReactNativeFeatureFlagsProvider {
69
69
 
70
70
  @DoNotStrip public fun enableEagerRootViewAttachment(): Boolean
71
71
 
72
+ @DoNotStrip public fun enableExclusivePropsUpdateAndroid(): Boolean
73
+
72
74
  @DoNotStrip public fun enableFabricLogs(): Boolean
73
75
 
74
76
  @DoNotStrip public fun enableFabricRenderer(): Boolean
@@ -91,6 +93,8 @@ public interface ReactNativeFeatureFlagsProvider {
91
93
 
92
94
  @DoNotStrip public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
93
95
 
96
+ @DoNotStrip public fun enableIntersectionObserverByDefault(): Boolean
97
+
94
98
  @DoNotStrip public fun enableKeyEvents(): Boolean
95
99
 
96
100
  @DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean
@@ -109,8 +113,6 @@ public interface ReactNativeFeatureFlagsProvider {
109
113
 
110
114
  @DoNotStrip public fun enablePropsUpdateReconciliationAndroid(): Boolean
111
115
 
112
- @DoNotStrip public fun enableResourceTimingAPI(): Boolean
113
-
114
116
  @DoNotStrip public fun enableSwiftUIBasedFilters(): Boolean
115
117
 
116
118
  @DoNotStrip public fun enableViewCulling(): Boolean
@@ -159,6 +161,8 @@ public interface ReactNativeFeatureFlagsProvider {
159
161
 
160
162
  @DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
161
163
 
164
+ @DoNotStrip public fun shouldSetEnabledBasedOnAccessibilityState(): Boolean
165
+
162
166
  @DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
163
167
 
164
168
  @DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
@@ -42,6 +42,29 @@ internal object NetworkEventUtil {
42
42
  }
43
43
  }
44
44
 
45
+ @Deprecated("Compatibility overload")
46
+ @JvmStatic
47
+ fun onCreateRequest(
48
+ devToolsRequestId: String,
49
+ requestUrl: String,
50
+ requestMethod: String,
51
+ requestHeaders: Map<String, String>,
52
+ requestBody: String,
53
+ encodedDataLength: Long,
54
+ ) {
55
+ if (ReactNativeFeatureFlags.enableNetworkEventReporting()) {
56
+ InspectorNetworkReporter.reportRequestStart(
57
+ devToolsRequestId,
58
+ requestUrl,
59
+ requestMethod,
60
+ requestHeaders,
61
+ requestBody,
62
+ encodedDataLength,
63
+ )
64
+ InspectorNetworkReporter.reportConnectionTiming(devToolsRequestId, requestHeaders)
65
+ }
66
+ }
67
+
45
68
  @JvmStatic
46
69
  fun onDataSend(
47
70
  reactContext: ReactApplicationContext?,
@@ -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-20251112-7dcedf1de"
18
+ "prerelease" to "nightly-20251114-dd6805dec"
19
19
  )
20
20
  }
@@ -28,6 +28,7 @@ public object OpenSourceMergedSoMapping : ExternalSoMapping {
28
28
  "react_devsupportjni",
29
29
  "react_featureflagsjni",
30
30
  "react_newarchdefaults",
31
+ "react_performancetracerjni",
31
32
  "reactnativeblob",
32
33
  "reactnativejni",
33
34
  "reactnativejni_common",
@@ -57,6 +58,7 @@ public object OpenSourceMergedSoMapping : ExternalSoMapping {
57
58
  "react_devsupportjni" -> libreact_devsupportjni_so()
58
59
  "react_featureflagsjni" -> libreact_featureflagsjni_so()
59
60
  "react_newarchdefaults" -> libreact_newarchdefaults_so()
61
+ "react_performancetracerjni" -> libreact_performancetracerjni_so()
60
62
  "reactnative" -> libreactnative_so()
61
63
  "reactnativeblob" -> libreactnativeblob_so()
62
64
  "reactnativejni" -> libreactnativejni_so()
@@ -88,6 +90,8 @@ public object OpenSourceMergedSoMapping : ExternalSoMapping {
88
90
 
89
91
  public external fun libreact_newarchdefaults_so(): Int
90
92
 
93
+ public external fun libreact_performancetracerjni_so(): Int
94
+
91
95
  public external fun libreactnative_so(): Int
92
96
 
93
97
  public external fun libreactnativeblob_so(): Int
@@ -30,6 +30,7 @@ import com.facebook.react.bridge.ReadableMapKeySetIterator;
30
30
  import com.facebook.react.bridge.ReadableType;
31
31
  import com.facebook.react.common.MapBuilder;
32
32
  import com.facebook.react.common.ReactConstants;
33
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
33
34
  import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole;
34
35
  import com.facebook.react.uimanager.ReactAccessibilityDelegate.Role;
35
36
  import com.facebook.react.uimanager.annotations.ReactProp;
@@ -385,8 +386,16 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
385
386
  view.setSelected(false);
386
387
  }
387
388
  view.setTag(R.id.accessibility_state, accessibilityState);
388
- if (accessibilityState.hasKey("disabled") && !accessibilityState.getBoolean("disabled")) {
389
- view.setEnabled(true);
389
+ if (accessibilityState.hasKey("disabled")) {
390
+ if (ReactNativeFeatureFlags.shouldSetEnabledBasedOnAccessibilityState()) {
391
+ // New behavior: properly set enabled state for both true and false
392
+ view.setEnabled(!accessibilityState.getBoolean("disabled"));
393
+ } else {
394
+ // Old behavior: only set enabled(true) when disabled=false
395
+ if (!accessibilityState.getBoolean("disabled")) {
396
+ view.setEnabled(true);
397
+ }
398
+ }
390
399
  }
391
400
 
392
401
  // For states which don't have corresponding methods in
@@ -114,6 +114,7 @@ add_react_common_subdir(react/renderer/components/scrollview)
114
114
  add_react_common_subdir(react/renderer/components/safeareaview)
115
115
  add_react_common_subdir(react/renderer/leakchecker)
116
116
  add_react_common_subdir(react/renderer/observers/events)
117
+ add_react_common_subdir(react/renderer/observers/intersection)
117
118
  add_react_common_subdir(react/renderer/textlayoutmanager)
118
119
  add_react_common_subdir(react/utils)
119
120
  add_react_common_subdir(react/bridging)
@@ -124,6 +125,7 @@ add_react_common_subdir(react/nativemodule/dom)
124
125
  add_react_common_subdir(react/nativemodule/featureflags)
125
126
  add_react_common_subdir(react/nativemodule/microtasks)
126
127
  add_react_common_subdir(react/nativemodule/idlecallbacks)
128
+ add_react_common_subdir(react/nativemodule/intersectionobserver)
127
129
  add_react_common_subdir(react/nativemodule/webperformance)
128
130
  add_react_common_subdir(react/networking)
129
131
  add_react_common_subdir(jserrorhandler)
@@ -153,6 +155,7 @@ add_react_android_subdir(src/main/jni/react/runtime/cxxreactpackage)
153
155
  add_react_android_subdir(src/main/jni/react/runtime/jni)
154
156
  add_react_android_subdir(src/main/jni/react/runtime/hermes/jni)
155
157
  add_react_android_subdir(src/main/jni/react/devsupport)
158
+ add_react_android_subdir(src/main/jni/react/tracing)
156
159
 
157
160
  # SoMerging Utils
158
161
  include(${REACT_ANDROID_DIR}/src/main/jni/first-party/jni-lib-merge/SoMerging-utils.cmake)
@@ -191,12 +194,14 @@ add_library(reactnative
191
194
  $<TARGET_OBJECTS:react_nativemodule_dom>
192
195
  $<TARGET_OBJECTS:react_nativemodule_featureflags>
193
196
  $<TARGET_OBJECTS:react_nativemodule_idlecallbacks>
197
+ $<TARGET_OBJECTS:react_nativemodule_intersectionobserver>
194
198
  $<TARGET_OBJECTS:react_nativemodule_microtasks>
195
199
  $<TARGET_OBJECTS:react_nativemodule_webperformance>
196
200
  $<TARGET_OBJECTS:react_networking>
197
201
  $<TARGET_OBJECTS:react_newarchdefaults>
198
202
  $<TARGET_OBJECTS:react_performance_cdpmetrics>
199
203
  $<TARGET_OBJECTS:react_performance_timeline>
204
+ $<TARGET_OBJECTS:react_performancetracerjni>
200
205
  $<TARGET_OBJECTS:react_renderer_animations>
201
206
  $<TARGET_OBJECTS:react_renderer_attributedstring>
202
207
  $<TARGET_OBJECTS:react_renderer_componentregistry>
@@ -211,6 +216,7 @@ add_library(reactnative
211
216
  $<TARGET_OBJECTS:react_renderer_mapbuffer>
212
217
  $<TARGET_OBJECTS:react_renderer_mounting>
213
218
  $<TARGET_OBJECTS:react_renderer_observers_events>
219
+ $<TARGET_OBJECTS:react_renderer_observers_intersection>
214
220
  $<TARGET_OBJECTS:react_renderer_runtimescheduler>
215
221
  $<TARGET_OBJECTS:react_renderer_scheduler>
216
222
  $<TARGET_OBJECTS:react_renderer_telemetry>
@@ -282,12 +288,14 @@ target_include_directories(reactnative
282
288
  $<TARGET_PROPERTY:react_nativemodule_dom,INTERFACE_INCLUDE_DIRECTORIES>
283
289
  $<TARGET_PROPERTY:react_nativemodule_featureflags,INTERFACE_INCLUDE_DIRECTORIES>
284
290
  $<TARGET_PROPERTY:react_nativemodule_idlecallbacks,INTERFACE_INCLUDE_DIRECTORIES>
291
+ $<TARGET_PROPERTY:react_nativemodule_intersectionobserver,INTERFACE_INCLUDE_DIRECTORIES>
285
292
  $<TARGET_PROPERTY:react_nativemodule_microtasks,INTERFACE_INCLUDE_DIRECTORIES>
286
293
  $<TARGET_PROPERTY:react_nativemodule_webperformance,INTERFACE_INCLUDE_DIRECTORIES>
287
294
  $<TARGET_PROPERTY:react_networking,INTERFACE_INCLUDE_DIRECTORIES>
288
295
  $<TARGET_PROPERTY:react_newarchdefaults,INTERFACE_INCLUDE_DIRECTORIES>
289
296
  $<TARGET_PROPERTY:react_performance_cdpmetrics,INTERFACE_INCLUDE_DIRECTORIES>
290
297
  $<TARGET_PROPERTY:react_performance_timeline,INTERFACE_INCLUDE_DIRECTORIES>
298
+ $<TARGET_PROPERTY:react_performancetracerjni,INTERFACE_INCLUDE_DIRECTORIES>
291
299
  $<TARGET_PROPERTY:react_renderer_animations,INTERFACE_INCLUDE_DIRECTORIES>
292
300
  $<TARGET_PROPERTY:react_renderer_attributedstring,INTERFACE_INCLUDE_DIRECTORIES>
293
301
  $<TARGET_PROPERTY:react_renderer_componentregistry,INTERFACE_INCLUDE_DIRECTORIES>
@@ -20,6 +20,8 @@ target_include_directories(react_devsupportjni PUBLIC .)
20
20
  target_link_libraries(react_devsupportjni
21
21
  fbjni
22
22
  jsinspector
23
- react_networking)
23
+ jsinspector_tracing
24
+ react_networking
25
+ react_timing)
24
26
 
25
27
  target_compile_reactnative_options(react_devsupportjni PRIVATE)
@@ -0,0 +1,46 @@
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
+ #include "JFrameTiming.h"
9
+
10
+ #include <jsinspector-modern/tracing/PerformanceTracer.h>
11
+ #include <react/timing/primitives.h>
12
+
13
+ namespace facebook::react::jsinspector_modern {
14
+
15
+ void JFrameTiming::reportFrameTiming(
16
+ jni::alias_ref<jclass> /*unused*/,
17
+ jint frameNumber,
18
+ jlong paintStartNanos,
19
+ jlong paintEndNanos) {
20
+ auto& performanceTracer = tracing::PerformanceTracer::getInstance();
21
+
22
+ auto startTime = HighResTimeStamp::fromDOMHighResTimeStamp(
23
+ static_cast<double>(paintStartNanos) / 1e6);
24
+ auto endTime = HighResTimeStamp::fromDOMHighResTimeStamp(
25
+ static_cast<double>(paintEndNanos) / 1e6);
26
+
27
+ performanceTracer.reportFrameTiming(frameNumber, startTime, endTime);
28
+ }
29
+
30
+ void JFrameTiming::setLayerTreeId(
31
+ jni::alias_ref<jclass> /*unused*/,
32
+ jni::alias_ref<jstring> frame,
33
+ jint layerTreeId) {
34
+ auto& performanceTracer = tracing::PerformanceTracer::getInstance();
35
+
36
+ performanceTracer.setLayerTreeId(frame->toStdString(), layerTreeId);
37
+ }
38
+
39
+ void JFrameTiming::registerNatives() {
40
+ javaClassLocal()->registerNatives({
41
+ makeNativeMethod("reportFrameTiming", JFrameTiming::reportFrameTiming),
42
+ makeNativeMethod("setLayerTreeId", JFrameTiming::setLayerTreeId),
43
+ });
44
+ }
45
+
46
+ } // namespace facebook::react::jsinspector_modern
@@ -0,0 +1,32 @@
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
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+
12
+ namespace facebook::react::jsinspector_modern {
13
+
14
+ /**
15
+ * JNI wrapper for reporting frame timing to PerformanceTracer.
16
+ */
17
+ class JFrameTiming : public jni::JavaClass<JFrameTiming> {
18
+ public:
19
+ static constexpr auto kJavaDescriptor = "Lcom/facebook/react/devsupport/FrameTiming;";
20
+
21
+ static void
22
+ reportFrameTiming(jni::alias_ref<jclass> /*unused*/, jint frame, jlong paintStartNanos, jlong paintEndNanos);
23
+
24
+ static void setLayerTreeId(jni::alias_ref<jclass> /*unused*/, jni::alias_ref<jstring> frame, jint layerTreeId);
25
+
26
+ static void registerNatives();
27
+
28
+ private:
29
+ JFrameTiming() = delete;
30
+ };
31
+
32
+ } // namespace facebook::react::jsinspector_modern
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "JCxxInspectorPackagerConnection.h"
9
9
  #include "JCxxInspectorPackagerConnectionWebSocketDelegate.h"
10
+ #include "JFrameTiming.h"
10
11
  #include "JInspectorFlags.h"
11
12
  #include "JInspectorNetworkReporter.h"
12
13
 
@@ -18,6 +19,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* /*unused*/) {
18
19
  registerNatives();
19
20
  facebook::react::jsinspector_modern::
20
21
  JCxxInspectorPackagerConnectionWebSocketDelegate::registerNatives();
22
+ facebook::react::jsinspector_modern::JFrameTiming::registerNatives();
21
23
  facebook::react::jsinspector_modern::JInspectorFlags::registerNatives();
22
24
  facebook::react::jsinspector_modern::JInspectorNetworkReporter::
23
25
  registerNatives();
@@ -24,6 +24,7 @@
24
24
  #include <react/renderer/core/EventBeat.h>
25
25
  #include <react/renderer/core/EventEmitter.h>
26
26
  #include <react/renderer/core/conversions.h>
27
+ #include <react/renderer/imagemanager/ImageFetcher.h>
27
28
  #include <react/renderer/scheduler/Scheduler.h>
28
29
  #include <react/renderer/scheduler/SchedulerDelegate.h>
29
30
  #include <react/renderer/scheduler/SchedulerToolbox.h>
@@ -641,6 +642,19 @@ void FabricUIManagerBinding::schedulerShouldRenderTransactions(
641
642
  if (!mountingManager) {
642
643
  return;
643
644
  }
645
+
646
+ if (ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid()) {
647
+ auto weakImageFetcher =
648
+ scheduler_->getContextContainer()->find<std::weak_ptr<ImageFetcher>>(
649
+ ImageFetcherKey);
650
+ auto imageFetcher = weakImageFetcher.has_value()
651
+ ? weakImageFetcher.value().lock()
652
+ : nullptr;
653
+ if (imageFetcher != nullptr) {
654
+ imageFetcher->flushImageRequests();
655
+ }
656
+ }
657
+
644
658
  if (ReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid()) {
645
659
  auto mountingTransaction = mountingCoordinator->pullTransaction(
646
660
  /* willPerformAsynchronously = */ true);
@@ -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<<4c9dda599d2c1467fb1602f71c7c7a54>>
7
+ * @generated SignedSource<<a0ef5d4a761067631023f6b5ec797cc6>>
8
8
  */
9
9
 
10
10
  /**
@@ -177,6 +177,12 @@ class ReactNativeFeatureFlagsJavaProvider
177
177
  return method(javaProvider_);
178
178
  }
179
179
 
180
+ bool enableExclusivePropsUpdateAndroid() override {
181
+ static const auto method =
182
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableExclusivePropsUpdateAndroid");
183
+ return method(javaProvider_);
184
+ }
185
+
180
186
  bool enableFabricLogs() override {
181
187
  static const auto method =
182
188
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableFabricLogs");
@@ -243,6 +249,12 @@ class ReactNativeFeatureFlagsJavaProvider
243
249
  return method(javaProvider_);
244
250
  }
245
251
 
252
+ bool enableIntersectionObserverByDefault() override {
253
+ static const auto method =
254
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableIntersectionObserverByDefault");
255
+ return method(javaProvider_);
256
+ }
257
+
246
258
  bool enableKeyEvents() override {
247
259
  static const auto method =
248
260
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableKeyEvents");
@@ -297,12 +309,6 @@ class ReactNativeFeatureFlagsJavaProvider
297
309
  return method(javaProvider_);
298
310
  }
299
311
 
300
- bool enableResourceTimingAPI() override {
301
- static const auto method =
302
- getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableResourceTimingAPI");
303
- return method(javaProvider_);
304
- }
305
-
306
312
  bool enableSwiftUIBasedFilters() override {
307
313
  static const auto method =
308
314
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableSwiftUIBasedFilters");
@@ -447,6 +453,12 @@ class ReactNativeFeatureFlagsJavaProvider
447
453
  return method(javaProvider_);
448
454
  }
449
455
 
456
+ bool shouldSetEnabledBasedOnAccessibilityState() override {
457
+ static const auto method =
458
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldSetEnabledBasedOnAccessibilityState");
459
+ return method(javaProvider_);
460
+ }
461
+
450
462
  bool shouldTriggerResponderTransferOnScrollAndroid() override {
451
463
  static const auto method =
452
464
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldTriggerResponderTransferOnScrollAndroid");
@@ -674,6 +686,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableEagerRootViewAttachment(
674
686
  return ReactNativeFeatureFlags::enableEagerRootViewAttachment();
675
687
  }
676
688
 
689
+ bool JReactNativeFeatureFlagsCxxInterop::enableExclusivePropsUpdateAndroid(
690
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
691
+ return ReactNativeFeatureFlags::enableExclusivePropsUpdateAndroid();
692
+ }
693
+
677
694
  bool JReactNativeFeatureFlagsCxxInterop::enableFabricLogs(
678
695
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
679
696
  return ReactNativeFeatureFlags::enableFabricLogs();
@@ -729,6 +746,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOpti
729
746
  return ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS();
730
747
  }
731
748
 
749
+ bool JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserverByDefault(
750
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
751
+ return ReactNativeFeatureFlags::enableIntersectionObserverByDefault();
752
+ }
753
+
732
754
  bool JReactNativeFeatureFlagsCxxInterop::enableKeyEvents(
733
755
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
734
756
  return ReactNativeFeatureFlags::enableKeyEvents();
@@ -774,11 +796,6 @@ bool JReactNativeFeatureFlagsCxxInterop::enablePropsUpdateReconciliationAndroid(
774
796
  return ReactNativeFeatureFlags::enablePropsUpdateReconciliationAndroid();
775
797
  }
776
798
 
777
- bool JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI(
778
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
779
- return ReactNativeFeatureFlags::enableResourceTimingAPI();
780
- }
781
-
782
799
  bool JReactNativeFeatureFlagsCxxInterop::enableSwiftUIBasedFilters(
783
800
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
784
801
  return ReactNativeFeatureFlags::enableSwiftUIBasedFilters();
@@ -899,6 +916,11 @@ bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsFo
899
916
  return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
900
917
  }
901
918
 
919
+ bool JReactNativeFeatureFlagsCxxInterop::shouldSetEnabledBasedOnAccessibilityState(
920
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
921
+ return ReactNativeFeatureFlags::shouldSetEnabledBasedOnAccessibilityState();
922
+ }
923
+
902
924
  bool JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid(
903
925
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
904
926
  return ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid();
@@ -1089,6 +1111,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1089
1111
  makeNativeMethod(
1090
1112
  "enableEagerRootViewAttachment",
1091
1113
  JReactNativeFeatureFlagsCxxInterop::enableEagerRootViewAttachment),
1114
+ makeNativeMethod(
1115
+ "enableExclusivePropsUpdateAndroid",
1116
+ JReactNativeFeatureFlagsCxxInterop::enableExclusivePropsUpdateAndroid),
1092
1117
  makeNativeMethod(
1093
1118
  "enableFabricLogs",
1094
1119
  JReactNativeFeatureFlagsCxxInterop::enableFabricLogs),
@@ -1122,6 +1147,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1122
1147
  makeNativeMethod(
1123
1148
  "enableInteropViewManagerClassLookUpOptimizationIOS",
1124
1149
  JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOptimizationIOS),
1150
+ makeNativeMethod(
1151
+ "enableIntersectionObserverByDefault",
1152
+ JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserverByDefault),
1125
1153
  makeNativeMethod(
1126
1154
  "enableKeyEvents",
1127
1155
  JReactNativeFeatureFlagsCxxInterop::enableKeyEvents),
@@ -1149,9 +1177,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1149
1177
  makeNativeMethod(
1150
1178
  "enablePropsUpdateReconciliationAndroid",
1151
1179
  JReactNativeFeatureFlagsCxxInterop::enablePropsUpdateReconciliationAndroid),
1152
- makeNativeMethod(
1153
- "enableResourceTimingAPI",
1154
- JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI),
1155
1180
  makeNativeMethod(
1156
1181
  "enableSwiftUIBasedFilters",
1157
1182
  JReactNativeFeatureFlagsCxxInterop::enableSwiftUIBasedFilters),
@@ -1224,6 +1249,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1224
1249
  makeNativeMethod(
1225
1250
  "shouldPressibilityUseW3CPointerEventsForHover",
1226
1251
  JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
1252
+ makeNativeMethod(
1253
+ "shouldSetEnabledBasedOnAccessibilityState",
1254
+ JReactNativeFeatureFlagsCxxInterop::shouldSetEnabledBasedOnAccessibilityState),
1227
1255
  makeNativeMethod(
1228
1256
  "shouldTriggerResponderTransferOnScrollAndroid",
1229
1257
  JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid),
@@ -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<<7a72ab75c6e155769bf583cc8cac6a66>>
7
+ * @generated SignedSource<<066e98c5620ccf67d9e4ceb9d66b08f0>>
8
8
  */
9
9
 
10
10
  /**
@@ -99,6 +99,9 @@ class JReactNativeFeatureFlagsCxxInterop
99
99
  static bool enableEagerRootViewAttachment(
100
100
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
101
101
 
102
+ static bool enableExclusivePropsUpdateAndroid(
103
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
104
+
102
105
  static bool enableFabricLogs(
103
106
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
104
107
 
@@ -132,6 +135,9 @@ class JReactNativeFeatureFlagsCxxInterop
132
135
  static bool enableInteropViewManagerClassLookUpOptimizationIOS(
133
136
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
134
137
 
138
+ static bool enableIntersectionObserverByDefault(
139
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
140
+
135
141
  static bool enableKeyEvents(
136
142
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
137
143
 
@@ -159,9 +165,6 @@ class JReactNativeFeatureFlagsCxxInterop
159
165
  static bool enablePropsUpdateReconciliationAndroid(
160
166
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
161
167
 
162
- static bool enableResourceTimingAPI(
163
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
164
-
165
168
  static bool enableSwiftUIBasedFilters(
166
169
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
167
170
 
@@ -234,6 +237,9 @@ class JReactNativeFeatureFlagsCxxInterop
234
237
  static bool shouldPressibilityUseW3CPointerEventsForHover(
235
238
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
236
239
 
240
+ static bool shouldSetEnabledBasedOnAccessibilityState(
241
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
242
+
237
243
  static bool shouldTriggerResponderTransferOnScrollAndroid(
238
244
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
239
245