react-native 0.66.0-rc.4 → 0.67.0-rc.1

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 (447) hide show
  1. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +14 -1
  2. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +23 -4
  4. package/Libraries/Animated/NativeAnimatedHelper.js +2 -2
  5. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  6. package/Libraries/Animated/components/AnimatedScrollView.js +3 -3
  7. package/Libraries/Animated/components/AnimatedText.js +3 -3
  8. package/Libraries/Animated/components/AnimatedView.js +1 -3
  9. package/Libraries/Animated/createAnimatedComponent.js +3 -34
  10. package/Libraries/Components/Button.js +3 -0
  11. package/Libraries/Components/DatePicker/DatePickerIOS.ios.js +3 -6
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +4 -7
  13. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +1 -0
  14. package/Libraries/Components/ScrollView/ScrollView.js +17 -16
  15. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +268 -252
  16. package/Libraries/Components/View/View.js +1 -1
  17. package/Libraries/Components/View/ViewAccessibility.js +1 -1
  18. package/Libraries/Core/ExceptionsManager.js +45 -80
  19. package/Libraries/Core/ExtendedError.js +0 -1
  20. package/Libraries/Core/ReactNativeVersion.js +2 -2
  21. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  22. package/Libraries/Core/setUpGlobals.js +2 -4
  23. package/Libraries/Core/setUpTimers.js +2 -2
  24. package/Libraries/Image/Image.ios.js +6 -0
  25. package/Libraries/Image/ImageBackground.js +10 -8
  26. package/Libraries/Image/ImageProps.js +28 -0
  27. package/Libraries/Image/RCTImageView.mm +4 -0
  28. package/Libraries/LogBox/Data/LogBoxData.js +18 -19
  29. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  30. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  31. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  32. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  33. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  34. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.m +0 -3
  35. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +6 -3
  36. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +1 -2
  37. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -1
  38. package/Libraries/NewAppScreen/components/logo.png +0 -0
  39. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +2 -1
  40. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +2 -0
  41. package/Libraries/Pressability/Pressability.js +13 -13
  42. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +1 -1
  43. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +0 -1
  44. package/Libraries/ReactNative/AppRegistry.js +4 -2
  45. package/Libraries/Renderer/REVISION +1 -1
  46. package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +1569 -875
  47. package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +529 -319
  48. package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +570 -362
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +1592 -891
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +521 -311
  51. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +562 -354
  52. package/Libraries/Share/Share.js +1 -1
  53. package/Libraries/StyleSheet/normalizeColor.js +2 -2
  54. package/Libraries/Text/TextInput/Multiline/RCTUITextView.m +4 -2
  55. package/Libraries/Text/TextInput/RCTBaseTextInputView.m +2 -12
  56. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.m +4 -11
  57. package/Libraries/Text/TextProps.js +1 -7
  58. package/Libraries/TurboModule/TurboModuleRegistry.js +1 -1
  59. package/Libraries/Utilities/HMRClient.js +1 -1
  60. package/README.md +1 -1
  61. package/React/Base/RCTBridge+Private.h +8 -0
  62. package/React/Base/RCTBridge.h +4 -0
  63. package/React/Base/RCTBridge.m +19 -7
  64. package/React/Base/RCTBridgeModule.h +2 -11
  65. package/React/Base/RCTBundleURLProvider.h +1 -1
  66. package/React/Base/RCTBundleURLProvider.mm +5 -3
  67. package/React/Base/RCTConstants.h +0 -6
  68. package/React/Base/RCTConstants.m +0 -15
  69. package/React/Base/RCTConvert.h +1 -1
  70. package/React/Base/RCTDefines.h +12 -3
  71. package/React/Base/RCTEventDispatcherProtocol.h +2 -0
  72. package/React/Base/RCTJSThread.h +29 -0
  73. package/React/Base/RCTJSThread.m +19 -0
  74. package/React/Base/RCTRootView.h +15 -0
  75. package/React/Base/RCTRootView.m +15 -0
  76. package/React/Base/RCTTouchHandler.m +1 -9
  77. package/React/Base/RCTUtils.h +3 -0
  78. package/React/Base/RCTUtils.m +14 -7
  79. package/React/Base/RCTVersion.m +2 -2
  80. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +11 -0
  81. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +35 -1
  82. package/React/CoreModules/RCTAccessibilityManager+Internal.h +24 -0
  83. package/React/CoreModules/RCTAccessibilityManager.mm +18 -3
  84. package/React/CoreModules/RCTActionSheetManager.mm +14 -5
  85. package/React/CoreModules/RCTAppearance.mm +3 -1
  86. package/React/CoreModules/RCTDevLoadingView.mm +5 -10
  87. package/React/CoreModules/RCTDevSettings.mm +6 -6
  88. package/React/CoreModules/RCTDevSplitBundleLoader.mm +1 -1
  89. package/React/CoreModules/RCTDeviceInfo.mm +4 -4
  90. package/React/CoreModules/RCTEventDispatcher.mm +5 -0
  91. package/React/CoreModules/RCTExceptionsManager.mm +11 -24
  92. package/React/CoreModules/RCTPerfMonitor.mm +9 -4
  93. package/React/CoreModules/RCTRedBox.mm +1 -5
  94. package/React/CxxBridge/RCTCxxBridge.mm +18 -1
  95. package/React/DevSupport/RCTPackagerConnection.h +3 -0
  96. package/React/DevSupport/RCTPackagerConnection.mm +9 -5
  97. package/React/FBReactNativeSpec/FBReactNativeSpec.podspec +11 -3
  98. package/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +0 -3
  99. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +16 -0
  100. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.h +6 -0
  101. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +3 -5
  102. package/React/Fabric/Mounting/RCTMountingManager.mm +15 -1
  103. package/React/Fabric/RCTScheduler.mm +12 -5
  104. package/React/Fabric/RCTSurfacePresenter.mm +0 -4
  105. package/React/Fabric/RCTSurfaceTouchHandler.mm +6 -20
  106. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -3
  107. package/React/React-RCTFabric.podspec +0 -1
  108. package/React/Views/RCTFont.mm +54 -38
  109. package/React/Views/RCTView.m +1 -6
  110. package/React/Views/RCTViewManager.m +3 -2
  111. package/React/Views/SafeAreaView/RCTSafeAreaView.m +1 -5
  112. package/React/Views/ScrollView/RCTScrollView.m +5 -15
  113. package/React/Views/ScrollView/RCTScrollViewManager.m +0 -7
  114. package/React/Views/UIView+React.m +2 -11
  115. package/React-Core.podspec +0 -1
  116. package/ReactAndroid/build.gradle +11 -5
  117. package/ReactAndroid/gradle.properties +1 -1
  118. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +0 -1
  119. package/ReactAndroid/src/androidTest/js/TestBundle.js +0 -7
  120. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/BUCK +2 -1
  121. package/ReactAndroid/src/main/java/com/facebook/react/BUCK +0 -1
  122. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +7 -0
  123. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +7 -0
  124. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +63 -26
  125. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java +46 -1
  126. package/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +31 -0
  127. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +17 -1
  128. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +2 -0
  129. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +13 -2
  130. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +1 -0
  131. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.java +39 -0
  132. package/ReactAndroid/src/main/java/com/facebook/react/bridge/RuntimeScheduler.java +21 -0
  133. package/ReactAndroid/src/main/java/com/facebook/react/common/BUCK +2 -2
  134. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegate.java +40 -0
  135. package/ReactAndroid/src/main/java/com/facebook/react/common/SurfaceDelegateFactory.java +24 -0
  136. package/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/BUCK +0 -6
  137. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +16 -0
  138. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BUCK +1 -0
  139. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +5 -2
  140. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +102 -0
  141. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +35 -11
  142. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.java +5 -72
  143. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +12 -0
  144. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.java +92 -0
  145. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxModule.java +27 -42
  146. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +14 -0
  147. package/ReactAndroid/src/main/java/com/facebook/react/fabric/Binding.java +5 -4
  148. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java +3 -7
  149. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +41 -2
  150. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.java +8 -3
  151. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.java +43 -9
  152. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Android.mk +2 -1
  153. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.cpp +69 -0
  154. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/AsyncEventBeatV2.h +40 -0
  155. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/BUCK +2 -6
  156. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +84 -32
  157. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.h +4 -2
  158. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.cpp +20 -2
  159. package/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/EventEmitterWrapper.h +2 -1
  160. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.java +9 -1
  161. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +19 -4
  162. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +6 -2
  163. package/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +2 -1
  164. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.java +10 -1
  165. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/jni/BUCK +0 -6
  166. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/BUCK +4 -1
  167. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.java +9 -8
  168. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.java +7 -19
  169. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/{JavaScriptTimerManager.java → JavaScriptTimerExecutor.java} +1 -1
  170. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/JavaTimerManager.java +7 -7
  171. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.java +2 -2
  172. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nManagerModule.java +7 -1
  173. package/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java +23 -19
  174. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ForwardingCookieHandler.java +1 -4
  175. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  176. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/ReconnectingWebSocket.java +8 -8
  177. package/ReactAndroid/src/main/java/com/facebook/react/processing/ReactPropertyProcessor.java +1 -1
  178. package/ReactAndroid/src/main/java/com/facebook/react/reactperflogger/jni/BUCK +0 -6
  179. package/ReactAndroid/src/main/java/com/facebook/react/shell/BUCK +0 -1
  180. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java +0 -5
  181. package/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +0 -12
  182. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.java +1 -1
  183. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.java +75 -10
  184. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +19 -22
  185. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventCategoryDef.java +42 -0
  186. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +7 -1
  187. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/LockFreeEventDispatcherImpl.java +2 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.java +7 -0
  189. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.java +2 -1
  190. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/ReactEventEmitter.java +17 -9
  191. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +43 -8
  192. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEventType.java +15 -16
  193. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +108 -19
  194. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/jni/BUCK +0 -6
  195. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +79 -4
  196. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +5 -0
  197. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +94 -3
  198. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.java +21 -1
  199. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +5 -0
  200. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +0 -4
  201. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +16 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +9 -1
  203. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +20 -1
  204. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +25 -6
  205. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +25 -5
  206. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.java +3 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/views/view/CanvasUtil.java +92 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +8 -8
  209. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +19 -0
  210. package/ReactAndroid/src/main/jni/react/jni/Android.mk +3 -2
  211. package/ReactAndroid/src/main/jni/react/jni/BUCK +4 -5
  212. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +49 -7
  213. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +15 -2
  214. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +18 -0
  215. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h +25 -0
  216. package/{ReactCommon/react/renderer/core/Constants.cpp → ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.cpp} +6 -8
  217. package/ReactAndroid/src/main/jni/react/jni/JRuntimeScheduler.h +30 -0
  218. package/ReactAndroid/src/main/jni/react/perftests/BUCK +0 -4
  219. package/ReactAndroid/src/main/third-party/android/androidx/BUCK +6 -6
  220. package/ReactAndroid/src/test/java/com/facebook/react/RootViewTest.java +43 -0
  221. package/ReactAndroid/src/test/java/com/facebook/react/modules/clipboard/ClipboardModuleTest.java +3 -1
  222. package/ReactCommon/React-Fabric.podspec +9 -1
  223. package/ReactCommon/better/BUCK +0 -6
  224. package/ReactCommon/callinvoker/BUCK +2 -8
  225. package/ReactCommon/cxxreact/BUCK +1 -16
  226. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  227. package/ReactCommon/hermes/inspector/tools/msggen/package.json +7 -4
  228. package/ReactCommon/hermes/inspector/tools/msggen/yarn.lock +13 -10
  229. package/ReactCommon/jsi/BUCK +0 -9
  230. package/ReactCommon/jsinspector/BUCK +0 -5
  231. package/ReactCommon/logger/BUCK +0 -5
  232. package/ReactCommon/react/config/BUCK +0 -6
  233. package/ReactCommon/react/debug/BUCK +0 -6
  234. package/ReactCommon/react/nativemodule/core/BUCK +0 -5
  235. package/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm +14 -31
  236. package/ReactCommon/react/nativemodule/samples/BUCK +0 -7
  237. package/ReactCommon/react/renderer/animations/BUCK +1 -4
  238. package/ReactCommon/react/renderer/animations/LayoutAnimationCallbackWrapper.h +34 -0
  239. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +5 -26
  240. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.h +8 -14
  241. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +912 -1147
  242. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.h +80 -245
  243. package/ReactCommon/react/renderer/animations/conversions.h +212 -0
  244. package/ReactCommon/react/renderer/animations/primitives.h +104 -0
  245. package/ReactCommon/react/renderer/animations/tests/LayoutAnimationTest.cpp +3 -3
  246. package/ReactCommon/react/renderer/animations/utils.cpp +71 -0
  247. package/ReactCommon/react/renderer/animations/utils.h +80 -0
  248. package/ReactCommon/react/renderer/attributedstring/AttributedString.h +0 -1
  249. package/ReactCommon/react/renderer/attributedstring/BUCK +0 -6
  250. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp +7 -3
  251. package/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h +12 -2
  252. package/ReactCommon/react/renderer/attributedstring/TextAttributes.h +1 -1
  253. package/ReactCommon/react/renderer/attributedstring/conversions.h +58 -3
  254. package/ReactCommon/react/renderer/attributedstring/primitives.h +18 -1
  255. package/ReactCommon/react/renderer/componentregistry/BUCK +0 -6
  256. package/ReactCommon/react/renderer/componentregistry/native/BUCK +0 -6
  257. package/ReactCommon/react/renderer/components/image/BUCK +0 -6
  258. package/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +0 -2
  259. package/ReactCommon/react/renderer/components/inputaccessory/BUCK +0 -6
  260. package/ReactCommon/react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h +0 -4
  261. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/BUCK +0 -6
  262. package/ReactCommon/react/renderer/components/modal/BUCK +0 -6
  263. package/ReactCommon/react/renderer/components/modal/ModalHostViewComponentDescriptor.h +0 -5
  264. package/ReactCommon/react/renderer/components/progressbar/BUCK +0 -6
  265. package/ReactCommon/react/renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarComponentDescriptor.h +0 -3
  266. package/ReactCommon/react/renderer/components/root/BUCK +0 -6
  267. package/ReactCommon/react/renderer/components/safeareaview/BUCK +0 -6
  268. package/ReactCommon/react/renderer/components/scrollview/BUCK +0 -6
  269. package/ReactCommon/react/renderer/components/slider/BUCK +0 -6
  270. package/ReactCommon/react/renderer/components/slider/SliderComponentDescriptor.h +0 -3
  271. package/ReactCommon/react/renderer/components/switch/BUCK +0 -6
  272. package/ReactCommon/react/renderer/components/switch/androidswitch/react/renderer/components/androidswitch/AndroidSwitchComponentDescriptor.h +0 -3
  273. package/ReactCommon/react/renderer/components/text/BUCK +0 -6
  274. package/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +1 -20
  275. package/ReactCommon/react/renderer/components/textinput/BUCK +0 -6
  276. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h +0 -3
  277. package/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h +2 -0
  278. package/ReactCommon/react/renderer/components/textinput/iostextinput/BUCK +0 -6
  279. package/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +0 -3
  280. package/ReactCommon/react/renderer/components/unimplementedview/BUCK +0 -6
  281. package/ReactCommon/react/renderer/components/unimplementedview/UnimplementedViewComponentDescriptor.cpp +0 -4
  282. package/ReactCommon/react/renderer/components/view/Android.mk +1 -1
  283. package/ReactCommon/react/renderer/components/view/BUCK +0 -6
  284. package/ReactCommon/react/renderer/components/view/Touch.h +1 -32
  285. package/ReactCommon/react/renderer/components/view/ViewComponentDescriptor.h +0 -23
  286. package/ReactCommon/react/renderer/components/view/ViewPropsInterpolation.h +2 -3
  287. package/ReactCommon/react/renderer/components/view/ViewShadowNode.cpp +3 -3
  288. package/ReactCommon/react/renderer/components/view/ViewShadowNode.h +1 -1
  289. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +4 -0
  290. package/ReactCommon/react/renderer/core/BUCK +2 -6
  291. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +14 -9
  292. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +1 -10
  293. package/ReactCommon/react/renderer/core/EventEmitter.cpp +9 -4
  294. package/ReactCommon/react/renderer/core/EventEmitter.h +2 -1
  295. package/ReactCommon/react/renderer/core/Props.h +1 -0
  296. package/ReactCommon/react/renderer/core/PropsParserContext.h +3 -2
  297. package/ReactCommon/react/renderer/core/RawEvent.h +7 -5
  298. package/ReactCommon/react/renderer/core/RawPropsKey.cpp +10 -2
  299. package/ReactCommon/react/renderer/core/ReactPrimitives.h +0 -2
  300. package/ReactCommon/react/renderer/core/ShadowNode.cpp +7 -10
  301. package/ReactCommon/react/renderer/core/ShadowNodeFamily.h +1 -0
  302. package/ReactCommon/react/renderer/debug/BUCK +0 -6
  303. package/ReactCommon/react/renderer/element/BUCK +0 -6
  304. package/ReactCommon/react/renderer/graphics/Android.mk +1 -1
  305. package/ReactCommon/react/renderer/graphics/BUCK +0 -6
  306. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +0 -1
  307. package/ReactCommon/react/renderer/graphics/Transform.cpp +1 -1
  308. package/ReactCommon/react/renderer/graphics/Transform.h +1 -1
  309. package/ReactCommon/react/renderer/imagemanager/BUCK +0 -6
  310. package/ReactCommon/react/renderer/leakchecker/BUCK +0 -6
  311. package/ReactCommon/react/renderer/mapbuffer/BUCK +0 -6
  312. package/ReactCommon/react/renderer/mounting/Android.mk +2 -1
  313. package/ReactCommon/react/renderer/mounting/BUCK +0 -6
  314. package/ReactCommon/react/renderer/mounting/MountingOverrideDelegate.h +1 -1
  315. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.cpp +12 -0
  316. package/ReactCommon/react/renderer/mounting/ShadowViewMutation.h +10 -1
  317. package/ReactCommon/react/renderer/runtimescheduler/Android.mk +2 -1
  318. package/ReactCommon/react/renderer/runtimescheduler/BUCK +1 -7
  319. package/ReactCommon/react/renderer/runtimescheduler/ErrorUtils.h +36 -0
  320. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.cpp +28 -20
  321. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +4 -2
  322. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp +4 -3
  323. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.h +4 -2
  324. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.cpp +32 -0
  325. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h +36 -0
  326. package/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerClock.h +4 -2
  327. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriority.h +4 -3
  328. package/ReactCommon/react/renderer/runtimescheduler/Task.cpp +4 -2
  329. package/ReactCommon/react/renderer/runtimescheduler/Task.h +4 -2
  330. package/ReactCommon/react/renderer/runtimescheduler/primitives.h +4 -2
  331. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +26 -1
  332. package/ReactCommon/react/renderer/runtimescheduler/tests/StubErrorUtils.h +72 -0
  333. package/ReactCommon/react/renderer/scheduler/BUCK +0 -6
  334. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +1 -4
  335. package/ReactCommon/react/renderer/scheduler/Scheduler.h +1 -1
  336. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +4 -4
  337. package/ReactCommon/react/renderer/telemetry/BUCK +0 -6
  338. package/ReactCommon/react/renderer/templateprocessor/BUCK +0 -6
  339. package/ReactCommon/react/renderer/textlayoutmanager/BUCK +0 -6
  340. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.h +2 -0
  341. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/RCTAttributedTextUtils.mm +19 -0
  342. package/ReactCommon/react/renderer/timeline/BUCK +6 -12
  343. package/ReactCommon/react/renderer/uimanager/BUCK +0 -6
  344. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationDelegate.h +1 -1
  345. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +2 -2
  346. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +1 -1
  347. package/ReactCommon/react/test_utils/BUCK +3 -6
  348. package/ReactCommon/react/{renderer/core/Constants.h → test_utils/MockSurfaceHandler.h} +9 -7
  349. package/ReactCommon/react/utils/BUCK +0 -6
  350. package/ReactCommon/react/utils/ContextContainer.h +0 -27
  351. package/ReactCommon/reactperflogger/BUCK +0 -4
  352. package/ReactCommon/runtimeexecutor/BUCK +0 -6
  353. package/ReactCommon/yoga/BUCK +1 -5
  354. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.aar → 0.67.0-rc.1/react-native-0.67.0-rc.1.aar} +0 -0
  355. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.md5 +1 -0
  356. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha1 +1 -0
  357. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha256 +1 -0
  358. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.aar.sha512 +1 -0
  359. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.module → 0.67.0-rc.1/react-native-0.67.0-rc.1.module} +16 -17
  360. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.md5 +1 -0
  361. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha1 +1 -0
  362. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha256 +1 -0
  363. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.module.sha512 +1 -0
  364. package/android/com/facebook/react/react-native/{0.66.0-rc.4/react-native-0.66.0-rc.4.pom → 0.67.0-rc.1/react-native-0.67.0-rc.1.pom} +2 -2
  365. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.md5 +1 -0
  366. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha1 +1 -0
  367. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha256 +1 -0
  368. package/android/com/facebook/react/react-native/0.67.0-rc.1/react-native-0.67.0-rc.1.pom.sha512 +1 -0
  369. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  370. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  371. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  372. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  373. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  374. package/flow/global.js +45 -0
  375. package/index.js +15 -10
  376. package/jest/mockModal.js +31 -0
  377. package/jest/setup.js +5 -3
  378. package/package.json +8 -9
  379. package/react.gradle +53 -18
  380. package/scripts/find-node.sh +13 -0
  381. package/scripts/generate-specs-cli.js +18 -0
  382. package/scripts/ios-configure-glog.sh +4 -0
  383. package/scripts/react-native-xcode.sh +7 -7
  384. package/scripts/react_native_pods.rb +202 -70
  385. package/template/Gemfile +6 -0
  386. package/template/Gemfile.lock +100 -0
  387. package/template/_bundle/config +2 -0
  388. package/template/_flowconfig +1 -1
  389. package/template/_ruby-version +1 -0
  390. package/template/android/app/build.gradle +1 -1
  391. package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  392. package/template/android/app/src/main/res/values/styles.xml +1 -0
  393. package/template/android/build.gradle +7 -3
  394. package/template/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  395. package/template/android/gradle.properties +1 -1
  396. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -2
  397. package/template/ios/Podfile +0 -1
  398. package/template/package.json +1 -1
  399. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  400. package/third-party-podspecs/glog.podspec +0 -1
  401. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js +0 -87
  402. package/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js +0 -30
  403. package/Libraries/Components/DatePickerAndroid/DatePickerAndroidTypes.js +0 -30
  404. package/Libraries/Components/StaticContainer.react.js +0 -51
  405. package/Libraries/Components/Touchable/ensurePositiveDelayProps.js +0 -25
  406. package/Libraries/Interaction/InteractionMixin.js +0 -54
  407. package/Libraries/ReactNative/queryLayoutByID.js +0 -58
  408. package/ReactAndroid/src/androidTest/java/com/facebook/react/tests/DatePickerDialogTestCase.java +0 -172
  409. package/ReactAndroid/src/androidTest/js/DatePickerDialogTestModule.js +0 -45
  410. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +0 -27
  411. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +0 -137
  412. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +0 -153
  413. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerMode.java +0 -15
  414. package/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +0 -117
  415. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/BUCK +0 -20
  416. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/RuntimeSchedulerManager.java +0 -39
  417. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/Android.mk +0 -34
  418. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/BUCK +0 -35
  419. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/OnLoad.cpp +0 -15
  420. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.cpp +0 -46
  421. package/ReactAndroid/src/main/java/com/facebook/react/runtimescheduler/jni/RuntimeSchedulerManager.h +0 -40
  422. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerDelegate.java +0 -57
  423. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/AndroidViewPagerManagerInterface.java +0 -23
  424. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/BUCK +0 -19
  425. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerDelegate.java +0 -62
  426. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/DatePickerManagerInterface.java +0 -25
  427. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerDelegate.java +0 -33
  428. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/InputAccessoryViewManagerInterface.java +0 -17
  429. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerDelegate.java +0 -51
  430. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/PullToRefreshViewManagerInterface.java +0 -21
  431. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerDelegate.java +0 -63
  432. package/ReactAndroid/src/main/java/com/facebook/react/viewmanagers/SwitchManagerInterface.java +0 -24
  433. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.md5 +0 -1
  434. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha1 +0 -1
  435. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha256 +0 -1
  436. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.aar.sha512 +0 -1
  437. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.md5 +0 -1
  438. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha1 +0 -1
  439. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha256 +0 -1
  440. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.module.sha512 +0 -1
  441. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.md5 +0 -1
  442. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha1 +0 -1
  443. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha256 +0 -1
  444. package/android/com/facebook/react/react-native/0.66.0-rc.4/react-native-0.66.0-rc.4.pom.sha512 +0 -1
  445. package/scripts/generate-specs.sh +0 -99
  446. package/template/_editorconfig +0 -3
  447. package/template/_gitattributes +0 -3
@@ -9,12 +9,13 @@ package com.facebook.react.fabric;
9
9
 
10
10
  import android.annotation.SuppressLint;
11
11
  import androidx.annotation.NonNull;
12
+ import androidx.annotation.Nullable;
12
13
  import com.facebook.jni.HybridData;
13
14
  import com.facebook.proguard.annotations.DoNotStrip;
14
15
  import com.facebook.react.bridge.NativeMap;
15
16
  import com.facebook.react.bridge.ReadableNativeMap;
16
17
  import com.facebook.react.bridge.RuntimeExecutor;
17
- import com.facebook.react.bridge.queue.MessageQueueThread;
18
+ import com.facebook.react.bridge.RuntimeScheduler;
18
19
  import com.facebook.react.fabric.events.EventBeatManager;
19
20
  import com.facebook.react.fabric.events.EventEmitterWrapper;
20
21
  import com.facebook.react.uimanager.PixelUtil;
@@ -37,9 +38,9 @@ public class Binding {
37
38
 
38
39
  private native void installFabricUIManager(
39
40
  RuntimeExecutor runtimeExecutor,
41
+ RuntimeScheduler runtimeScheduler,
40
42
  Object uiManager,
41
43
  EventBeatManager eventBeatManager,
42
- MessageQueueThread jsMessageQueueThread,
43
44
  ComponentFactory componentsRegistry,
44
45
  Object reactNativeConfig);
45
46
 
@@ -83,17 +84,17 @@ public class Binding {
83
84
 
84
85
  public void register(
85
86
  @NonNull RuntimeExecutor runtimeExecutor,
87
+ @Nullable RuntimeScheduler runtimeScheduler,
86
88
  @NonNull FabricUIManager fabricUIManager,
87
89
  @NonNull EventBeatManager eventBeatManager,
88
- @NonNull MessageQueueThread jsMessageQueueThread,
89
90
  @NonNull ComponentFactory componentFactory,
90
91
  @NonNull ReactNativeConfig reactNativeConfig) {
91
92
  fabricUIManager.setBinding(this);
92
93
  installFabricUIManager(
93
94
  runtimeExecutor,
95
+ runtimeScheduler,
94
96
  fabricUIManager,
95
97
  eventBeatManager,
96
- jsMessageQueueThread,
97
98
  componentFactory,
98
99
  reactNativeConfig);
99
100
 
@@ -11,7 +11,6 @@ import androidx.annotation.NonNull;
11
11
  import com.facebook.react.bridge.JSIModuleProvider;
12
12
  import com.facebook.react.bridge.ReactApplicationContext;
13
13
  import com.facebook.react.bridge.UIManager;
14
- import com.facebook.react.bridge.queue.MessageQueueThread;
15
14
  import com.facebook.react.common.mapbuffer.ReadableMapBufferSoLoader;
16
15
  import com.facebook.react.config.ReactFeatureFlags;
17
16
  import com.facebook.react.fabric.events.EventBeatManager;
@@ -41,23 +40,20 @@ public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
41
40
  Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.get");
42
41
  final EventBeatManager eventBeatManager = new EventBeatManager(mReactApplicationContext);
43
42
  final FabricUIManager uiManager = createUIManager(eventBeatManager);
43
+
44
44
  Systrace.beginSection(
45
45
  Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricJSIModuleProvider.registerBinding");
46
46
  final Binding binding = new Binding();
47
+
47
48
  if (ReactFeatureFlags.enableEagerInitializeMapBufferSoFile) {
48
49
  ReadableMapBufferSoLoader.staticInit();
49
50
  }
50
- MessageQueueThread jsMessageQueueThread =
51
- mReactApplicationContext
52
- .getCatalystInstance()
53
- .getReactQueueConfiguration()
54
- .getJSQueueThread();
55
51
 
56
52
  binding.register(
57
53
  mReactApplicationContext.getCatalystInstance().getRuntimeExecutor(),
54
+ mReactApplicationContext.getCatalystInstance().getRuntimeScheduler(),
58
55
  uiManager,
59
56
  eventBeatManager,
60
- jsMessageQueueThread,
61
57
  mComponentFactory,
62
58
  mConfig);
63
59
 
@@ -77,6 +77,7 @@ import com.facebook.react.uimanager.ThemedReactContext;
77
77
  import com.facebook.react.uimanager.UIManagerHelper;
78
78
  import com.facebook.react.uimanager.ViewManagerPropertyUpdater;
79
79
  import com.facebook.react.uimanager.ViewManagerRegistry;
80
+ import com.facebook.react.uimanager.events.EventCategoryDef;
80
81
  import com.facebook.react.uimanager.events.EventDispatcher;
81
82
  import com.facebook.react.uimanager.events.EventDispatcherImpl;
82
83
  import com.facebook.react.uimanager.events.LockFreeEventDispatcherImpl;
@@ -627,6 +628,15 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
627
628
  public int getSurfaceId() {
628
629
  return View.NO_ID;
629
630
  }
631
+
632
+ @Override
633
+ public String toString() {
634
+ String propsString =
635
+ IS_DEVELOPMENT_ENVIRONMENT
636
+ ? (props != null ? props.toHashMap().toString() : "<null>")
637
+ : "<hidden>";
638
+ return String.format("SYNC UPDATE PROPS [%d]: %s", reactTag, propsString);
639
+ }
630
640
  };
631
641
 
632
642
  // If the reactTag exists, we assume that it might at the end of the next
@@ -829,6 +839,23 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
829
839
  receiveEvent(surfaceId, reactTag, eventName, false, 0, params);
830
840
  }
831
841
 
842
+ public void receiveEvent(
843
+ int surfaceId,
844
+ int reactTag,
845
+ String eventName,
846
+ boolean canCoalesceEvent,
847
+ int customCoalesceKey,
848
+ @Nullable WritableMap params) {
849
+ receiveEvent(
850
+ surfaceId,
851
+ reactTag,
852
+ eventName,
853
+ canCoalesceEvent,
854
+ customCoalesceKey,
855
+ params,
856
+ EventCategoryDef.UNSPECIFIED);
857
+ }
858
+
832
859
  /**
833
860
  * receiveEvent API that emits an event to C++. If `canCoalesceEvent` is true, that signals that
834
861
  * C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
@@ -842,6 +869,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
842
869
  * @param canCoalesceEvent
843
870
  * @param customCoalesceKey
844
871
  * @param params
872
+ * @param eventCategory
845
873
  */
846
874
  public void receiveEvent(
847
875
  int surfaceId,
@@ -849,7 +877,8 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
849
877
  String eventName,
850
878
  boolean canCoalesceEvent,
851
879
  int customCoalesceKey,
852
- @Nullable WritableMap params) {
880
+ @Nullable WritableMap params,
881
+ @EventCategoryDef int eventCategory) {
853
882
  if (ReactBuildConfig.DEBUG && surfaceId == View.NO_ID) {
854
883
  FLog.d(TAG, "Emitted event without surfaceId: [%d] %s", reactTag, eventName);
855
884
  }
@@ -870,7 +899,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
870
899
  if (canCoalesceEvent) {
871
900
  eventEmitter.invokeUnique(eventName, params, customCoalesceKey);
872
901
  } else {
873
- eventEmitter.invoke(eventName, params);
902
+ eventEmitter.invoke(eventName, params, eventCategory);
874
903
  }
875
904
  }
876
905
 
@@ -996,6 +1025,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
996
1025
  public int getSurfaceId() {
997
1026
  return surfaceId;
998
1027
  }
1028
+
1029
+ @Override
1030
+ public String toString() {
1031
+ return String.format("SET_JS_RESPONDER [%d] [surface:%d]", reactTag, surfaceId);
1032
+ }
999
1033
  });
1000
1034
  }
1001
1035
 
@@ -1015,6 +1049,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
1015
1049
  public int getSurfaceId() {
1016
1050
  return View.NO_ID;
1017
1051
  }
1052
+
1053
+ @Override
1054
+ public String toString() {
1055
+ return "CLEAR_JS_RESPONDER";
1056
+ }
1018
1057
  });
1019
1058
  }
1020
1059
 
@@ -16,6 +16,7 @@ import com.facebook.react.bridge.NativeMap;
16
16
  import com.facebook.react.bridge.WritableMap;
17
17
  import com.facebook.react.bridge.WritableNativeMap;
18
18
  import com.facebook.react.fabric.FabricSoLoader;
19
+ import com.facebook.react.uimanager.events.EventCategoryDef;
19
20
 
20
21
  /**
21
22
  * This class holds reference to the C++ EventEmitter object. Instances of this class are created on
@@ -36,7 +37,8 @@ public class EventEmitterWrapper {
36
37
  mHybridData = initHybrid();
37
38
  }
38
39
 
39
- private native void invokeEvent(@NonNull String eventName, @NonNull NativeMap params);
40
+ private native void invokeEvent(
41
+ @NonNull String eventName, @NonNull NativeMap params, @EventCategoryDef int category);
40
42
 
41
43
  private native void invokeUniqueEvent(
42
44
  @NonNull String eventName, @NonNull NativeMap params, int customCoalesceKey);
@@ -47,12 +49,15 @@ public class EventEmitterWrapper {
47
49
  * @param eventName {@link String} name of the event to execute.
48
50
  * @param params {@link WritableMap} payload of the event
49
51
  */
50
- public synchronized void invoke(@NonNull String eventName, @Nullable WritableMap params) {
52
+ public synchronized void invoke(
53
+ @NonNull String eventName,
54
+ @Nullable WritableMap params,
55
+ @EventCategoryDef int eventCategory) {
51
56
  if (!isValid()) {
52
57
  return;
53
58
  }
54
59
  NativeMap payload = params == null ? new WritableNativeMap() : (NativeMap) params;
55
- invokeEvent(eventName, payload);
60
+ invokeEvent(eventName, payload, eventCategory);
56
61
  }
57
62
 
58
63
  /**
@@ -10,8 +10,6 @@ package com.facebook.react.fabric.events;
10
10
  import static com.facebook.react.uimanager.events.TouchesHelper.CHANGED_TOUCHES_KEY;
11
11
  import static com.facebook.react.uimanager.events.TouchesHelper.TARGET_KEY;
12
12
  import static com.facebook.react.uimanager.events.TouchesHelper.TARGET_SURFACE_KEY;
13
- import static com.facebook.react.uimanager.events.TouchesHelper.TOP_TOUCH_CANCEL_KEY;
14
- import static com.facebook.react.uimanager.events.TouchesHelper.TOP_TOUCH_END_KEY;
15
13
  import static com.facebook.react.uimanager.events.TouchesHelper.TOUCHES_KEY;
16
14
 
17
15
  import android.util.Pair;
@@ -24,7 +22,9 @@ import com.facebook.react.bridge.WritableMap;
24
22
  import com.facebook.react.bridge.WritableNativeArray;
25
23
  import com.facebook.react.bridge.WritableNativeMap;
26
24
  import com.facebook.react.fabric.FabricUIManager;
25
+ import com.facebook.react.uimanager.events.EventCategoryDef;
27
26
  import com.facebook.react.uimanager.events.RCTModernEventEmitter;
27
+ import com.facebook.react.uimanager.events.TouchEventType;
28
28
  import com.facebook.systrace.Systrace;
29
29
  import java.util.HashSet;
30
30
  import java.util.Set;
@@ -47,7 +47,7 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
47
47
  @Override
48
48
  public void receiveEvent(
49
49
  int surfaceId, int reactTag, String eventName, @Nullable WritableMap params) {
50
- receiveEvent(surfaceId, reactTag, eventName, false, 0, params);
50
+ receiveEvent(surfaceId, reactTag, eventName, false, 0, params, EventCategoryDef.UNSPECIFIED);
51
51
  }
52
52
 
53
53
  @Override
@@ -57,29 +57,46 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
57
57
  String eventName,
58
58
  boolean canCoalesceEvent,
59
59
  int customCoalesceKey,
60
- @Nullable WritableMap params) {
60
+ @Nullable WritableMap params,
61
+ @EventCategoryDef int category) {
61
62
  Systrace.beginSection(
62
63
  Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
63
64
  "FabricEventEmitter.receiveEvent('" + eventName + "')");
64
65
  mUIManager.receiveEvent(
65
- surfaceId, reactTag, eventName, canCoalesceEvent, customCoalesceKey, params);
66
+ surfaceId, reactTag, eventName, canCoalesceEvent, customCoalesceKey, params, category);
66
67
  Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
67
68
  }
68
69
 
70
+ /**
71
+ * Processes touches in a JS compatible way and send it to Fabric core
72
+ *
73
+ * @param eventName the event name (see {@link TouchEventType})
74
+ * @param touches all the touch data extracted from MotionEvent
75
+ * @param changedIndices the indices of the pointers that changed (MOVE/CANCEL includes all
76
+ * touches, START/END only the one that was added/removed)
77
+ */
69
78
  @Override
70
79
  public void receiveTouches(
71
- @NonNull String eventTopLevelType,
80
+ @NonNull String eventName,
72
81
  @NonNull WritableArray touches,
73
82
  @NonNull WritableArray changedIndices) {
83
+ Systrace.beginSection(
84
+ Systrace.TRACE_TAG_REACT_JAVA_BRIDGE,
85
+ "FabricEventEmitter.receiveTouches('" + eventName + "')");
86
+
87
+ boolean isFinalEvent =
88
+ TouchEventType.END.getJsName().equalsIgnoreCase(eventName)
89
+ || TouchEventType.CANCEL.getJsName().equalsIgnoreCase(eventName);
90
+
74
91
  Pair<WritableArray, WritableArray> result =
75
- TOP_TOUCH_END_KEY.equalsIgnoreCase(eventTopLevelType)
76
- || TOP_TOUCH_CANCEL_KEY.equalsIgnoreCase(eventTopLevelType)
92
+ isFinalEvent
77
93
  ? removeTouchesAtIndices(touches, changedIndices)
78
94
  : touchSubsequence(touches, changedIndices);
79
95
 
80
96
  WritableArray changedTouches = result.first;
81
97
  touches = result.second;
82
98
 
99
+ int eventCategory = getTouchCategory(eventName);
83
100
  for (int jj = 0; jj < changedTouches.size(); jj++) {
84
101
  WritableMap touch = getWritableMap(changedTouches.getMap(jj));
85
102
  // Touch objects can fulfill the role of `DOM` `Event` objects if we set
@@ -97,8 +114,10 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
97
114
  rootNodeID = targetReactTag;
98
115
  }
99
116
 
100
- receiveEvent(targetSurfaceId, rootNodeID, eventTopLevelType, false, 0, touch);
117
+ receiveEvent(targetSurfaceId, rootNodeID, eventName, false, 0, touch, eventCategory);
101
118
  }
119
+
120
+ Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);
102
121
  }
103
122
 
104
123
  /** TODO T31905686 optimize this to avoid copying arrays */
@@ -174,4 +193,19 @@ public class FabricEventEmitter implements RCTModernEventEmitter {
174
193
  map.merge(readableMap);
175
194
  return map;
176
195
  }
196
+
197
+ @EventCategoryDef
198
+ private static int getTouchCategory(String touchEventType) {
199
+ int category = EventCategoryDef.UNSPECIFIED;
200
+ if (TouchEventType.MOVE.getJsName().equals(touchEventType)) {
201
+ category = EventCategoryDef.CONTINUOUS;
202
+ } else if (TouchEventType.START.getJsName().equals(touchEventType)) {
203
+ category = EventCategoryDef.CONTINUOUS_START;
204
+ } else if (TouchEventType.END.getJsName().equals(touchEventType)
205
+ || TouchEventType.CANCEL.getJsName().equals(touchEventType)) {
206
+ category = EventCategoryDef.CONTINUOUS_END;
207
+ }
208
+
209
+ return category;
210
+ }
177
211
  }
@@ -11,7 +11,7 @@ LOCAL_MODULE := fabricjni
11
11
 
12
12
  LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
13
13
 
14
- LOCAL_SHARED_LIBRARIES := libjsi libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
14
+ LOCAL_SHARED_LIBRARIES := libjsi libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry libreact_render_runtimescheduler
15
15
 
16
16
  LOCAL_STATIC_LIBRARIES :=
17
17
 
@@ -56,6 +56,7 @@ $(call import-module,react/renderer/graphics)
56
56
  $(call import-module,react/renderer/imagemanager)
57
57
  $(call import-module,react/renderer/mapbuffer)
58
58
  $(call import-module,react/renderer/mounting)
59
+ $(call import-module,react/renderer/runtimescheduler)
59
60
  $(call import-module,react/renderer/scheduler)
60
61
  $(call import-module,react/renderer/templateprocessor)
61
62
  $(call import-module,react/renderer/textlayoutmanager)
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its 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 <jsi/jsi.h>
9
+ #include <react/renderer/core/EventBeat.h>
10
+ #include <react/renderer/uimanager/primitives.h>
11
+
12
+ #include "AsyncEventBeatV2.h"
13
+
14
+ namespace facebook::react {
15
+
16
+ AsyncEventBeatV2::AsyncEventBeatV2(
17
+ EventBeat::SharedOwnerBox const &ownerBox,
18
+ EventBeatManager *eventBeatManager,
19
+ RuntimeExecutor runtimeExecutor,
20
+ jni::global_ref<jobject> javaUIManager)
21
+ : EventBeat(ownerBox),
22
+ eventBeatManager_(eventBeatManager),
23
+ runtimeExecutor_(runtimeExecutor),
24
+ javaUIManager_(javaUIManager) {
25
+ eventBeatManager->addObserver(*this);
26
+ }
27
+
28
+ AsyncEventBeatV2::~AsyncEventBeatV2() {
29
+ eventBeatManager_->removeObserver(*this);
30
+ }
31
+
32
+ void AsyncEventBeatV2::tick() const {
33
+ if (!isRequested_ || isBeatCallbackScheduled_) {
34
+ return;
35
+ }
36
+
37
+ isRequested_ = false;
38
+ isBeatCallbackScheduled_ = true;
39
+
40
+ runtimeExecutor_([this, ownerBox = ownerBox_](jsi::Runtime &runtime) {
41
+ isBeatCallbackScheduled_ = false;
42
+ auto owner = ownerBox->owner.lock();
43
+ if (!owner) {
44
+ return;
45
+ }
46
+
47
+ if (beatCallback_) {
48
+ beatCallback_(runtime);
49
+ }
50
+ });
51
+ }
52
+
53
+ void AsyncEventBeatV2::induce() const {
54
+ tick();
55
+ }
56
+
57
+ void AsyncEventBeatV2::request() const {
58
+ bool alreadyRequested = isRequested_;
59
+ EventBeat::request();
60
+ if (!alreadyRequested) {
61
+ // Notifies java side that an event will be dispatched (e.g. LayoutEvent)
62
+ static auto onRequestEventBeat =
63
+ jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
64
+ ->getMethod<void()>("onRequestEventBeat");
65
+ onRequestEventBeat(javaUIManager_);
66
+ }
67
+ }
68
+
69
+ } // namespace facebook::react
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Copyright (c) Facebook, Inc. and its 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 <react/renderer/core/EventBeat.h>
11
+
12
+ #include "EventBeatManager.h"
13
+
14
+ namespace facebook::react {
15
+
16
+ class AsyncEventBeatV2 final : public EventBeat,
17
+ public EventBeatManagerObserver {
18
+ public:
19
+ AsyncEventBeatV2(
20
+ EventBeat::SharedOwnerBox const &ownerBox,
21
+ EventBeatManager *eventBeatManager,
22
+ RuntimeExecutor runtimeExecutor,
23
+ jni::global_ref<jobject> javaUIManager);
24
+
25
+ ~AsyncEventBeatV2() override;
26
+
27
+ void tick() const override;
28
+
29
+ void induce() const override;
30
+
31
+ void request() const override;
32
+
33
+ private:
34
+ EventBeatManager *eventBeatManager_;
35
+ RuntimeExecutor runtimeExecutor_;
36
+ jni::global_ref<jobject> javaUIManager_;
37
+ mutable std::atomic<bool> isBeatCallbackScheduled_{false};
38
+ };
39
+
40
+ } // namespace facebook::react
@@ -11,12 +11,8 @@ rn_xplat_cxx_library(
11
11
  ],
12
12
  prefix = "react/fabric",
13
13
  ),
14
- compiler_flags = [
15
- "-fexceptions",
16
- "-frtti",
17
- "-std=c++17",
18
- "-Wall",
19
- ],
14
+ compiler_flags_enable_exceptions = True,
15
+ compiler_flags_enable_rtti = True, # dynamic_cast used within Binding.cpp
20
16
  fbandroid_allow_jni_merging = True,
21
17
  labels = ["supermodule:xplat/default/public.react_native.infra"],
22
18
  platforms = ANDROID,
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "Binding.h"
9
9
  #include "AsyncEventBeat.h"
10
+ #include "AsyncEventBeatV2.h"
10
11
  #include "EventEmitterWrapper.h"
11
12
  #include "ReactNativeConfigHolder.h"
12
13
  #include "StateWrapperImpl.h"
@@ -242,8 +243,9 @@ Binding::getInspectorDataForInstance(
242
243
  }
243
244
 
244
245
  EventEmitterWrapper *cEventEmitter = cthis(eventEmitterWrapper);
245
- InspectorData data =
246
- scheduler->getInspectorDataForInstance(cEventEmitter->eventEmitter);
246
+ InspectorData data = scheduler->getInspectorDataForInstance(
247
+ enableEventEmitterRawPointer_ ? *cEventEmitter->eventEmitterPointer
248
+ : *cEventEmitter->eventEmitter);
247
249
 
248
250
  folly::dynamic result = folly::dynamic::object;
249
251
  result["fileName"] = data.fileName;
@@ -493,9 +495,9 @@ bool isMapBufferSerializationEnabled() {
493
495
 
494
496
  void Binding::installFabricUIManager(
495
497
  jni::alias_ref<JRuntimeExecutor::javaobject> runtimeExecutorHolder,
498
+ jni::alias_ref<JRuntimeScheduler::javaobject> runtimeSchedulerHolder,
496
499
  jni::alias_ref<jobject> javaUIManager,
497
500
  EventBeatManager *eventBeatManager,
498
- jni::alias_ref<JavaMessageQueueThread::javaobject> jsMessageQueueThread,
499
501
  ComponentFactory *componentsRegistry,
500
502
  jni::alias_ref<jobject> reactNativeConfig) {
501
503
  SystraceSection s("FabricUIManagerBinding::installFabricUIManager");
@@ -506,6 +508,12 @@ void Binding::installFabricUIManager(
506
508
  enableFabricLogs_ =
507
509
  config->getBool("react_fabric:enabled_android_fabric_logs");
508
510
 
511
+ disableRevisionCheckForPreallocation_ =
512
+ config->getBool("react_fabric:disable_revision_check_for_preallocation");
513
+
514
+ enableEventEmitterRawPointer_ =
515
+ config->getBool("react_fabric:enable_event_emitter_wrapper_raw_pointer");
516
+
509
517
  if (enableFabricLogs_) {
510
518
  LOG(WARNING) << "Binding::installFabricUIManager() was called (address: "
511
519
  << this << ").";
@@ -523,26 +531,54 @@ void Binding::installFabricUIManager(
523
531
  ContextContainer::Shared contextContainer =
524
532
  std::make_shared<ContextContainer>();
525
533
 
526
- auto sharedJSMessageQueueThread =
527
- std::make_shared<JMessageQueueThread>(jsMessageQueueThread);
528
534
  auto runtimeExecutor = runtimeExecutorHolder->cthis()->get();
529
535
 
536
+ if (runtimeSchedulerHolder) {
537
+ auto runtimeScheduler = runtimeSchedulerHolder->cthis()->get().lock();
538
+ if (runtimeScheduler) {
539
+ runtimeScheduler->setEnableYielding(config->getBool(
540
+ "react_native_new_architecture:runtimescheduler_enable_yielding_android"));
541
+ runtimeExecutor =
542
+ [runtimeScheduler](
543
+ std::function<void(jsi::Runtime & runtime)> &&callback) {
544
+ runtimeScheduler->scheduleWork(std::move(callback));
545
+ };
546
+ }
547
+ }
548
+
549
+ auto enableV2AsynchronousEventBeat =
550
+ config->getBool("react_fabric:enable_asynchronous_event_beat_v2_android");
551
+
530
552
  // TODO: T31905686 Create synchronous Event Beat
531
553
  jni::global_ref<jobject> localJavaUIManager = javaUIManager_;
532
554
  EventBeat::Factory synchronousBeatFactory =
533
- [eventBeatManager, runtimeExecutor, localJavaUIManager](
534
- EventBeat::SharedOwnerBox const &ownerBox)
555
+ [eventBeatManager,
556
+ runtimeExecutor,
557
+ localJavaUIManager,
558
+ enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
535
559
  -> std::unique_ptr<EventBeat> {
536
- return std::make_unique<AsyncEventBeat>(
537
- ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
560
+ if (enableV2AsynchronousEventBeat) {
561
+ return std::make_unique<AsyncEventBeatV2>(
562
+ ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
563
+ } else {
564
+ return std::make_unique<AsyncEventBeat>(
565
+ ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
566
+ }
538
567
  };
539
568
 
540
569
  EventBeat::Factory asynchronousBeatFactory =
541
- [eventBeatManager, runtimeExecutor, localJavaUIManager](
542
- EventBeat::SharedOwnerBox const &ownerBox)
570
+ [eventBeatManager,
571
+ runtimeExecutor,
572
+ localJavaUIManager,
573
+ enableV2AsynchronousEventBeat](EventBeat::SharedOwnerBox const &ownerBox)
543
574
  -> std::unique_ptr<EventBeat> {
544
- return std::make_unique<AsyncEventBeat>(
545
- ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
575
+ if (enableV2AsynchronousEventBeat) {
576
+ return std::make_unique<AsyncEventBeatV2>(
577
+ ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
578
+ } else {
579
+ return std::make_unique<AsyncEventBeat>(
580
+ ownerBox, eventBeatManager, runtimeExecutor, localJavaUIManager);
581
+ }
546
582
  };
547
583
 
548
584
  contextContainer->insert("ReactNativeConfig", config);
@@ -573,8 +609,8 @@ void Binding::installFabricUIManager(
573
609
  toolbox.backgroundExecutor = backgroundExecutor_->get();
574
610
  }
575
611
 
576
- animationDriver_ =
577
- std::make_shared<LayoutAnimationDriver>(runtimeExecutor, this);
612
+ animationDriver_ = std::make_shared<LayoutAnimationDriver>(
613
+ runtimeExecutor, contextContainer, this);
578
614
  scheduler_ = std::make_shared<Scheduler>(
579
615
  toolbox, (animationDriver_ ? animationDriver_.get() : nullptr), this);
580
616
  }
@@ -610,16 +646,19 @@ inline local_ref<ReadableArray::javaobject> castReadableArray(
610
646
 
611
647
  // TODO: this method will be removed when binding for components are code-gen
612
648
  local_ref<JString> getPlatformComponentName(const ShadowView &shadowView) {
613
- local_ref<JString> componentName;
614
- auto newViewProps =
615
- std::dynamic_pointer_cast<const ScrollViewProps>(shadowView.props);
649
+ static std::string scrollViewComponentName = std::string("ScrollView");
616
650
 
617
- if (newViewProps &&
618
- newViewProps->getProbablyMoreHorizontalThanVertical_DEPRECATED()) {
619
- componentName = make_jstring("AndroidHorizontalScrollView");
620
- } else {
621
- componentName = make_jstring(shadowView.componentName);
651
+ local_ref<JString> componentName;
652
+ if (scrollViewComponentName.compare(shadowView.componentName) == 0) {
653
+ auto newViewProps =
654
+ std::static_pointer_cast<const ScrollViewProps>(shadowView.props);
655
+ if (newViewProps->getProbablyMoreHorizontalThanVertical_DEPRECATED()) {
656
+ componentName = make_jstring("AndroidHorizontalScrollView");
657
+ return componentName;
658
+ }
622
659
  }
660
+
661
+ componentName = make_jstring(shadowView.componentName);
623
662
  return componentName;
624
663
  }
625
664
 
@@ -885,8 +924,11 @@ void Binding::schedulerDidFinishTransaction(
885
924
  mountItem.newChildShadowView.eventEmitter;
886
925
  auto javaEventEmitter = EventEmitterWrapper::newObjectJavaArgs();
887
926
  EventEmitterWrapper *cEventEmitter = cthis(javaEventEmitter);
888
- cEventEmitter->eventEmitter = eventEmitter;
889
-
927
+ if (enableEventEmitterRawPointer_) {
928
+ cEventEmitter->eventEmitterPointer = eventEmitter.get();
929
+ } else {
930
+ cEventEmitter->eventEmitter = eventEmitter;
931
+ }
890
932
  temp[0] = mountItem.newChildShadowView.tag;
891
933
  temp[1] = isLayoutable;
892
934
  env->SetIntArrayRegion(intBufferArray, intBufferPosition, 2, temp);
@@ -1036,7 +1078,11 @@ void Binding::schedulerDidFinishTransaction(
1036
1078
  // Do not hold a reference to javaEventEmitter from the C++ side.
1037
1079
  auto javaEventEmitter = EventEmitterWrapper::newObjectJavaArgs();
1038
1080
  EventEmitterWrapper *cEventEmitter = cthis(javaEventEmitter);
1039
- cEventEmitter->eventEmitter = eventEmitter;
1081
+ if (enableEventEmitterRawPointer_) {
1082
+ cEventEmitter->eventEmitterPointer = eventEmitter.get();
1083
+ } else {
1084
+ cEventEmitter->eventEmitter = eventEmitter;
1085
+ }
1040
1086
 
1041
1087
  (*objBufferArray)[objBufferPosition++] = javaEventEmitter.get();
1042
1088
  }
@@ -1163,7 +1209,11 @@ void Binding::preallocateShadowView(
1163
1209
  if (eventEmitter != nullptr) {
1164
1210
  javaEventEmitter = EventEmitterWrapper::newObjectJavaArgs();
1165
1211
  EventEmitterWrapper *cEventEmitter = cthis(javaEventEmitter);
1166
- cEventEmitter->eventEmitter = eventEmitter;
1212
+ if (enableEventEmitterRawPointer_) {
1213
+ cEventEmitter->eventEmitterPointer = eventEmitter.get();
1214
+ } else {
1215
+ cEventEmitter->eventEmitter = eventEmitter;
1216
+ }
1167
1217
  }
1168
1218
  }
1169
1219
 
@@ -1210,11 +1260,13 @@ void Binding::schedulerDidCloneShadowNode(
1210
1260
  // 1. The revision is exactly 1
1211
1261
  // 2. At revision 0 (the old node), View Preallocation would have been skipped
1212
1262
 
1213
- if (newShadowNode.getProps()->revision != 1) {
1214
- return;
1215
- }
1216
- if (oldShadowNode.getProps()->revision != 0) {
1217
- return;
1263
+ if (!disableRevisionCheckForPreallocation_) {
1264
+ if (newShadowNode.getProps()->revision != 1) {
1265
+ return;
1266
+ }
1267
+ if (oldShadowNode.getProps()->revision != 0) {
1268
+ return;
1269
+ }
1218
1270
  }
1219
1271
 
1220
1272
  // If the new node is concrete and the old wasn't, we can preallocate