react-native-tvos 0.85.0-0rc5 → 0.85.3-0

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 (154) hide show
  1. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
  2. package/Libraries/Components/ScrollView/ScrollView.d.ts +7 -0
  3. package/Libraries/Components/ScrollView/ScrollView.js +6 -0
  4. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +2 -0
  5. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -0
  6. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +5 -1
  7. package/Libraries/Components/TextInput/TextInput.flow.js +1 -0
  8. package/Libraries/Core/ReactNativeVersion.js +2 -2
  9. package/Libraries/Utilities/HMRClient.js +28 -1
  10. package/README.md +52 -0
  11. package/React/Base/RCTVersion.m +2 -2
  12. package/React/CoreModules/RCTDevLoadingView.mm +17 -0
  13. package/React/CoreModules/RCTJscSafeUrl+Internal.h +23 -0
  14. package/React/CoreModules/RCTJscSafeUrl.mm +38 -0
  15. package/React/CoreModules/RCTRedBox+Internal.h +42 -0
  16. package/React/CoreModules/RCTRedBox.mm +30 -471
  17. package/React/CoreModules/RCTRedBox2AnsiParser+Internal.h +22 -0
  18. package/React/CoreModules/RCTRedBox2AnsiParser.mm +55 -0
  19. package/React/CoreModules/RCTRedBox2Controller+Internal.h +34 -0
  20. package/React/CoreModules/RCTRedBox2Controller.mm +764 -0
  21. package/React/CoreModules/RCTRedBox2ErrorParser+Internal.h +46 -0
  22. package/React/CoreModules/RCTRedBox2ErrorParser.mm +57 -0
  23. package/React/CoreModules/RCTRedBoxController+Internal.h +31 -0
  24. package/React/CoreModules/RCTRedBoxController.mm +447 -0
  25. package/React/CoreModules/RCTRedBoxHMRClient+Internal.h +26 -0
  26. package/React/CoreModules/RCTRedBoxHMRClient.mm +125 -0
  27. package/React/CoreModules/React-CoreModules.podspec +1 -0
  28. package/React/DevSupport/RCTFrameTimingsObserver.h +24 -0
  29. package/React/DevSupport/RCTFrameTimingsObserver.mm +298 -0
  30. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +40 -0
  31. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.h +1 -0
  32. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +78 -0
  33. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +32 -6
  34. package/React/Views/ScrollView/RCTScrollViewManager.m +1 -0
  35. package/ReactAndroid/build.gradle.kts +2 -0
  36. package/ReactAndroid/gradle.properties +1 -1
  37. package/ReactAndroid/hermes-engine/build.gradle.kts +17 -0
  38. package/ReactAndroid/publish.gradle +20 -46
  39. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +4 -0
  40. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -1
  41. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +127 -26
  42. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +31 -1
  43. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +51 -1
  44. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +11 -1
  45. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +12 -2
  46. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +56 -1
  47. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +5 -1
  48. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +11 -1
  49. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +39 -0
  50. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +8 -0
  51. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt +2 -0
  52. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  53. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +50 -10
  54. package/ReactAndroid/src/main/java/com/facebook/react/views/common/UiModeUtils.kt +20 -0
  55. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +57 -8
  56. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +5 -0
  57. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +48 -2
  58. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +5 -0
  59. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +28 -3
  60. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +5 -0
  61. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputSubmitEditingEvent.kt +6 -1
  62. package/ReactAndroid/src/main/jni/CMakeLists.txt +7 -0
  63. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +22 -0
  64. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +2 -0
  65. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +71 -1
  66. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +16 -1
  67. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +14 -0
  68. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +18 -4
  69. package/ReactCommon/React-Fabric.podspec +7 -0
  70. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  71. package/ReactCommon/jsinspector-modern/HostAgent.cpp +36 -0
  72. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -1
  73. package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
  74. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +1 -1
  75. package/ReactCommon/jsinspector-modern/HostTargetTracing.h +4 -4
  76. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +12 -0
  77. package/ReactCommon/jsinspector-modern/InspectorFlags.h +12 -0
  78. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +1 -1
  79. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +19 -0
  80. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +7 -0
  81. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +33 -0
  82. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +6 -0
  83. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +12 -0
  84. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +3 -2
  85. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +1 -0
  86. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +1 -1
  87. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +1 -1
  88. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +10 -0
  89. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +3 -1
  90. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +1 -0
  91. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +7 -3
  92. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +52 -29
  93. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.h +6 -6
  94. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracerSection.h +113 -0
  95. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -0
  96. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +12 -5
  97. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +3 -1
  98. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +42 -0
  99. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.h +7 -0
  100. package/ReactCommon/react/debug/CMakeLists.txt +2 -1
  101. package/ReactCommon/react/debug/React-debug.podspec +7 -1
  102. package/ReactCommon/react/debug/redbox/AnsiParser.cpp +139 -0
  103. package/ReactCommon/react/debug/redbox/AnsiParser.h +35 -0
  104. package/ReactCommon/react/debug/redbox/JscSafeUrl.cpp +179 -0
  105. package/ReactCommon/react/debug/redbox/JscSafeUrl.h +27 -0
  106. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.cpp +171 -0
  107. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.h +40 -0
  108. package/ReactCommon/react/debug/redbox/tests/AnsiParserTest.cpp +97 -0
  109. package/ReactCommon/react/debug/redbox/tests/JscSafeUrlTest.cpp +173 -0
  110. package/ReactCommon/react/debug/redbox/tests/RedBoxErrorParserTest.cpp +107 -0
  111. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +21 -1
  112. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +26 -1
  113. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +135 -45
  114. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +12 -2
  115. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +22 -2
  116. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +46 -1
  117. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +9 -1
  118. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +6 -1
  119. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +3 -1
  120. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  121. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  122. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  123. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +26 -1
  124. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +11 -1
  125. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +4 -0
  126. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +66 -0
  127. package/ReactCommon/react/performance/timeline/PerformanceObserver.cpp +18 -6
  128. package/ReactCommon/react/performance/timeline/PerformanceObserver.h +2 -0
  129. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +4 -1
  130. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +58 -25
  131. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +9 -0
  132. package/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h +5 -0
  133. package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.cpp +10 -0
  134. package/ReactCommon/react/renderer/components/scrollview/BaseScrollViewProps.h +1 -0
  135. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  136. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +115 -0
  137. package/ReactCommon/{jsinspector-modern → react/utils}/Base64.h +2 -2
  138. package/package.json +11 -11
  139. package/scripts/cocoapods/utils.rb +1 -0
  140. package/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js +4 -4
  141. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +3 -3
  142. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +2 -3
  143. package/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js +2 -2
  144. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +3 -2
  145. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +3 -2
  146. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +2 -2
  147. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +3 -3
  148. package/scripts/codegen/generate-artifacts-executor/utils.js +48 -0
  149. package/scripts/react_native_pods.rb +1 -0
  150. package/scripts/replace-rncore-version.js +72 -15
  151. package/src/private/featureflags/ReactNativeFeatureFlags.js +27 -2
  152. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +6 -1
  153. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  154. package/types/public/ReactNativeTVTypes.d.ts +8 -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<<0875d5e54d884a26d37bb4eb2acc57d5>>
7
+ * @generated SignedSource<<15a8caa185d134716c23c751d54015aa>>
8
8
  */
9
9
 
10
10
  /**
@@ -61,6 +61,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
61
61
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
62
62
  private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
63
63
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
64
+ private var enableMutationObserverByDefaultCache: Boolean? = null
64
65
  private var enableNativeCSSParsingCache: Boolean? = null
65
66
  private var enableNetworkEventReportingCache: Boolean? = null
66
67
  private var enablePreparedTextLayoutCache: Boolean? = null
@@ -79,13 +80,17 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
79
80
  private var fixTextClippingAndroid15useBoundsForWidthCache: Boolean? = null
80
81
  private var fuseboxAssertSingleHostStateCache: Boolean? = null
81
82
  private var fuseboxEnabledReleaseCache: Boolean? = null
83
+ private var fuseboxFrameRecordingEnabledCache: Boolean? = null
82
84
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
85
+ private var fuseboxScreenshotCaptureEnabledCache: Boolean? = null
83
86
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
84
87
  private var overrideBySynchronousMountPropsAtMountingAndroidCache: Boolean? = null
85
88
  private var perfIssuesEnabledCache: Boolean? = null
86
89
  private var perfMonitorV2EnabledCache: Boolean? = null
87
90
  private var preparedTextCacheSizeCache: Double? = null
88
91
  private var preventShadowTreeCommitExhaustionCache: Boolean? = null
92
+ private var redBoxV2AndroidCache: Boolean? = null
93
+ private var redBoxV2IOSCache: Boolean? = null
89
94
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
90
95
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
91
96
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
@@ -475,6 +480,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
475
480
  return cached
476
481
  }
477
482
 
483
+ override fun enableMutationObserverByDefault(): Boolean {
484
+ var cached = enableMutationObserverByDefaultCache
485
+ if (cached == null) {
486
+ cached = ReactNativeFeatureFlagsCxxInterop.enableMutationObserverByDefault()
487
+ enableMutationObserverByDefaultCache = cached
488
+ }
489
+ return cached
490
+ }
491
+
478
492
  override fun enableNativeCSSParsing(): Boolean {
479
493
  var cached = enableNativeCSSParsingCache
480
494
  if (cached == null) {
@@ -637,6 +651,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
637
651
  return cached
638
652
  }
639
653
 
654
+ override fun fuseboxFrameRecordingEnabled(): Boolean {
655
+ var cached = fuseboxFrameRecordingEnabledCache
656
+ if (cached == null) {
657
+ cached = ReactNativeFeatureFlagsCxxInterop.fuseboxFrameRecordingEnabled()
658
+ fuseboxFrameRecordingEnabledCache = cached
659
+ }
660
+ return cached
661
+ }
662
+
640
663
  override fun fuseboxNetworkInspectionEnabled(): Boolean {
641
664
  var cached = fuseboxNetworkInspectionEnabledCache
642
665
  if (cached == null) {
@@ -646,6 +669,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
646
669
  return cached
647
670
  }
648
671
 
672
+ override fun fuseboxScreenshotCaptureEnabled(): Boolean {
673
+ var cached = fuseboxScreenshotCaptureEnabledCache
674
+ if (cached == null) {
675
+ cached = ReactNativeFeatureFlagsCxxInterop.fuseboxScreenshotCaptureEnabled()
676
+ fuseboxScreenshotCaptureEnabledCache = cached
677
+ }
678
+ return cached
679
+ }
680
+
649
681
  override fun hideOffscreenVirtualViewsOnIOS(): Boolean {
650
682
  var cached = hideOffscreenVirtualViewsOnIOSCache
651
683
  if (cached == null) {
@@ -700,6 +732,24 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
700
732
  return cached
701
733
  }
702
734
 
735
+ override fun redBoxV2Android(): Boolean {
736
+ var cached = redBoxV2AndroidCache
737
+ if (cached == null) {
738
+ cached = ReactNativeFeatureFlagsCxxInterop.redBoxV2Android()
739
+ redBoxV2AndroidCache = cached
740
+ }
741
+ return cached
742
+ }
743
+
744
+ override fun redBoxV2IOS(): Boolean {
745
+ var cached = redBoxV2IOSCache
746
+ if (cached == null) {
747
+ cached = ReactNativeFeatureFlagsCxxInterop.redBoxV2IOS()
748
+ redBoxV2IOSCache = cached
749
+ }
750
+ return cached
751
+ }
752
+
703
753
  override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean {
704
754
  var cached = shouldPressibilityUseW3CPointerEventsForHoverCache
705
755
  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<<948a9beebe2ff00791a03455eb774eee>>
7
+ * @generated SignedSource<<a648971d8196aa0950b623be31643a14>>
8
8
  */
9
9
 
10
10
  /**
@@ -110,6 +110,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
110
110
 
111
111
  @DoNotStrip @JvmStatic public external fun enableModuleArgumentNSNullConversionIOS(): Boolean
112
112
 
113
+ @DoNotStrip @JvmStatic public external fun enableMutationObserverByDefault(): Boolean
114
+
113
115
  @DoNotStrip @JvmStatic public external fun enableNativeCSSParsing(): Boolean
114
116
 
115
117
  @DoNotStrip @JvmStatic public external fun enableNetworkEventReporting(): Boolean
@@ -146,8 +148,12 @@ public object ReactNativeFeatureFlagsCxxInterop {
146
148
 
147
149
  @DoNotStrip @JvmStatic public external fun fuseboxEnabledRelease(): Boolean
148
150
 
151
+ @DoNotStrip @JvmStatic public external fun fuseboxFrameRecordingEnabled(): Boolean
152
+
149
153
  @DoNotStrip @JvmStatic public external fun fuseboxNetworkInspectionEnabled(): Boolean
150
154
 
155
+ @DoNotStrip @JvmStatic public external fun fuseboxScreenshotCaptureEnabled(): Boolean
156
+
151
157
  @DoNotStrip @JvmStatic public external fun hideOffscreenVirtualViewsOnIOS(): Boolean
152
158
 
153
159
  @DoNotStrip @JvmStatic public external fun overrideBySynchronousMountPropsAtMountingAndroid(): Boolean
@@ -160,6 +166,10 @@ public object ReactNativeFeatureFlagsCxxInterop {
160
166
 
161
167
  @DoNotStrip @JvmStatic public external fun preventShadowTreeCommitExhaustion(): Boolean
162
168
 
169
+ @DoNotStrip @JvmStatic public external fun redBoxV2Android(): Boolean
170
+
171
+ @DoNotStrip @JvmStatic public external fun redBoxV2IOS(): Boolean
172
+
163
173
  @DoNotStrip @JvmStatic public external fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
164
174
 
165
175
  @DoNotStrip @JvmStatic public external fun shouldTriggerResponderTransferOnScrollAndroid(): 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<<89c61520177334f93c65ff92c2fc74a6>>
7
+ * @generated SignedSource<<825863c146e8a0dfabe809927af1f0ce>>
8
8
  */
9
9
 
10
10
  /**
@@ -57,7 +57,7 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
57
57
 
58
58
  override fun enableCppPropsIteratorSetter(): Boolean = false
59
59
 
60
- override fun enableCustomFocusSearchOnClippedElementsAndroid(): Boolean = true
60
+ override fun enableCustomFocusSearchOnClippedElementsAndroid(): Boolean = false
61
61
 
62
62
  override fun enableDestroyShadowTreeRevisionAsync(): Boolean = false
63
63
 
@@ -105,6 +105,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
105
105
 
106
106
  override fun enableModuleArgumentNSNullConversionIOS(): Boolean = false
107
107
 
108
+ override fun enableMutationObserverByDefault(): Boolean = false
109
+
108
110
  override fun enableNativeCSSParsing(): Boolean = false
109
111
 
110
112
  override fun enableNetworkEventReporting(): Boolean = true
@@ -141,8 +143,12 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
141
143
 
142
144
  override fun fuseboxEnabledRelease(): Boolean = false
143
145
 
146
+ override fun fuseboxFrameRecordingEnabled(): Boolean = false
147
+
144
148
  override fun fuseboxNetworkInspectionEnabled(): Boolean = true
145
149
 
150
+ override fun fuseboxScreenshotCaptureEnabled(): Boolean = false
151
+
146
152
  override fun hideOffscreenVirtualViewsOnIOS(): Boolean = false
147
153
 
148
154
  override fun overrideBySynchronousMountPropsAtMountingAndroid(): Boolean = false
@@ -155,6 +161,10 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
155
161
 
156
162
  override fun preventShadowTreeCommitExhaustion(): Boolean = false
157
163
 
164
+ override fun redBoxV2Android(): Boolean = false
165
+
166
+ override fun redBoxV2IOS(): Boolean = false
167
+
158
168
  override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = false
159
169
 
160
170
  override fun shouldTriggerResponderTransferOnScrollAndroid(): 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<<669708c311abe9ffc8f7783219e2baad>>
7
+ * @generated SignedSource<<499aedb10bae64c096e7ad2e096bdd1f>>
8
8
  */
9
9
 
10
10
  /**
@@ -65,6 +65,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
65
65
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
66
66
  private var enableMainQueueCoordinatorOnIOSCache: Boolean? = null
67
67
  private var enableModuleArgumentNSNullConversionIOSCache: Boolean? = null
68
+ private var enableMutationObserverByDefaultCache: Boolean? = null
68
69
  private var enableNativeCSSParsingCache: Boolean? = null
69
70
  private var enableNetworkEventReportingCache: Boolean? = null
70
71
  private var enablePreparedTextLayoutCache: Boolean? = null
@@ -83,13 +84,17 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
83
84
  private var fixTextClippingAndroid15useBoundsForWidthCache: Boolean? = null
84
85
  private var fuseboxAssertSingleHostStateCache: Boolean? = null
85
86
  private var fuseboxEnabledReleaseCache: Boolean? = null
87
+ private var fuseboxFrameRecordingEnabledCache: Boolean? = null
86
88
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
89
+ private var fuseboxScreenshotCaptureEnabledCache: Boolean? = null
87
90
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
88
91
  private var overrideBySynchronousMountPropsAtMountingAndroidCache: Boolean? = null
89
92
  private var perfIssuesEnabledCache: Boolean? = null
90
93
  private var perfMonitorV2EnabledCache: Boolean? = null
91
94
  private var preparedTextCacheSizeCache: Double? = null
92
95
  private var preventShadowTreeCommitExhaustionCache: Boolean? = null
96
+ private var redBoxV2AndroidCache: Boolean? = null
97
+ private var redBoxV2IOSCache: Boolean? = null
93
98
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
94
99
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
95
100
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
@@ -520,6 +525,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
520
525
  return cached
521
526
  }
522
527
 
528
+ override fun enableMutationObserverByDefault(): Boolean {
529
+ var cached = enableMutationObserverByDefaultCache
530
+ if (cached == null) {
531
+ cached = currentProvider.enableMutationObserverByDefault()
532
+ accessedFeatureFlags.add("enableMutationObserverByDefault")
533
+ enableMutationObserverByDefaultCache = cached
534
+ }
535
+ return cached
536
+ }
537
+
523
538
  override fun enableNativeCSSParsing(): Boolean {
524
539
  var cached = enableNativeCSSParsingCache
525
540
  if (cached == null) {
@@ -700,6 +715,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
700
715
  return cached
701
716
  }
702
717
 
718
+ override fun fuseboxFrameRecordingEnabled(): Boolean {
719
+ var cached = fuseboxFrameRecordingEnabledCache
720
+ if (cached == null) {
721
+ cached = currentProvider.fuseboxFrameRecordingEnabled()
722
+ accessedFeatureFlags.add("fuseboxFrameRecordingEnabled")
723
+ fuseboxFrameRecordingEnabledCache = cached
724
+ }
725
+ return cached
726
+ }
727
+
703
728
  override fun fuseboxNetworkInspectionEnabled(): Boolean {
704
729
  var cached = fuseboxNetworkInspectionEnabledCache
705
730
  if (cached == null) {
@@ -710,6 +735,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
710
735
  return cached
711
736
  }
712
737
 
738
+ override fun fuseboxScreenshotCaptureEnabled(): Boolean {
739
+ var cached = fuseboxScreenshotCaptureEnabledCache
740
+ if (cached == null) {
741
+ cached = currentProvider.fuseboxScreenshotCaptureEnabled()
742
+ accessedFeatureFlags.add("fuseboxScreenshotCaptureEnabled")
743
+ fuseboxScreenshotCaptureEnabledCache = cached
744
+ }
745
+ return cached
746
+ }
747
+
713
748
  override fun hideOffscreenVirtualViewsOnIOS(): Boolean {
714
749
  var cached = hideOffscreenVirtualViewsOnIOSCache
715
750
  if (cached == null) {
@@ -770,6 +805,26 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
770
805
  return cached
771
806
  }
772
807
 
808
+ override fun redBoxV2Android(): Boolean {
809
+ var cached = redBoxV2AndroidCache
810
+ if (cached == null) {
811
+ cached = currentProvider.redBoxV2Android()
812
+ accessedFeatureFlags.add("redBoxV2Android")
813
+ redBoxV2AndroidCache = cached
814
+ }
815
+ return cached
816
+ }
817
+
818
+ override fun redBoxV2IOS(): Boolean {
819
+ var cached = redBoxV2IOSCache
820
+ if (cached == null) {
821
+ cached = currentProvider.redBoxV2IOS()
822
+ accessedFeatureFlags.add("redBoxV2IOS")
823
+ redBoxV2IOSCache = cached
824
+ }
825
+ return cached
826
+ }
827
+
773
828
  override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean {
774
829
  var cached = shouldPressibilityUseW3CPointerEventsForHoverCache
775
830
  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<<8531ce29d0e5362517d35559ebda623b>>
7
+ * @generated SignedSource<<2452c003ffcba8e20b7cd40c68e05e3d>>
8
8
  */
9
9
 
10
10
  /**
@@ -23,6 +23,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android :
23
23
  // We could use JNI to get the defaults from C++,
24
24
  // but that is more expensive than just duplicating the defaults here.
25
25
 
26
+ override fun cxxNativeAnimatedEnabled(): Boolean = true
27
+
26
28
  override fun enableAccessibilityOrder(): Boolean = true
27
29
 
28
30
  override fun enableSwiftUIBasedFilters(): Boolean = true
@@ -30,4 +32,6 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android :
30
32
  override fun fixTextClippingAndroid15useBoundsForWidth(): Boolean = true
31
33
 
32
34
  override fun preventShadowTreeCommitExhaustion(): Boolean = true
35
+
36
+ override fun useSharedAnimatedBackend(): Boolean = true
33
37
  }
@@ -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<<db06b64a8d1b9ab99b368fea41185d62>>
7
+ * @generated SignedSource<<4ed94743d9eafd0be32bb04471a18fc6>>
8
8
  */
9
9
 
10
10
  /**
@@ -105,6 +105,8 @@ public interface ReactNativeFeatureFlagsProvider {
105
105
 
106
106
  @DoNotStrip public fun enableModuleArgumentNSNullConversionIOS(): Boolean
107
107
 
108
+ @DoNotStrip public fun enableMutationObserverByDefault(): Boolean
109
+
108
110
  @DoNotStrip public fun enableNativeCSSParsing(): Boolean
109
111
 
110
112
  @DoNotStrip public fun enableNetworkEventReporting(): Boolean
@@ -141,8 +143,12 @@ public interface ReactNativeFeatureFlagsProvider {
141
143
 
142
144
  @DoNotStrip public fun fuseboxEnabledRelease(): Boolean
143
145
 
146
+ @DoNotStrip public fun fuseboxFrameRecordingEnabled(): Boolean
147
+
144
148
  @DoNotStrip public fun fuseboxNetworkInspectionEnabled(): Boolean
145
149
 
150
+ @DoNotStrip public fun fuseboxScreenshotCaptureEnabled(): Boolean
151
+
146
152
  @DoNotStrip public fun hideOffscreenVirtualViewsOnIOS(): Boolean
147
153
 
148
154
  @DoNotStrip public fun overrideBySynchronousMountPropsAtMountingAndroid(): Boolean
@@ -155,6 +161,10 @@ public interface ReactNativeFeatureFlagsProvider {
155
161
 
156
162
  @DoNotStrip public fun preventShadowTreeCommitExhaustion(): Boolean
157
163
 
164
+ @DoNotStrip public fun redBoxV2Android(): Boolean
165
+
166
+ @DoNotStrip public fun redBoxV2IOS(): Boolean
167
+
158
168
  @DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
159
169
 
160
170
  @DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
@@ -23,6 +23,45 @@ public object PerformanceTracer {
23
23
  SoLoader.loadLibrary("react_performancetracerjni")
24
24
  }
25
25
 
26
+ public fun <T> trace(name: String, block: () -> T): T {
27
+ return trace(name, null /* track */, null /* trackGroup */, null /* color */, block)
28
+ }
29
+
30
+ public fun <T> trace(name: String, track: String, block: () -> T): T {
31
+ return trace(name, track, null /* trackGroup */, null /* color */, block)
32
+ }
33
+
34
+ public fun <T> trace(name: String, track: String, trackGroup: String, block: () -> T): T {
35
+ return trace(name, track, trackGroup, null /* color */, block)
36
+ }
37
+
38
+ public fun <T> trace(
39
+ name: String,
40
+ track: String?,
41
+ trackGroup: String?,
42
+ color: String?,
43
+ block: () -> T,
44
+ ): T {
45
+ if (!isTracing()) {
46
+ return block()
47
+ }
48
+
49
+ val startTimeNanos = java.lang.System.nanoTime()
50
+ try {
51
+ return block()
52
+ } finally {
53
+ val endTimeNanos = java.lang.System.nanoTime()
54
+ reportTimeStamp(
55
+ name,
56
+ startTimeNanos,
57
+ endTimeNanos,
58
+ track,
59
+ trackGroup,
60
+ color,
61
+ )
62
+ }
63
+ }
64
+
26
65
  /** Callback interface for tracing state changes. */
27
66
  @DoNotStrip
28
67
  public interface TracingStateCallback {
@@ -19,6 +19,7 @@ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
19
19
  import java.io.IOException
20
20
  import java.net.SocketTimeoutException
21
21
  import okhttp3.Headers
22
+ import okhttp3.MultipartBody
22
23
  import okhttp3.RequestBody
23
24
  import okio.Buffer
24
25
 
@@ -263,6 +264,13 @@ internal object NetworkEventUtil {
263
264
  return "[Preview unavailable]"
264
265
  }
265
266
 
267
+ // MultipartBody does not propagate isOneShot() from its parts, so check each
268
+ // part explicitly. Reading a one-shot part here would drain the underlying
269
+ // stream and cause the real request to fail.
270
+ if (body is MultipartBody && body.parts().any { it.body().isOneShot() }) {
271
+ return "[Preview unavailable]"
272
+ }
273
+
266
274
  return try {
267
275
  val buffer = Buffer()
268
276
  body.writeTo(buffer)
@@ -146,6 +146,8 @@ internal object RequestBodyUtil {
146
146
  }
147
147
  }
148
148
 
149
+ override fun isOneShot(): Boolean = true
150
+
149
151
  @Throws(IOException::class)
150
152
  override fun writeTo(sink: BufferedSink) {
151
153
  var source: Source? = null
@@ -14,7 +14,7 @@ public object ReactNativeVersion {
14
14
  public val VERSION: Map<String, Any?> = mapOf(
15
15
  "major" to 0,
16
16
  "minor" to 85,
17
- "patch" to 0,
18
- "prerelease" to "0rc5"
17
+ "patch" to 3,
18
+ "prerelease" to "0"
19
19
  )
20
20
  }
@@ -12,6 +12,7 @@ import android.content.Context
12
12
  import android.content.Intent
13
13
  import android.nfc.NfcAdapter
14
14
  import android.os.Bundle
15
+ import androidx.core.graphics.createBitmap
15
16
  import com.facebook.common.logging.FLog
16
17
  import com.facebook.infer.annotation.Assertions
17
18
  import com.facebook.infer.annotation.ThreadConfined
@@ -447,6 +448,43 @@ public class ReactHostImpl(
447
448
  InspectorNetworkHelper.loadNetworkResource(url, listener)
448
449
  }
449
450
 
451
+ @DoNotStrip
452
+ private fun captureScreenshot(format: String, quality: Int): String? {
453
+ val activity = currentActivity ?: return null
454
+ val window = activity.window ?: return null
455
+ val decorView = window.decorView.rootView
456
+
457
+ val width = decorView.width
458
+ val height = decorView.height
459
+ if (width <= 0 || height <= 0) {
460
+ return null
461
+ }
462
+
463
+ val bitmap = createBitmap(width, height)
464
+ val canvas = android.graphics.Canvas(bitmap)
465
+ decorView.draw(canvas)
466
+
467
+ val outputStream = java.io.ByteArrayOutputStream()
468
+ val compressFormat =
469
+ when (format) {
470
+ "jpeg" -> android.graphics.Bitmap.CompressFormat.JPEG
471
+ "webp" ->
472
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
473
+ android.graphics.Bitmap.CompressFormat.WEBP_LOSSY
474
+ } else {
475
+ @Suppress("DEPRECATION") android.graphics.Bitmap.CompressFormat.WEBP
476
+ }
477
+ else -> android.graphics.Bitmap.CompressFormat.PNG
478
+ }
479
+ val compressQuality = if (quality in 0..100) quality else 80
480
+
481
+ bitmap.compress(compressFormat, compressQuality, outputStream)
482
+ bitmap.recycle()
483
+
484
+ val bytes = outputStream.toByteArray()
485
+ return android.util.Base64.encodeToString(bytes, android.util.Base64.NO_WRAP)
486
+ }
487
+
450
488
  /**
451
489
  * Entrypoint to destroy the ReactInstance. If the ReactInstance is reloading, will wait until
452
490
  * reload is finished, before destroying.
@@ -1565,16 +1603,18 @@ public class ReactHostImpl(
1565
1603
  when (state) {
1566
1604
  TracingState.ENABLED_IN_BACKGROUND_MODE,
1567
1605
  TracingState.ENABLED_IN_CDP_MODE -> {
1568
- val observer =
1569
- FrameTimingsObserver(
1570
- _screenshotsEnabled,
1571
- { frameTimingsSequence ->
1572
- inspectorTarget.recordFrameTimings(frameTimingsSequence)
1573
- },
1574
- )
1575
- observer.setCurrentWindow(currentActivity?.window)
1576
- observer.start()
1577
- frameTimingsObserver = observer
1606
+ if (InspectorFlags.getFrameRecordingEnabled()) {
1607
+ val observer =
1608
+ FrameTimingsObserver(
1609
+ _screenshotsEnabled,
1610
+ { frameTimingsSequence ->
1611
+ inspectorTarget.recordFrameTimings(frameTimingsSequence)
1612
+ },
1613
+ )
1614
+ observer.setCurrentWindow(currentActivity?.window)
1615
+ observer.start()
1616
+ frameTimingsObserver = observer
1617
+ }
1578
1618
  }
1579
1619
  TracingState.DISABLED -> {
1580
1620
  frameTimingsObserver?.stop()
@@ -7,12 +7,32 @@
7
7
 
8
8
  package com.facebook.react.views.common
9
9
 
10
+ import android.app.UiModeManager
10
11
  import android.content.Context
11
12
  import android.content.res.Configuration
12
13
 
13
14
  /** Utility object providing static methods for working with UI mode properties from Context. */
14
15
  internal object UiModeUtils {
15
16
 
17
+ private var isTVDeviceCached: Boolean? = null
18
+
19
+ /**
20
+ * Determines whether the device is a TV (Android TV / Fire TV).
21
+ * The result is cached after the first call.
22
+ *
23
+ * @param context The context to check the UI mode from
24
+ * @return true if the device is running in television mode, false otherwise
25
+ */
26
+ @JvmStatic
27
+ fun isTVDevice(context: Context): Boolean {
28
+ return isTVDeviceCached ?: run {
29
+ val uiModeManager = context.getSystemService(Context.UI_MODE_SERVICE) as? UiModeManager
30
+ val result = uiModeManager?.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION
31
+ isTVDeviceCached = result
32
+ result
33
+ }
34
+ }
35
+
16
36
  /**
17
37
  * Determines whether the current UI mode is dark mode
18
38
  *