react-native-windows 0.83.0-preview.2 → 0.84.0-preview.2

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 (221) hide show
  1. package/.flowconfig +2 -2
  2. package/Folly/Folly.vcxproj +2 -0
  3. package/Libraries/Animated/AnimatedEvent.js +2 -2
  4. package/Libraries/Animated/animations/Animation.js +1 -3
  5. package/Libraries/Animated/createAnimatedComponent.js +8 -5
  6. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  7. package/Libraries/Animated/nodes/AnimatedInterpolation.js +40 -4
  8. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  9. package/Libraries/Animated/nodes/AnimatedObject.js +16 -11
  10. package/Libraries/Animated/nodes/AnimatedProps.js +43 -12
  11. package/Libraries/Animated/nodes/AnimatedStyle.js +12 -12
  12. package/Libraries/Animated/nodes/AnimatedValue.js +6 -3
  13. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  14. package/Libraries/BatchedBridge/MessageQueue.js +24 -22
  15. package/Libraries/Blob/URL.js +34 -3
  16. package/Libraries/Blob/URLSearchParams.js +1 -0
  17. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +9 -1
  18. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +6 -1
  19. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +6 -1
  20. package/Libraries/Components/Button.js +2 -5
  21. package/Libraries/Components/Button.windows.js +2 -5
  22. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
  23. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +4 -4
  24. package/Libraries/Components/Keyboard/Keyboard.js +2 -2
  25. package/Libraries/Components/Pressable/Pressable.js +8 -8
  26. package/Libraries/Components/Pressable/Pressable.windows.js +14 -13
  27. package/Libraries/Components/TextInput/TextInput.flow.js +13 -13
  28. package/Libraries/Components/TextInput/TextInput.flow.windows.js +19 -18
  29. package/Libraries/Components/TextInput/TextInput.js +33 -34
  30. package/Libraries/Components/TextInput/TextInput.windows.js +40 -39
  31. package/Libraries/Components/Touchable/PooledClass.js +2 -2
  32. package/Libraries/Components/Touchable/TouchableBounce.js +3 -3
  33. package/Libraries/Components/Touchable/TouchableBounce.windows.js +3 -3
  34. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  35. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +1 -1
  36. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
  37. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -9
  38. package/Libraries/Components/View/ViewPropTypes.js +16 -6
  39. package/Libraries/Components/View/ViewPropTypes.windows.js +21 -11
  40. package/Libraries/Core/Devtools/loadBundleFromServer.js +6 -3
  41. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +6 -3
  42. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  43. package/Libraries/Core/ExceptionsManager.js +3 -3
  44. package/Libraries/Core/RawEventEmitter.js +1 -1
  45. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  46. package/Libraries/Core/ReactNativeVersion.js +3 -3
  47. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  48. package/Libraries/Core/setUpErrorHandling.js +1 -1
  49. package/Libraries/EventEmitter/NativeEventEmitter.js +2 -2
  50. package/Libraries/Image/Image.android.js +2 -2
  51. package/Libraries/Image/Image.ios.js +2 -2
  52. package/Libraries/Image/Image.windows.js +2 -2
  53. package/Libraries/Image/ImageProps.js +1 -1
  54. package/Libraries/Image/ImageTypes.flow.js +2 -2
  55. package/Libraries/Interaction/InteractionManager.js +3 -3
  56. package/Libraries/Interaction/PanResponder.js +1 -1
  57. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  58. package/Libraries/Linking/Linking.js +1 -1
  59. package/Libraries/Lists/FlatList.js +2 -2
  60. package/Libraries/LogBox/Data/LogBoxData.js +31 -4
  61. package/Libraries/LogBox/Data/LogBoxLog.js +2 -2
  62. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  63. package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -5
  64. package/Libraries/LogBox/LogBox.js +7 -7
  65. package/Libraries/NativeComponent/BaseViewConfig.android.js +12 -0
  66. package/Libraries/NativeComponent/StaticViewConfigValidator.js +4 -4
  67. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
  68. package/Libraries/NativeComponent/ViewConfigIgnore.windows.js +1 -1
  69. package/Libraries/Network/RCTNetworking.android.js +3 -3
  70. package/Libraries/Network/RCTNetworking.ios.js +2 -2
  71. package/Libraries/Network/RCTNetworking.js.flow +2 -2
  72. package/Libraries/Network/RCTNetworking.windows.js +2 -2
  73. package/Libraries/Pressability/Pressability.js +9 -9
  74. package/Libraries/Pressability/Pressability.windows.js +17 -16
  75. package/Libraries/ReactNative/AppRegistry.flow.js +1 -1
  76. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  77. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  78. package/Libraries/ReactNative/PaperUIManager.js +1 -1
  79. package/Libraries/ReactNative/PaperUIManager.windows.js +1 -1
  80. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  81. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +2 -2
  82. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
  83. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  84. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  85. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
  86. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -3
  87. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  88. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  89. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +11 -4
  90. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +11 -4
  91. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11 -4
  92. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  93. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  94. package/Libraries/Renderer/shims/ReactNative.js +2 -2
  95. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
  96. package/Libraries/Renderer/shims/ReactNativeTypes.windows.js +3 -1
  97. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  98. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  99. package/Libraries/Settings/Settings.ios.js +1 -1
  100. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  101. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  102. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +4 -2
  103. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  104. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +99 -4
  105. package/Libraries/StyleSheet/StyleSheetTypes.js +6 -8
  106. package/Libraries/StyleSheet/processFilter.js +1 -1
  107. package/Libraries/Text/Text.js +46 -6
  108. package/Libraries/Text/Text.windows.js +46 -6
  109. package/Libraries/Text/TextNativeComponent.js +1 -1
  110. package/Libraries/Text/TextProps.js +7 -7
  111. package/Libraries/Text/TextProps.windows.js +7 -7
  112. package/Libraries/Types/CodegenTypes.js +1 -1
  113. package/Libraries/Types/CoreEventTypes.js +31 -0
  114. package/Libraries/Types/CoreEventTypes.windows.js +31 -13
  115. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  116. package/Libraries/Utilities/Appearance.js +2 -2
  117. package/Libraries/Utilities/DevLoadingView.js +8 -1
  118. package/Libraries/Utilities/DevSettings.js +3 -3
  119. package/Libraries/Utilities/HMRClient.js +4 -3
  120. package/Libraries/Utilities/RCTLog.js +3 -3
  121. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  122. package/Libraries/Utilities/SceneTracker.js +1 -1
  123. package/Libraries/Utilities/codegenNativeCommands.js +1 -1
  124. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +3 -3
  125. package/Libraries/Utilities/logError.js +1 -1
  126. package/Libraries/Utilities/stringifySafe.js +7 -7
  127. package/Libraries/Utilities/useRefEffect.js +1 -1
  128. package/Libraries/WebSocket/WebSocketInterceptor.js +3 -3
  129. package/Libraries/promiseRejectionTrackingOptions.js +8 -8
  130. package/Libraries/vendor/core/ErrorUtils.js +10 -10
  131. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  132. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +5 -0
  133. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +1 -0
  134. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +25 -5
  135. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +2 -1
  136. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +9 -3
  137. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +2 -3
  138. package/Microsoft.ReactNative/Fabric/ReactTaggedView.h +2 -2
  139. package/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +2 -0
  140. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +6 -0
  141. package/Microsoft.ReactNative/ViewProps.idl +9 -0
  142. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +12 -2
  143. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  144. package/ReactCommon/ReactCommon.vcxproj +7 -1
  145. package/ReactCommon/ReactCommon.vcxproj.filters +0 -3
  146. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSIndexedRAMBundle.cpp +5 -5
  147. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/ReactMarker.cpp +0 -1
  148. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
  149. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +12 -2
  150. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/attributedstring/TextAttributes.cpp +291 -0
  151. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventDispatcher.cpp +0 -1
  152. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/EventQueueProcessor.cpp +1 -3
  153. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/core/propsConversions.h +199 -0
  154. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManager.cpp +6 -0
  155. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +17 -10
  156. package/Scripts/creaternwapp.cmd +8 -1
  157. package/Scripts/creaternwlib.cmd +21 -2
  158. package/Shared/DevSettings.h +0 -3
  159. package/Shared/Modules/WebSocketModule.cpp +0 -1
  160. package/Shared/Modules/WebSocketModule.h +62 -3
  161. package/Shared/OInstance.cpp +5 -0
  162. package/Shared/Shared.vcxitems +4 -6
  163. package/Shared/Shared.vcxitems.filters +218 -709
  164. package/codegen/NativeAccessibilityManagerSpec.g.h +2 -0
  165. package/codegen/NativeAnimatedModuleSpec.g.h +21 -15
  166. package/codegen/NativeDevLoadingViewSpec.g.h +3 -3
  167. package/codegen/NativeIntentAndroidSpec.g.h +16 -3
  168. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +209 -191
  169. package/codegen/react/components/rnwcore/EventEmitters.h +1 -0
  170. package/codegen/react/components/rnwcore/Props.h +14 -0
  171. package/codegen/rnwcoreJSI.h +246 -211
  172. package/index.js +3 -0
  173. package/index.windows.js +3 -0
  174. package/jest/mock.js +2 -2
  175. package/jest/mockComponent.js +1 -1
  176. package/jest/setup.js +1 -1
  177. package/package.json +22 -21
  178. package/src/private/animated/NativeAnimatedHelper.js +130 -125
  179. package/src/private/animated/NativeAnimatedValidation.js +7 -4
  180. package/src/private/animated/createAnimatedPropsHook.js +13 -5
  181. package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
  182. package/src/private/components/virtualview/VirtualView.js +16 -9
  183. package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
  184. package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
  185. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  186. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
  187. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
  188. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
  189. package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
  190. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  191. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
  192. package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
  193. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  194. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
  195. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
  196. package/src/private/webapis/dom/events/CustomEvent.js +3 -3
  197. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  198. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  199. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +29 -29
  200. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
  201. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  202. package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
  203. package/src/private/webapis/html/events/MessageEvent.js +3 -3
  204. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
  205. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
  206. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
  207. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
  208. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
  209. package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
  210. package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
  211. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
  212. package/src/private/webapis/performance/Performance.js +1 -1
  213. package/src/private/webapis/performance/UserTiming.js +1 -1
  214. package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
  215. package/src/private/webapis/structuredClone/structuredClone.js +3 -3
  216. package/src/types/globals.d.ts +30 -1
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/image/conversions.h +0 -178
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/imagemanager/primitives.h +0 -183
  219. package/Shared/Modules/WebSocketTurboModule.h +0 -71
  220. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
  221. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
package/index.js CHANGED
@@ -341,6 +341,9 @@ module.exports = {
341
341
  get useColorScheme() {
342
342
  return require('./Libraries/Utilities/useColorScheme').default;
343
343
  },
344
+ get usePressability() {
345
+ return require('./Libraries/Pressability/usePressability').default;
346
+ },
344
347
  get useWindowDimensions() {
345
348
  return require('./Libraries/Utilities/useWindowDimensions').default;
346
349
  },
package/index.windows.js CHANGED
@@ -341,6 +341,9 @@ module.exports = {
341
341
  get useColorScheme() {
342
342
  return require('./Libraries/Utilities/useColorScheme').default;
343
343
  },
344
+ get usePressability() {
345
+ return require('./Libraries/Pressability/usePressability').default;
346
+ },
344
347
  get useWindowDimensions() {
345
348
  return require('./Libraries/Utilities/useWindowDimensions').default;
346
349
  },
package/jest/mock.js CHANGED
@@ -16,7 +16,7 @@
16
16
  * If `factoryRef` is provided, it is expected to reference a module that
17
17
  * exports the same type signature as the module referenced by `moduleRef`.
18
18
  */
19
- export default function mock<TModuleRef: $Flow$ModuleRef<mixed>>(
19
+ export default function mock<TModuleRef: $Flow$ModuleRef<unknown>>(
20
20
  moduleRef: TModuleRef,
21
21
  factoryRef?: NoInfer<TModuleRef>,
22
22
  ): void {
@@ -33,7 +33,7 @@ export default function mock<TModuleRef: $Flow$ModuleRef<mixed>>(
33
33
  }
34
34
  }
35
35
 
36
- function deref(ref: $Flow$ModuleRef<mixed>): string {
36
+ function deref(ref: $Flow$ModuleRef<unknown>): string {
37
37
  // $FlowFixMe[incompatible-type]
38
38
  return (ref as string).substring(2);
39
39
  }
@@ -39,7 +39,7 @@ export default function mockComponent<
39
39
 
40
40
  const SuperClass: typeof React.Component<{...}> =
41
41
  typeof RealComponent === 'function' &&
42
- RealComponent.prototype.constructor instanceof React.Component
42
+ RealComponent.prototype?.constructor instanceof React.Component
43
43
  ? RealComponent
44
44
  : React.Component;
45
45
 
package/jest/setup.js CHANGED
@@ -51,7 +51,7 @@ Object.defineProperties(global, {
51
51
  regeneratorRuntime: {
52
52
  configurable: true,
53
53
  enumerable: true,
54
- value: jest.requireActual<mixed>('regenerator-runtime/runtime'),
54
+ value: jest.requireActual<unknown>('regenerator-runtime/runtime'),
55
55
  writable: true,
56
56
  },
57
57
  requestAnimationFrame: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-windows",
3
- "version": "0.83.0-preview.2",
3
+ "version": "0.84.0-preview.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,16 +26,16 @@
26
26
  "@react-native-community/cli": "20.0.0",
27
27
  "@react-native-community/cli-platform-android": "20.0.0",
28
28
  "@react-native-community/cli-platform-ios": "20.0.0",
29
- "@react-native-windows/cli": "0.83.0-preview.1",
29
+ "@react-native-windows/cli": "0.84.0-preview.1",
30
30
  "@react-native/assets": "1.0.0",
31
- "@react-native/assets-registry": "0.83.0-rc.5",
32
- "@react-native/codegen": "0.83.0-rc.5",
33
- "@react-native/community-cli-plugin": "0.83.0-rc.5",
34
- "@react-native/gradle-plugin": "0.83.0-rc.5",
35
- "@react-native/js-polyfills": "0.83.0-rc.5",
36
- "@react-native/new-app-screen": "0.83.0-rc.5",
37
- "@react-native/normalize-colors": "0.83.0-rc.5",
38
- "@react-native/virtualized-lists": "0.83.0-rc.5",
31
+ "@react-native/assets-registry": "0.84.1",
32
+ "@react-native/codegen": "0.84.1",
33
+ "@react-native/community-cli-plugin": "0.84.1",
34
+ "@react-native/gradle-plugin": "0.84.1",
35
+ "@react-native/js-polyfills": "0.84.1",
36
+ "@react-native/new-app-screen": "0.84.1",
37
+ "@react-native/normalize-colors": "0.84.1",
38
+ "@react-native/virtualized-lists": "0.84.1",
39
39
  "abort-controller": "^3.0.0",
40
40
  "anser": "^1.4.9",
41
41
  "ansi-regex": "^5.0.0",
@@ -47,7 +47,7 @@
47
47
  "event-target-shim": "^5.0.1",
48
48
  "flow-enums-runtime": "^0.0.6",
49
49
  "glob": "^7.1.1",
50
- "hermes-compiler": "0.14.0",
50
+ "hermes-compiler": "250829098.0.9",
51
51
  "invariant": "^2.2.4",
52
52
  "jest-environment-node": "^29.7.0",
53
53
  "memoize-one": "^5.0.0",
@@ -64,13 +64,14 @@
64
64
  "semver": "^7.1.3",
65
65
  "source-map-support": "^0.5.19",
66
66
  "stacktrace-parser": "^0.1.10",
67
+ "tinyglobby": "^0.2.15",
67
68
  "whatwg-fetch": "^3.0.0",
68
69
  "ws": "^7.5.10",
69
70
  "yargs": "^17.6.2"
70
71
  },
71
72
  "devDependencies": {
72
- "@react-native-windows/codegen": "0.83.0-preview.1",
73
- "@react-native/metro-config": "0.83.0-rc.5",
73
+ "@react-native-windows/codegen": "0.84.0-preview.1",
74
+ "@react-native/metro-config": "0.84.1",
74
75
  "@rnw-scripts/babel-react-native-config": "0.0.0",
75
76
  "@rnw-scripts/eslint-config": "1.2.38",
76
77
  "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42",
@@ -78,22 +79,22 @@
78
79
  "@rnw-scripts/metro-dev-config": "0.0.0",
79
80
  "@rnx-kit/jest-preset": "^0.3.1",
80
81
  "@types/node": "^22.14.0",
81
- "@types/react": "^19.2.0",
82
+ "@types/react": "^19.2.3",
82
83
  "eslint": "^8.19.0",
83
- "flow-bin": "^0.289.0",
84
+ "flow-bin": "^0.295.0",
84
85
  "jscodeshift": "^0.14.0",
85
86
  "just-scripts": "^1.3.3",
86
- "prettier": "2.8.8",
87
- "react": "19.2.0",
88
- "react-native": "0.83.0-rc.5",
89
- "react-native-platform-override": "0.83.0-preview.1",
87
+ "prettier": "^3.6.2",
88
+ "react": "19.2.3",
89
+ "react-native": "0.84.1",
90
+ "react-native-platform-override": "0.84.0-preview.1",
90
91
  "react-refresh": "^0.14.0",
91
92
  "typescript": "5.0.4"
92
93
  },
93
94
  "peerDependencies": {
94
95
  "@types/react": "^19.1.1",
95
- "react": "^19.2.0",
96
- "react-native": "0.83.0-rc.5"
96
+ "react": "^19.2.3",
97
+ "react-native": "0.84.1"
97
98
  },
98
99
  "beachball": {
99
100
  "defaultNpmTag": "preview",
@@ -17,6 +17,8 @@ import type {
17
17
  AnimatedNodeConfig,
18
18
  EventMapping,
19
19
  } from '../../../Libraries/Animated/NativeAnimatedModule';
20
+ import type {Spec as NativeAnimatedTurboModuleSpec} from '../../../Libraries/Animated/NativeAnimatedTurboModule';
21
+ import type {Node} from '../../../Libraries/Renderer/shims/ReactNativeTypes';
20
22
  import type {EventSubscription} from '../../../Libraries/vendor/emitter/EventEmitter';
21
23
 
22
24
  import NativeAnimatedNonTurboModule from '../../../Libraries/Animated/NativeAnimatedModule';
@@ -28,8 +30,17 @@ import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlag
28
30
  import invariant from 'invariant';
29
31
  import nullthrows from 'nullthrows';
30
32
 
33
+ interface NativeAnimatedModuleSpec extends NativeAnimatedTurboModuleSpec {
34
+ // connectAnimatedNodeToShadowNodeFamily is available only in NativeAnimatedNonTurboModule
35
+ +connectAnimatedNodeToShadowNodeFamily?: (
36
+ nodeTag: number,
37
+ // $FlowExpectedError[unclear-type].
38
+ shadowNode: Object,
39
+ ) => void;
40
+ }
41
+
31
42
  // TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.
32
- const NativeAnimatedModule: typeof NativeAnimatedTurboModule =
43
+ const NativeAnimatedModule: ?NativeAnimatedModuleSpec =
33
44
  NativeAnimatedNonTurboModule ?? NativeAnimatedTurboModule;
34
45
 
35
46
  let __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */
@@ -37,10 +48,10 @@ let __nativeAnimationIdCount = 1; /* used for started animations */
37
48
 
38
49
  let nativeEventEmitter;
39
50
 
40
- let waitingForQueuedOperations = new Set<string>();
51
+ const waitingForQueuedOperations = new Set<string>();
41
52
  let queueOperations = false;
42
- let queue: Array<() => void> = [];
43
- let singleOpQueue: Array<mixed> = [];
53
+ const queue: Array<() => void> = [];
54
+ const singleOpQueue: Array<unknown> = [];
44
55
 
45
56
  const isSingleOpBatching =
46
57
  Platform.OS === 'android' &&
@@ -60,7 +71,7 @@ let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;
60
71
  const shouldSignalBatch: boolean =
61
72
  ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
62
73
 
63
- function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
74
+ function createNativeOperations(): NonNullable<typeof NativeAnimatedModule> {
64
75
  const methodNames = [
65
76
  'createAnimatedNode', // 1
66
77
  'updateAnimatedNodeConfig', // 2
@@ -84,8 +95,15 @@ function createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {
84
95
  'addListener', // 20
85
96
  'removeListener', // 21
86
97
  ];
98
+ if (
99
+ ReactNativeFeatureFlags.cxxNativeAnimatedEnabled() &&
100
+ //eslint-disable-next-line
101
+ ReactNativeFeatureFlags.useSharedAnimatedBackend()
102
+ ) {
103
+ methodNames.push('connectAnimatedNodeToShadowNodeFamily');
104
+ }
87
105
  const nativeOperations: {
88
- [$Values<typeof methodNames>]: (...$ReadOnlyArray<mixed>) => void,
106
+ [$Values<typeof methodNames>]: (...$ReadOnlyArray<unknown>) => void,
89
107
  } = {};
90
108
  if (isSingleOpBatching) {
91
109
  for (let ii = 0, length = methodNames.length; ii < length; ii++) {
@@ -138,49 +156,35 @@ const NativeOperations = createNativeOperations();
138
156
  * the native module methods, and automatic queue management on Android
139
157
  */
140
158
  const API = {
141
- getValue: (isSingleOpBatching
142
- ? (tag, saveValueCallback) => {
143
- /* $FlowFixMe[constant-condition] Error discovered during Constant
144
- * Condition roll out. See https://fburl.com/workplace/1v97vimq. */
145
- if (saveValueCallback) {
146
- eventListenerGetValueCallbacks[tag] = saveValueCallback;
147
- }
148
- /* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled
149
- differently when `isSingleOpBatching` is enabled. */
150
- NativeOperations.getValue(tag);
151
- }
152
- : (tag, saveValueCallback) => {
153
- NativeOperations.getValue(tag, saveValueCallback);
154
- }) as $NonMaybeType<typeof NativeAnimatedModule>['getValue'],
155
-
156
- setWaitingForIdentifier(id: string): void {
157
- if (shouldSignalBatch) {
158
- return;
159
- }
160
-
161
- waitingForQueuedOperations.add(id);
162
- queueOperations = true;
163
- if (
164
- ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&
165
- flushQueueImmediate
166
- ) {
167
- clearImmediate(flushQueueImmediate);
168
- }
159
+ addAnimatedEventToView(
160
+ viewTag: number,
161
+ eventName: string,
162
+ eventMapping: EventMapping,
163
+ ) {
164
+ NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping);
169
165
  },
170
-
171
- unsetWaitingForIdentifier(id: string): void {
172
- if (shouldSignalBatch) {
173
- return;
174
- }
175
-
176
- waitingForQueuedOperations.delete(id);
177
-
178
- if (waitingForQueuedOperations.size === 0) {
179
- queueOperations = false;
180
- API.disableQueue();
166
+ connectAnimatedNodes(parentTag: number, childTag: number): void {
167
+ NativeOperations.connectAnimatedNodes(parentTag, childTag);
168
+ },
169
+ connectAnimatedNodeToShadowNodeFamily(
170
+ nodeTag: number,
171
+ shadowNode: Node,
172
+ ): void {
173
+ NativeOperations.connectAnimatedNodeToShadowNodeFamily?.(
174
+ nodeTag,
175
+ shadowNode,
176
+ );
177
+ },
178
+ connectAnimatedNodeToView(nodeTag: number, viewTag: number): void {
179
+ NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag);
180
+ },
181
+ createAnimatedNode(tag: number, config: AnimatedNodeConfig): void {
182
+ if (config.disableBatchingForNativeCreate) {
183
+ NativeAnimatedModule?.createAnimatedNode(tag, config);
184
+ } else {
185
+ NativeOperations.createAnimatedNode(tag, config);
181
186
  }
182
187
  },
183
-
184
188
  disableQueue(): void {
185
189
  invariant(NativeAnimatedModule, 'Native animated module is not available');
186
190
 
@@ -192,7 +196,21 @@ const API = {
192
196
  API.flushQueue();
193
197
  }
194
198
  },
195
-
199
+ disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void {
200
+ NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag);
201
+ },
202
+ disconnectAnimatedNodes(parentTag: number, childTag: number): void {
203
+ NativeOperations.disconnectAnimatedNodes(parentTag, childTag);
204
+ },
205
+ dropAnimatedNode(tag: number): void {
206
+ NativeOperations.dropAnimatedNode(tag);
207
+ },
208
+ extractAnimatedNodeOffset(nodeTag: number): void {
209
+ NativeOperations.extractAnimatedNodeOffset(nodeTag);
210
+ },
211
+ flattenAnimatedNodeOffset(nodeTag: number): void {
212
+ NativeOperations.flattenAnimatedNodeOffset(nodeTag);
213
+ },
196
214
  flushQueue: (isSingleOpBatching
197
215
  ? (): void => {
198
216
  invariant(
@@ -239,35 +257,54 @@ const API = {
239
257
  NativeAnimatedModule?.finishOperationBatch?.();
240
258
  }
241
259
  }) as () => void,
242
-
243
- createAnimatedNode(tag: number, config: AnimatedNodeConfig): void {
244
- if (config.disableBatchingForNativeCreate) {
245
- NativeAnimatedModule?.createAnimatedNode(tag, config);
246
- } else {
247
- NativeOperations.createAnimatedNode(tag, config);
248
- }
249
- },
250
-
251
- updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void {
252
- NativeOperations.updateAnimatedNodeConfig?.(tag, config);
260
+ getValue: (isSingleOpBatching
261
+ ? (tag, saveValueCallback) => {
262
+ /* $FlowFixMe[constant-condition] Error discovered during Constant
263
+ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */
264
+ if (saveValueCallback) {
265
+ eventListenerGetValueCallbacks[tag] = saveValueCallback;
266
+ }
267
+ /* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled
268
+ differently when `isSingleOpBatching` is enabled. */
269
+ NativeOperations.getValue(tag);
270
+ }
271
+ : (tag, saveValueCallback) => {
272
+ NativeOperations.getValue(tag, saveValueCallback);
273
+ }) as NonNullable<typeof NativeAnimatedModule>['getValue'],
274
+ removeAnimatedEventFromView(
275
+ viewTag: number,
276
+ eventName: string,
277
+ animatedNodeTag: number,
278
+ ) {
279
+ NativeOperations.removeAnimatedEventFromView(
280
+ viewTag,
281
+ eventName,
282
+ animatedNodeTag,
283
+ );
253
284
  },
254
-
255
- startListeningToAnimatedNodeValue(tag: number): void {
256
- NativeOperations.startListeningToAnimatedNodeValue(tag);
285
+ restoreDefaultValues(nodeTag: number): void {
286
+ NativeOperations.restoreDefaultValues?.(nodeTag);
257
287
  },
258
-
259
- stopListeningToAnimatedNodeValue(tag: number): void {
260
- NativeOperations.stopListeningToAnimatedNodeValue(tag);
288
+ setAnimatedNodeOffset(nodeTag: number, offset: number): void {
289
+ NativeOperations.setAnimatedNodeOffset(nodeTag, offset);
261
290
  },
262
-
263
- connectAnimatedNodes(parentTag: number, childTag: number): void {
264
- NativeOperations.connectAnimatedNodes(parentTag, childTag);
291
+ setAnimatedNodeValue(nodeTag: number, value: number): void {
292
+ NativeOperations.setAnimatedNodeValue(nodeTag, value);
265
293
  },
294
+ setWaitingForIdentifier(id: string): void {
295
+ if (shouldSignalBatch) {
296
+ return;
297
+ }
266
298
 
267
- disconnectAnimatedNodes(parentTag: number, childTag: number): void {
268
- NativeOperations.disconnectAnimatedNodes(parentTag, childTag);
299
+ waitingForQueuedOperations.add(id);
300
+ queueOperations = true;
301
+ if (
302
+ ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&
303
+ flushQueueImmediate
304
+ ) {
305
+ clearImmediate(flushQueueImmediate);
306
+ }
269
307
  },
270
-
271
308
  startAnimatingNode: (isSingleOpBatching
272
309
  ? (animationId, nodeTag, config, endCallback) => {
273
310
  /* $FlowFixMe[constant-condition] Error discovered during Constant
@@ -286,62 +323,30 @@ const API = {
286
323
  config,
287
324
  endCallback,
288
325
  );
289
- }) as $NonMaybeType<typeof NativeAnimatedModule>['startAnimatingNode'],
290
-
326
+ }) as NonNullable<typeof NativeAnimatedModule>['startAnimatingNode'],
327
+ startListeningToAnimatedNodeValue(tag: number): void {
328
+ NativeOperations.startListeningToAnimatedNodeValue(tag);
329
+ },
291
330
  stopAnimation(animationId: number) {
292
331
  NativeOperations.stopAnimation(animationId);
293
332
  },
294
-
295
- setAnimatedNodeValue(nodeTag: number, value: number): void {
296
- NativeOperations.setAnimatedNodeValue(nodeTag, value);
297
- },
298
-
299
- setAnimatedNodeOffset(nodeTag: number, offset: number): void {
300
- NativeOperations.setAnimatedNodeOffset(nodeTag, offset);
301
- },
302
-
303
- flattenAnimatedNodeOffset(nodeTag: number): void {
304
- NativeOperations.flattenAnimatedNodeOffset(nodeTag);
305
- },
306
-
307
- extractAnimatedNodeOffset(nodeTag: number): void {
308
- NativeOperations.extractAnimatedNodeOffset(nodeTag);
309
- },
310
-
311
- connectAnimatedNodeToView(nodeTag: number, viewTag: number): void {
312
- NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag);
313
- },
314
-
315
- disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void {
316
- NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag);
317
- },
318
-
319
- restoreDefaultValues(nodeTag: number): void {
320
- NativeOperations.restoreDefaultValues?.(nodeTag);
333
+ stopListeningToAnimatedNodeValue(tag: number): void {
334
+ NativeOperations.stopListeningToAnimatedNodeValue(tag);
321
335
  },
336
+ unsetWaitingForIdentifier(id: string): void {
337
+ if (shouldSignalBatch) {
338
+ return;
339
+ }
322
340
 
323
- dropAnimatedNode(tag: number): void {
324
- NativeOperations.dropAnimatedNode(tag);
325
- },
341
+ waitingForQueuedOperations.delete(id);
326
342
 
327
- addAnimatedEventToView(
328
- viewTag: number,
329
- eventName: string,
330
- eventMapping: EventMapping,
331
- ) {
332
- NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping);
343
+ if (waitingForQueuedOperations.size === 0) {
344
+ queueOperations = false;
345
+ API.disableQueue();
346
+ }
333
347
  },
334
-
335
- removeAnimatedEventFromView(
336
- viewTag: number,
337
- eventName: string,
338
- animatedNodeTag: number,
339
- ) {
340
- NativeOperations.removeAnimatedEventFromView(
341
- viewTag,
342
- eventName,
343
- animatedNodeTag,
344
- );
348
+ updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void {
349
+ NativeOperations.updateAnimatedNodeConfig?.(tag, config);
345
350
  },
346
351
  };
347
352
 
@@ -401,7 +406,7 @@ function assertNativeAnimatedModule(): void {
401
406
  let _warnedMissingNativeAnimated = false;
402
407
 
403
408
  function shouldUseNativeDriver(
404
- config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<mixed>,
409
+ config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<unknown>,
405
410
  ): boolean {
406
411
  if (config.useNativeDriver == null) {
407
412
  console.warn(
@@ -449,12 +454,9 @@ function transformDataType(value: number | string): number | string {
449
454
 
450
455
  export default {
451
456
  API,
452
- generateNewNodeTag,
453
- generateNewAnimationId,
454
457
  assertNativeAnimatedModule,
455
- shouldUseNativeDriver,
456
- shouldSignalBatch,
457
- transformDataType,
458
+ generateNewAnimationId,
459
+ generateNewNodeTag,
458
460
  // $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppression
459
461
  // $FlowExpectedError[missing-type-arg] - unsafe getter lint suppression
460
462
  get nativeEventEmitter(): NativeEventEmitter {
@@ -468,4 +470,7 @@ export default {
468
470
  }
469
471
  return nativeEventEmitter;
470
472
  },
473
+ shouldSignalBatch,
474
+ shouldUseNativeDriver,
475
+ transformDataType,
471
476
  };
@@ -8,7 +8,10 @@
8
8
  * @format
9
9
  */
10
10
 
11
- import type {InterpolationConfigType} from '../../../Libraries/Animated/nodes/AnimatedInterpolation';
11
+ import type {
12
+ InterpolationConfigSupportedOutputType,
13
+ InterpolationConfigType,
14
+ } from '../../../Libraries/Animated/nodes/AnimatedInterpolation';
12
15
 
13
16
  import {
14
17
  isSupportedInterpolationParam,
@@ -16,9 +19,9 @@ import {
16
19
  isSupportedTransformProp,
17
20
  } from '../../../Libraries/Animated/NativeAnimatedAllowlist';
18
21
 
19
- export function validateInterpolation<OutputT: number | string>(
20
- config: InterpolationConfigType<OutputT>,
21
- ): void {
22
+ export function validateInterpolation<
23
+ OutputT: InterpolationConfigSupportedOutputType,
24
+ >(config: InterpolationConfigType<OutputT>): void {
22
25
  for (const key in config) {
23
26
  if (key !== 'debugID' && !isSupportedInterpolationParam(key)) {
24
27
  console.error(
@@ -15,12 +15,14 @@ import AnimatedNode from '../../../Libraries/Animated/nodes/AnimatedNode';
15
15
  import AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';
16
16
  import AnimatedValue from '../../../Libraries/Animated/nodes/AnimatedValue';
17
17
  import {isPublicInstance as isFabricPublicInstance} from '../../../Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';
18
+ import {RootTagContext} from '../../../Libraries/ReactNative/RootTag';
18
19
  import useRefEffect from '../../../Libraries/Utilities/useRefEffect';
19
20
  import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags';
20
21
  import {createAnimatedPropsMemoHook} from './createAnimatedPropsMemoHook';
21
22
  import NativeAnimatedHelper from './NativeAnimatedHelper';
22
23
  import {
23
24
  useCallback,
25
+ useContext,
24
26
  useEffect,
25
27
  useInsertionEffect,
26
28
  useReducer,
@@ -32,7 +34,7 @@ type ReducedProps<TProps> = {
32
34
  collapsable: boolean,
33
35
  ...
34
36
  };
35
- type CallbackRef<T> = T => mixed;
37
+ type CallbackRef<T> = T => unknown;
36
38
 
37
39
  export type AnimatedPropsHook = <TProps: {...}, TInstance>(
38
40
  props: TProps,
@@ -60,8 +62,16 @@ export default function createAnimatedPropsHook(
60
62
  const onUpdateRef = useRef<UpdateCallback | null>(null);
61
63
  const timerRef = useRef<TimeoutID | null>(null);
62
64
 
65
+ const rootTag = useContext(RootTagContext);
66
+
63
67
  const node = useAnimatedPropsMemo(
64
- () => new AnimatedProps(props, () => onUpdateRef.current?.(), allowlist),
68
+ () =>
69
+ new AnimatedProps(
70
+ props,
71
+ () => onUpdateRef.current?.(),
72
+ allowlist,
73
+ rootTag,
74
+ ),
65
75
  props,
66
76
  );
67
77
 
@@ -126,9 +136,7 @@ export default function createAnimatedPropsHook(
126
136
  // Check 2: this is an animation driven by native.
127
137
  // In native driven animations, this callback is only called once the animation completes.
128
138
  const shouldRemoveJsSync =
129
- ReactNativeFeatureFlags.cxxNativeAnimatedEnabled() &&
130
- !ReactNativeFeatureFlags.disableFabricCommitInCXXAnimated() &&
131
- ReactNativeFeatureFlags.cxxNativeAnimatedRemoveJsSync();
139
+ ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();
132
140
  if (isFabricNode && !shouldRemoveJsSync) {
133
141
  // Call `scheduleUpdate` to synchronise Fiber and Shadow tree.
134
142
  // Must not be called in Paper.
@@ -24,8 +24,8 @@ type CompositeKey = {
24
24
  [string]:
25
25
  | CompositeKeyComponent
26
26
  | AnimatedEvent
27
- | $ReadOnlyArray<mixed>
28
- | $ReadOnly<{[string]: mixed}>,
27
+ | $ReadOnlyArray<unknown>
28
+ | $ReadOnly<{[string]: unknown}>,
29
29
  };
30
30
 
31
31
  type CompositeKeyComponent =
@@ -38,8 +38,8 @@ type $ReadOnlyCompositeKey = $ReadOnly<{
38
38
  [string]:
39
39
  | $ReadOnlyCompositeKeyComponent
40
40
  | AnimatedEvent
41
- | $ReadOnlyArray<mixed>
42
- | $ReadOnly<{[string]: mixed}>,
41
+ | $ReadOnlyArray<unknown>
42
+ | $ReadOnly<{[string]: unknown}>,
43
43
  }>;
44
44
 
45
45
  type $ReadOnlyCompositeKeyComponent =
@@ -49,7 +49,7 @@ type $ReadOnlyCompositeKeyComponent =
49
49
 
50
50
  type AnimatedPropsMemoHook = (
51
51
  () => AnimatedProps,
52
- props: $ReadOnly<{[string]: mixed}>,
52
+ props: $ReadOnly<{[string]: unknown}>,
53
53
  ) => AnimatedProps;
54
54
 
55
55
  /**
@@ -62,7 +62,7 @@ export function createAnimatedPropsMemoHook(
62
62
  ): AnimatedPropsMemoHook {
63
63
  return function useAnimatedPropsMemo(
64
64
  create: () => AnimatedProps,
65
- props: $ReadOnly<{[string]: mixed}>,
65
+ props: $ReadOnly<{[string]: unknown}>,
66
66
  ): AnimatedProps {
67
67
  const compositeKey = useMemo(
68
68
  () => createCompositeKeyForProps(props, allowlist),
@@ -107,7 +107,7 @@ export function createAnimatedPropsMemoHook(
107
107
  * returns null.
108
108
  */
109
109
  export function createCompositeKeyForProps(
110
- props: $ReadOnly<{[string]: mixed}>,
110
+ props: $ReadOnly<{[string]: unknown}>,
111
111
  allowlist: ?AnimatedPropsAllowlist,
112
112
  ): $ReadOnlyCompositeKey | null {
113
113
  let compositeKey: CompositeKey | null = null;
@@ -122,7 +122,7 @@ export function createCompositeKeyForProps(
122
122
  if (key === 'style') {
123
123
  // $FlowFixMe[incompatible-call] - `style` is a valid argument.
124
124
  // $FlowFixMe[incompatible-type] - `flattenStyle` returns an object.
125
- const flatStyle: ?{[string]: mixed} = flattenStyle(value);
125
+ const flatStyle: ?{[string]: unknown} = flattenStyle(value);
126
126
  if (flatStyle != null) {
127
127
  compositeKeyComponent = createCompositeKeyForObject(
128
128
  flatStyle,
@@ -160,7 +160,7 @@ export function createCompositeKeyForProps(
160
160
  * If `array` contains no `AnimatedNode` instances, this returns null.
161
161
  */
162
162
  function createCompositeKeyForArray(
163
- array: $ReadOnlyArray<mixed>,
163
+ array: $ReadOnlyArray<unknown>,
164
164
  ): $ReadOnlyArray<$ReadOnlyCompositeKeyComponent | null> | null {
165
165
  let compositeKey: Array<$ReadOnlyCompositeKeyComponent | null> | null = null;
166
166
 
@@ -200,7 +200,7 @@ function createCompositeKeyForArray(
200
200
  * If `object` contains no `AnimatedNode` instances, this returns null.
201
201
  */
202
202
  function createCompositeKeyForObject(
203
- object: $ReadOnly<{[string]: mixed}>,
203
+ object: $ReadOnly<{[string]: unknown}>,
204
204
  allowlist?: ?AnimatedStyleAllowlist,
205
205
  ): $ReadOnly<{[string]: $ReadOnlyCompositeKeyComponent}> | null {
206
206
  let compositeKey: {[string]: $ReadOnlyCompositeKeyComponent} | null = null;