diff --git a/change/@office-iss-react-native-win32-e0a741ae-8e95-437c-bb6c-9f0d48f97890.json b/change/@office-iss-react-native-win32-e0a741ae-8e95-437c-bb6c-9f0d48f97890.json new file mode 100644 index 00000000000..43449904e6f --- /dev/null +++ b/change/@office-iss-react-native-win32-e0a741ae-8e95-437c-bb6c-9f0d48f97890.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.84.0-nightly-20260107-58bc6c3e3", + "packageName": "@office-iss/react-native-win32", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-5fd6d0d3-4797-4b08-bd29-7a44d808a9bc.json b/change/@react-native-windows-automation-channel-5fd6d0d3-4797-4b08-bd29-7a44d808a9bc.json new file mode 100644 index 00000000000..585cf600cb6 --- /dev/null +++ b/change/@react-native-windows-automation-channel-5fd6d0d3-4797-4b08-bd29-7a44d808a9bc.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.84.0-nightly-20260107-58bc6c3e3", + "packageName": "@react-native-windows/automation-channel", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-perf-testing-e5f0f8a0-71aa-451a-b388-29cce4fe5c3a.json b/change/@react-native-windows-perf-testing-e5f0f8a0-71aa-451a-b388-29cce4fe5c3a.json new file mode 100644 index 00000000000..fc50752f574 --- /dev/null +++ b/change/@react-native-windows-perf-testing-e5f0f8a0-71aa-451a-b388-29cce4fe5c3a.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.84.0-nightly-20260107-58bc6c3e3", + "packageName": "@react-native-windows/perf-testing", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-0031685a-829e-4d8c-b182-45fff7e2336d.json b/change/react-native-windows-0031685a-829e-4d8c-b182-45fff7e2336d.json new file mode 100644 index 00000000000..624c60089f9 --- /dev/null +++ b/change/react-native-windows-0031685a-829e-4d8c-b182-45fff7e2336d.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.84.0-nightly-20260107-58bc6c3e3", + "packageName": "react-native-windows", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/package.json b/package.json index 1f7052d2cb3..4bf7b7d03dc 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "lodash": "^4.17.15" }, "resolutions": { - "react": "19.2.0", + "react": "19.2.3", "convert-source-map": "^2.0.0", "kind-of": "6.0.3", "glob-parent": "^5.1.2", diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index fa6e44d6503..da88374e9f6 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "patch", diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index 1e904b02c5d..6197bda9757 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -11,15 +11,15 @@ "validate-overrides": "react-native-platform-override validate" }, "dependencies": { - "@react-native/tester": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/tester": "0.84.0-nightly-20260107-58bc6c3e3", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "flow-enums-runtime": "^0.0.6" }, "peerDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.309", - "react": "19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe" + "react": "19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3" }, "devDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.309", @@ -30,11 +30,11 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-platform-override": "0.0.0-canary.1021", "typescript": "5.0.4" }, "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index 1ac0ebdeaa7..e9a3ecc4210 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -175,4 +175,4 @@ untyped-import untyped-type-import [version] -^0.293.0 +^0.295.0 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 24300baad9b..5f733c4f0b3 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,13 +7,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "f8443da42da65a4f55de1fdcc8e30c3446004ad0" + "baseHash": "49be0404a6bbdf103616a7506ad8a27874048119" }, { "type": "derived", @@ -47,7 +47,7 @@ "type": "derived", "file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js", "baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js", - "baseHash": "86b1d5f06946b43428b2b09351ab6a0cff56a894" + "baseHash": "c0c7037e52d48caae88cffaac7f60d4dd1c32b3e" }, { "type": "copy", @@ -66,7 +66,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Button.win32.js", "baseFile": "packages/react-native/Libraries/Components/Button.js", - "baseHash": "67bb8c4e71cd242d366b3607f4c71f07e70f2488" + "baseHash": "ef86e2343f5213a5f230c63a1ddf12cbe6fa946c" }, { "type": "platform", @@ -91,7 +91,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Pressable/Pressable.win32.js", "baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js", - "baseHash": "08a6e1c0dd895af70ea1c8448a3be028d9cd2587", + "baseHash": "b8d87e48400468e702509ad24dab05f0a492aa19", "issue": 6240 }, { @@ -114,13 +114,13 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.flow.win32.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.flow.js", - "baseHash": "c3e71a2dbba8e4dd45a34c0c21327aa36d79a1b1" + "baseHash": "e36bacf69caef9e59e1f62f9ee4335c6879ef0ed" }, { "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.win32.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "f037eaadc2960fb8d1e935c635116c8ebc702a8c" + "baseHash": "cc397bb3c850bb0a02f4b3134fdcbc2d9b597b80" }, { "type": "patch", @@ -159,7 +159,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js", - "baseHash": "2ded2efb727d7544aa8a0b249dd3f2502bb57129" + "baseHash": "d48f21572fc72cf6d79df5aac775fb67d4f1abb4" }, { "type": "platform", @@ -207,7 +207,7 @@ "type": "patch", "file": "src-win/Libraries/Components/View/ViewPropTypes.win32.js", "baseFile": "packages/react-native/Libraries/Components/View/ViewPropTypes.js", - "baseHash": "2a031cb660382c3ebb74fcbfe71535fa99810cdb", + "baseHash": "3f85fd36b8c098a91f965e9150e53d77ff3aa432", "issue": 6240 }, { @@ -224,7 +224,7 @@ "type": "patch", "file": "src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js", "baseFile": "packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js", - "baseHash": "5177ecc736e9bebd4e798dcc2c6dd19c38b0a937", + "baseHash": "920db91a9af73d35420692d31beb1e4a8e068ff1", "issue": 12704 }, { @@ -242,7 +242,7 @@ "type": "derived", "file": "src-win/Libraries/Image/Image.win32.js", "baseFile": "packages/react-native/Libraries/Image/Image.ios.js", - "baseHash": "be81d302b8f2d64ddf7a52bd30fbcb47d18741b5", + "baseHash": "e52a6144ed3241e1e31e87292536908f8088d9c0", "issue": 4320 }, { @@ -341,7 +341,7 @@ "type": "copy", "file": "src-win/Libraries/Network/RCTNetworking.win32.js", "baseFile": "packages/react-native/Libraries/Network/RCTNetworking.ios.js", - "baseHash": "f1afed4408683b8e6a2b66ab88bb873aa5f81696", + "baseHash": "6cc93d00e1b6f541d08102cdc5363184f7ed6025", "issue": 4318 }, { @@ -371,7 +371,7 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.win32.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "a4205b3bea276e65da3ce0aeb6753bc8e7c5ead0", + "baseHash": "10801e10120946aa4c721d13f3b8f455d0f43db8", "issue": 6240 }, { @@ -394,13 +394,13 @@ "type": "patch", "file": "src-win/Libraries/ReactNative/PaperUIManager.win32.js", "baseFile": "packages/react-native/Libraries/ReactNative/PaperUIManager.js", - "baseHash": "7a14c3d42ba7442848bd90329f6d31bda323c6d4" + "baseHash": "2c0076cc934fffa7c0a91721ee4268584289c6ec" }, { "type": "patch", "file": "src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js", "baseFile": "packages/react-native/Libraries/Renderer/shims/ReactNativeTypes.js", - "baseHash": "333afc05f5a42a5321196f5f7a14d14c8fd5dd0f", + "baseHash": "41da351b1e8d090e5ecf0859738218a5dcd4c08f", "issue": 0 }, { @@ -431,20 +431,20 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.win32.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "d6607b86327891c5920c56ff833a9d984f20533f" + "baseHash": "914f50544d09bc3bfe2ea3e34951e47e52d2dd87" }, { "type": "derived", "file": "src-win/Libraries/Text/TextNativeComponent.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js", - "baseHash": "56a99244e10bd1833a3d048f2476c4500f59202d", + "baseHash": "e1c95809fd0819c130f77dc2a61399b01b5dd687", "issue": 7074 }, { "type": "derived", "file": "src-win/Libraries/Text/TextProps.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextProps.js", - "baseHash": "7ee3be32c351343aa65a3fd12e568265bb788d9f" + "baseHash": "ddeedf097aec999824c4e9d246fdf6fefd61dc76" }, { "type": "patch", @@ -503,7 +503,7 @@ "type": "patch", "file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js", "baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js", - "baseHash": "fa2343be98b0eb239a82376cd903f9fef16464f2", + "baseHash": "90277c8c54231153433c8e5ef9d0478a41a9138c", "issue": 11041 }, { diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index 1edb7991286..e95b5cce4ed 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -30,13 +30,13 @@ "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/codegen": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/community-cli-plugin": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/gradle-plugin": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/js-polyfills": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/normalize-colors": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/virtualized-lists": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/assets-registry": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/codegen": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/community-cli-plugin": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/gradle-plugin": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/js-polyfills": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/normalize-colors": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/virtualized-lists": "0.84.0-nightly-20260107-58bc6c3e3", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -74,7 +74,7 @@ "devDependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42", @@ -84,21 +84,21 @@ "@rnx-kit/jest-preset": "^0.3.1", "@types/node": "^22.0.0", "@types/prop-types": "15.7.1", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "eslint": "^8.19.0", - "flow-bin": "^0.293.0", + "flow-bin": "^0.295.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "^3.6.2", - "react": "19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-platform-override": "0.0.0-canary.1021", "typescript": "5.0.4" }, "peerDependencies": { - "@types/react": "^19.2.0", - "react": "^19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe" + "@types/react": "^19.2.3", + "react": "^19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3" }, "beachball": { "defaultNpmTag": "canary", @@ -127,4 +127,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js index ef908846b00..d6c48a728f9 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js @@ -44,7 +44,11 @@ type AccessibilityEventDefinitions = { screenReaderChanged: [boolean], }; -type AccessibilityEventTypes = 'click' | 'focus' | 'viewHoverEnter'; +type AccessibilityEventTypes = + | 'click' + | 'focus' + | 'viewHoverEnter' + | 'windowStateChange'; // Mapping of public event names to platform-specific event names. const EventNames: Map< @@ -462,6 +466,8 @@ const AccessibilityInfo = { * Set accessibility focus to a React component. * * See https://reactnative.dev/docs/accessibilityinfo#setaccessibilityfocus + * + * @deprecated Use `sendAccessibilityEvent` with eventType `focus` instead. */ setAccessibilityFocus(reactTag: number): void { legacySendAccessibilityEvent(reactTag, 'focus'); diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js index 05cf60822f3..e80c74f4c4e 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Button.win32.js @@ -39,7 +39,7 @@ export type ButtonProps = $ReadOnly<{ Handler to be called when the user taps the button. The first function argument is an event in form of [GestureResponderEvent](pressevent). */ - onPress?: (event?: GestureResponderEvent) => mixed, + onPress?: (event?: GestureResponderEvent) => unknown, /** If `true`, doesn't play system sound on touch. @@ -149,7 +149,7 @@ export type ButtonProps = $ReadOnly<{ */ accessible?: ?boolean, accessibilityActions?: ?$ReadOnlyArray, - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, accessibilityState?: ?AccessibilityState, /** diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js index 7fcadfcf16a..21ec9dac9ed 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Pressable/Pressable.win32.js @@ -87,41 +87,41 @@ type PressableBaseProps = $ReadOnly<{ /** * Called when this view's layout changes. */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * Called when the hover is activated to provide visual feedback. */ - onHoverIn?: ?(event: MouseEvent) => mixed, + onHoverIn?: ?(event: MouseEvent) => unknown, /** * Called when the hover is deactivated to undo visual feedback. */ - onHoverOut?: ?(event: MouseEvent) => mixed, + onHoverOut?: ?(event: MouseEvent) => unknown, /** * Called when a long-tap gesture is detected. */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a single tap gesture is detected. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is engaged before `onPress`. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press location moves. */ - onPressMove?: ?(event: GestureResponderEvent) => mixed, + onPressMove?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is released before `onPress`. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Whether to prevent any other native components from becoming responder diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.flow.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.flow.win32.js index 55e1bab28af..aa586528bb1 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.flow.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.flow.win32.js @@ -842,18 +842,18 @@ type TextInputBaseProps = $ReadOnly<{ /** * Callback that is called when the text input is blurred. */ - onBlur?: ?(e: TextInputBlurEvent) => mixed, + onBlur?: ?(e: TextInputBlurEvent) => unknown, /** * Callback that is called when the text input's text changes. */ - onChange?: ?(e: TextInputChangeEvent) => mixed, + onChange?: ?(e: TextInputChangeEvent) => unknown, /** * Callback that is called when the text input's text changes. * Changed text is passed as an argument to the callback handler. */ - onChangeText?: ?(text: string) => mixed, + onChangeText?: ?(text: string) => unknown, /** * Callback that is called when the text input's content size changes. @@ -862,17 +862,17 @@ type TextInputBaseProps = $ReadOnly<{ * * Only called for multiline text inputs. */ - onContentSizeChange?: ?(e: TextInputContentSizeChangeEvent) => mixed, + onContentSizeChange?: ?(e: TextInputContentSizeChangeEvent) => unknown, /** * Callback that is called when text input ends. */ - onEndEditing?: ?(e: TextInputEndEditingEvent) => mixed, + onEndEditing?: ?(e: TextInputEndEditingEvent) => unknown, /** * Callback that is called when the text input is focused. */ - onFocus?: ?(e: TextInputFocusEvent) => mixed, + onFocus?: ?(e: TextInputFocusEvent) => unknown, /** * Callback that is called when a key is pressed. @@ -881,42 +881,42 @@ type TextInputBaseProps = $ReadOnly<{ * the typed-in character otherwise including `' '` for space. * Fires before `onChange` callbacks. */ - onKeyPress?: ?(e: TextInputKeyPressEvent) => mixed, + onKeyPress?: ?(e: TextInputKeyPressEvent) => unknown, /** * Called when a single tap gesture is detected. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is engaged. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is released. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Callback that is called when the text input selection is changed. * This will be called with * `{ nativeEvent: { selection: { start, end } } }`. */ - onSelectionChange?: ?(e: TextInputSelectionChangeEvent) => mixed, + onSelectionChange?: ?(e: TextInputSelectionChangeEvent) => unknown, /** * Callback that is called when the text input's submit button is pressed. * Invalid if `multiline={true}` is specified. */ - onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => mixed, + onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => unknown, /** * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`. * May also contain other properties from ScrollEvent but on Android contentSize * is not provided for performance reasons. */ - onScroll?: ?(e: ScrollEvent) => mixed, + onScroll?: ?(e: ScrollEvent) => unknown, /** * The string that will be rendered before text input has been entered. diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js index 9e9913ac072..706c39e0f55 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js @@ -162,7 +162,7 @@ type TextInputStateType = $ReadOnly<{ blurTextInput: (textField: ?HostInstance) => void, }>; -type ViewCommands = $NonMaybeType< +type ViewCommands = NonNullable< | typeof AndroidTextInputCommands | typeof RCTMultilineTextInputNativeCommands | typeof RCTSinglelineTextInputNativeCommands, @@ -201,8 +201,8 @@ function useTextInputStateSynchronization({ const [lastNativeText, setLastNativeText] = useState(props.value); const [lastNativeSelectionState, setLastNativeSelection] = useState({ - selection: {start: -1, end: -1}, - mostRecentEventCount: mostRecentEventCount, + mostRecentEventCount, + selection: {end: -1, start: -1}, }); const lastNativeSelection = lastNativeSelectionState.selection; @@ -225,7 +225,7 @@ function useTextInputStateSynchronization({ lastNativeSelection.end !== selection.end) ) { nativeUpdate.selection = selection; - setLastNativeSelection({selection, mostRecentEventCount}); + setLastNativeSelection({mostRecentEventCount, selection}); } if (Object.keys(nativeUpdate).length === 0) { @@ -253,7 +253,7 @@ function useTextInputStateSynchronization({ viewCommands, ]); - return {setLastNativeText, setLastNativeSelection}; + return {setLastNativeSelection, setLastNativeText}; } /** @@ -392,8 +392,8 @@ function InternalTextInput(props: TextInputProps): React.Node { propsSelection == null ? null : { - start: propsSelection.start, end: propsSelection.end ?? propsSelection.start, + start: propsSelection.start, }; const text = @@ -413,9 +413,9 @@ function InternalTextInput(props: TextInputProps): React.Node { const [mostRecentEventCount, setMostRecentEventCount] = useState(0); const {setLastNativeText, setLastNativeSelection} = useTextInputStateSynchronization({ - props, inputRef, mostRecentEventCount, + props, selection, text, // $FlowFixMe[incompatible-call] @@ -486,6 +486,10 @@ function InternalTextInput(props: TextInputProps): React.Node { ); } }, + getNativeRef(): ?TextInputInstance { + return inputRef.current; + }, + // TODO: Fix this returning true on null === null, when no input is focused isFocused(): boolean { const currentlyFocusedInput = TextInputState.currentlyFocusedInput(); @@ -494,9 +498,6 @@ function InternalTextInput(props: TextInputProps): React.Node { currentlyFocusedInput === inputRef.current ); }, - getNativeRef(): ?TextInputInstance { - return inputRef.current; - }, setSelection(start: number, end: number): void { if (inputRef.current != null) { viewCommands.setTextAndSelection( @@ -546,8 +547,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } setLastNativeSelection({ - selection: event.nativeEvent.selection, mostRecentEventCount, + selection: event.nativeEvent.selection, }); }; @@ -617,6 +618,7 @@ function InternalTextInput(props: TextInputProps): React.Node { const config = useMemo( () => ({ + cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null, hitSlop, onPress: (event: GestureResponderEvent) => { onPress?.(event); @@ -626,9 +628,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } } }, - onPressIn: onPressIn, - onPressOut: onPressOut, - cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null, + onPressIn, + onPressOut, }), [ editable, @@ -848,12 +849,12 @@ function InternalTextInput(props: TextInputProps): React.Node { } // For consistency with iOS set cursor/selectionHandle color as selectionColor const colorProps = { + cursorColor: cursorColor === undefined ? selectionColor : cursorColor, selectionColor, selectionHandleColor: selectionHandleColor === undefined ? selectionColor : selectionHandleColor, - cursorColor: cursorColor === undefined ? selectionColor : cursorColor, }; textInput = ( /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match up @@ -935,8 +936,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } const enterKeyHintToReturnTypeMap = { - enter: 'default', done: 'done', + enter: 'default', go: 'go', next: 'next', previous: 'previous', @@ -945,19 +946,20 @@ const enterKeyHintToReturnTypeMap = { } as const; const inputModeToKeyboardTypeMap = { - none: 'default', - text: 'default', decimal: 'decimal-pad', + email: 'email-address', + none: 'default', numeric: 'number-pad', - tel: 'phone-pad', search: Platform.OS === 'ios' ? ('web-search' as const) : ('default' as const), - email: 'email-address', + tel: 'phone-pad', + text: 'default', url: 'url', } as const; // Map HTML autocomplete values to Android autoComplete values const autoCompleteWebToAutoCompleteAndroidMap = { + 'additional-name': 'name-middle', 'address-line1': 'postal-address-region', 'address-line2': 'postal-address-locality', bday: 'birthdate-full', @@ -972,12 +974,11 @@ const autoCompleteWebToAutoCompleteAndroidMap = { country: 'postal-address-country', 'current-password': 'password', email: 'email', + 'family-name': 'name-family', + 'given-name': 'name-given', 'honorific-prefix': 'name-prefix', 'honorific-suffix': 'name-suffix', name: 'name', - 'additional-name': 'name-middle', - 'family-name': 'name-family', - 'given-name': 'name-given', 'new-password': 'password-new', off: 'off', 'one-time-code': 'sms-otp', @@ -992,33 +993,33 @@ const autoCompleteWebToAutoCompleteAndroidMap = { // Map HTML autocomplete values to iOS textContentType values const autoCompleteWebToTextContentTypeMap = { + 'additional-name': 'middleName', 'address-line1': 'streetAddressLine1', 'address-line2': 'streetAddressLine2', bday: 'birthdate', 'bday-day': 'birthdateDay', 'bday-month': 'birthdateMonth', 'bday-year': 'birthdateYear', + 'cc-additional-name': 'creditCardMiddleName', 'cc-csc': 'creditCardSecurityCode', + 'cc-exp': 'creditCardExpiration', 'cc-exp-month': 'creditCardExpirationMonth', 'cc-exp-year': 'creditCardExpirationYear', - 'cc-exp': 'creditCardExpiration', - 'cc-given-name': 'creditCardGivenName', - 'cc-additional-name': 'creditCardMiddleName', 'cc-family-name': 'creditCardFamilyName', + 'cc-given-name': 'creditCardGivenName', 'cc-name': 'creditCardName', 'cc-number': 'creditCardNumber', 'cc-type': 'creditCardType', - 'current-password': 'password', country: 'countryName', + 'current-password': 'password', email: 'emailAddress', - name: 'name', - 'additional-name': 'middleName', 'family-name': 'familyName', 'given-name': 'givenName', - nickname: 'nickname', 'honorific-prefix': 'namePrefix', 'honorific-suffix': 'nameSuffix', + name: 'name', 'new-password': 'newPassword', + nickname: 'nickname', off: 'none', 'one-time-code': 'oneTimeCode', organization: 'organizationName', @@ -1095,11 +1096,10 @@ TextInput.displayName = 'TextInput'; // $FlowFixMe[prop-missing] TextInput.State = { - currentlyFocusedInput: TextInputState.currentlyFocusedInput, - + blurTextInput: TextInputState.blurTextInput, currentlyFocusedField: TextInputState.currentlyFocusedField, + currentlyFocusedInput: TextInputState.currentlyFocusedInput, focusTextInput: TextInputState.focusTextInput, - blurTextInput: TextInputState.blurTextInput, }; export type TextInputComponentStatics = $ReadOnly<{ @@ -1117,9 +1117,9 @@ const styles = StyleSheet.create({ const verticalAlignToTextAlignVerticalMap = { auto: 'auto', - top: 'top', bottom: 'bottom', middle: 'center', + top: 'top', } as const; // $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe. diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js index 8940c9bb37c..19e791a4090 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.win32.js @@ -293,7 +293,7 @@ class TouchableNativeFeedback extends React.Component< this.state.pressability.configure(this._createPressabilityConfig()); } - componentDidMount(): mixed { + componentDidMount(): unknown { this.state.pressability.configure(this._createPressabilityConfig()); } diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/ViewPropTypes.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/ViewPropTypes.win32.js index 9121459dc55..7f315385f68 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/ViewPropTypes.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/ViewPropTypes.win32.js @@ -40,7 +40,7 @@ type DirectEventProps = $ReadOnly<{ * when the user performs an accessibility custom action. * */ - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, /** * When `accessible` is true, the system will try to invoke this function @@ -48,7 +48,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onaccessibilitytap */ - onAccessibilityTap?: ?() => mixed, + onAccessibilityTap?: ?() => unknown, /** * Invoked on mount and layout changes with: @@ -61,7 +61,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onlayout */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * When `accessible` is `true`, the system will invoke this function when the @@ -69,7 +69,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onmagictap */ - onMagicTap?: ?() => mixed, + onMagicTap?: ?() => unknown, /** * When `accessible` is `true`, the system will invoke this function when the @@ -77,7 +77,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onaccessibilityescape */ - onAccessibilityEscape?: ?() => mixed, + onAccessibilityEscape?: ?() => unknown, }>; type MouseEventProps = $ReadOnly<{ @@ -354,7 +354,7 @@ export type ViewPropsAndroid = $ReadOnly<{ * * @platform android */ - onClick?: ?(event: GestureResponderEvent) => mixed, + onClick?: ?(event: GestureResponderEvent) => unknown, }>; export type TVViewPropsIOS = $ReadOnly<{ diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js index 99ac2a59124..f557c4f7627 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Core/Devtools/loadBundleFromServer.win32.js @@ -13,7 +13,10 @@ import DevLoadingView from '../../Utilities/DevLoadingView'; import HMRClient from '../../Utilities/HMRClient'; import getDevServer from './getDevServer'; -declare var global: {globalEvalWithSourceUrl?: (string, string) => mixed, ...}; +declare var global: { + globalEvalWithSourceUrl?: (string, string) => unknown, + ... +}; let pendingRequests = 0; @@ -26,7 +29,7 @@ export class LoadBundleFromServerError extends Error { message: string, url: string, isTimeout: boolean, - options?: {cause: mixed, ...}, + options?: {cause: unknown, ...}, ): void { super(message, options); this.url = url; @@ -40,7 +43,7 @@ export class LoadBundleFromServerRequestError extends LoadBundleFromServerError message: string, url: string, isTimeout: boolean, - options?: {cause: mixed, ...}, + options?: {cause: unknown, ...}, ): void { super(message, url, isTimeout, options); this.name = 'LoadBundleFromServerRequestError'; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Image/Image.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Image/Image.win32.js index 38d730572f8..bb1b0c93f3e 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Image/Image.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Image/Image.win32.js @@ -73,7 +73,7 @@ function getSizeWithHeaders( uri: string, headers: {[string]: string, ...}, success?: (width: number, height: number) => void, - failure?: (error: mixed) => void, + failure?: (error: unknown) => void, // $FlowFixMe[unclear-type] ): any { return NativeImageLoaderWin32.getSizeWithHeaders(uri, headers) diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js index 72669fbd615..454ce4b9176 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Network/RCTNetworking.win32.js @@ -20,8 +20,8 @@ import {type NativeResponseType} from './XMLHttpRequest'; const RCTNetworking = { addListener>( eventType: K, - listener: (...RCTNetworkingEventDefinitions[K]) => mixed, - context?: mixed, + listener: (...RCTNetworkingEventDefinitions[K]) => unknown, + context?: unknown, ): EventSubscription { // $FlowFixMe[incompatible-type] return RCTDeviceEventEmitter.addListener(eventType, listener, context); diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js index add3d0dda6c..cccb702dbbb 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js @@ -90,12 +90,12 @@ export type PressabilityConfig = $ReadOnly<{ /** * Called after the element loses focus. */ - onBlur?: ?(event: BlurEvent) => mixed, + onBlur?: ?(event: BlurEvent) => unknown, /** * Called after the element is focused. */ - onFocus?: ?(event: FocusEvent) => mixed, + onFocus?: ?(event: FocusEvent) => unknown, /* * Called after a key down event is detected. @@ -110,37 +110,37 @@ export type PressabilityConfig = $ReadOnly<{ /** * Called when the hover is activated to provide visual feedback. */ - onHoverIn?: ?(event: MouseEvent) => mixed, + onHoverIn?: ?(event: MouseEvent) => unknown, /** * Called when the hover is deactivated to undo visual feedback. */ - onHoverOut?: ?(event: MouseEvent) => mixed, + onHoverOut?: ?(event: MouseEvent) => unknown, /** * Called when a long press gesture has been triggered. */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a press gesture has been triggered. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press is activated to provide visual feedback. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press location moves. (This should rarely be used.) */ - onPressMove?: ?(event: GestureResponderEvent) => mixed, + onPressMove?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press is deactivated to undo visual feedback. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Whether to prevent any other native components from becoming responder diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js index ec739cdb348..f2d5432a30b 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js @@ -140,7 +140,7 @@ function lazifyViewManagerConfig(viewName: string) { defineLazyObjectProperty(viewConfig, 'Constants', { get: () => { const viewManager = NativeModules[viewConfig.Manager]; - const constants: {[string]: mixed} = {}; + const constants: {[string]: unknown} = {}; viewManager && Object.keys(viewManager).forEach(key => { const value = viewManager[key]; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js index ee6ae134cac..3226d4b538b 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js @@ -7,7 +7,9 @@ * @noformat * @nolint * @flow strict - * @generated SignedSource<> + * @generated SignedSource<<989e6e2e860dc2af7ba983849111bda8>> + * + * This file was sync'd from the facebook/react repository. */ import type { diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js index bd915aa82e0..7098a19d3fa 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/Text.win32.js @@ -781,10 +781,10 @@ const TextImpl: component( TextImpl.displayName = 'Text'; type TextPressabilityProps = $ReadOnly<{ - onLongPress?: ?(event: GestureResponderEvent) => mixed, - onPress?: ?(event: GestureResponderEvent) => mixed, - onPressIn?: ?(event: GestureResponderEvent) => mixed, - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, + onPress?: ?(event: GestureResponderEvent) => unknown, + onPressIn?: ?(event: GestureResponderEvent) => unknown, + onPressOut?: ?(event: GestureResponderEvent) => unknown, onResponderGrant?: ?(event: GestureResponderEvent) => void, onResponderMove?: ?(event: GestureResponderEvent) => void, onResponderRelease?: ?(event: GestureResponderEvent) => void, diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js index 72919710df1..7b1209ba5b2 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js @@ -21,7 +21,7 @@ export type NativeTextProps = $ReadOnly<{ ...TextProps, isHighlighted?: ?boolean, selectionColor?: ?ProcessedColorValue, - onClick?: ?(event: GestureResponderEvent) => mixed, + onClick?: ?(event: GestureResponderEvent) => unknown, // This is only needed for platforms that optimize text hit testing, e.g., // react-native-windows. It can be used to only hit test virtual text spans // that have pressable events attached to them. diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextProps.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextProps.win32.js index 288fecbe5e4..a696f693c50 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextProps.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextProps.win32.js @@ -122,7 +122,7 @@ export type TextPropsAndroid = { }; type TextBaseProps = $ReadOnly<{ - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, accessibilityControls?: ?Stringish, // Win32 accessibilityDescribedBy?: ?Stringish, // Win32 accessibilityDescription?: ?Stringish, // Win32 @@ -218,7 +218,7 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onlayout */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * This function is called on long press. @@ -226,7 +226,7 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onlongpress */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * This function is called on press. @@ -234,9 +234,9 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onpress */ - onPress?: ?(event: GestureResponderEvent) => mixed, - onPressIn?: ?(event: GestureResponderEvent) => mixed, - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, + onPressIn?: ?(event: GestureResponderEvent) => unknown, + onPressOut?: ?(event: GestureResponderEvent) => unknown, onResponderGrant?: ?(event: GestureResponderEvent) => void, onResponderMove?: ?(event: GestureResponderEvent) => void, onResponderRelease?: ?(event: GestureResponderEvent) => void, @@ -244,7 +244,7 @@ type TextBaseProps = $ReadOnly<{ onResponderTerminationRequest?: ?() => boolean, onStartShouldSetResponder?: ?() => boolean, onMoveShouldSetResponder?: ?() => boolean, - onTextLayout?: ?(event: TextLayoutEvent) => mixed, + onTextLayout?: ?(event: TextLayoutEvent) => unknown, /** * Defines how far your touch may move off of the button, before diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js index 252307df9ba..b3cb26a85bd 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js @@ -48,10 +48,10 @@ let __nativeAnimationIdCount = 1; /* used for started animations */ let nativeEventEmitter; -let waitingForQueuedOperations = new Set(); +const waitingForQueuedOperations = new Set(); let queueOperations = false; -let queue: Array<() => void> = []; -let singleOpQueue: Array = []; +const queue: Array<() => void> = []; +const singleOpQueue: Array = []; const isSingleOpBatching = Platform.OS === 'android' && @@ -71,7 +71,7 @@ let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null; const shouldSignalBatch: boolean = ReactNativeFeatureFlags.cxxNativeAnimatedEnabled(); -function createNativeOperations(): $NonMaybeType { +function createNativeOperations(): NonNullable { const methodNames = [ 'createAnimatedNode', // 1 'updateAnimatedNodeConfig', // 2 @@ -103,7 +103,7 @@ function createNativeOperations(): $NonMaybeType { methodNames.push('connectAnimatedNodeToShadowNodeFamily'); } const nativeOperations: { - [$Values]: (...$ReadOnlyArray) => void, + [$Values]: (...$ReadOnlyArray) => void, } = {}; if (isSingleOpBatching) { for (let ii = 0, length = methodNames.length; ii < length; ii++) { @@ -156,49 +156,35 @@ const NativeOperations = createNativeOperations(); * the native module methods, and automatic queue management on Android */ const API = { - getValue: (isSingleOpBatching - ? (tag, saveValueCallback) => { - /* $FlowFixMe[constant-condition] Error discovered during Constant - * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ - if (saveValueCallback) { - eventListenerGetValueCallbacks[tag] = saveValueCallback; - } - /* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled - differently when `isSingleOpBatching` is enabled. */ - NativeOperations.getValue(tag); - } - : (tag, saveValueCallback) => { - NativeOperations.getValue(tag, saveValueCallback); - }) as $NonMaybeType['getValue'], - - setWaitingForIdentifier(id: string): void { - if (shouldSignalBatch) { - return; - } - - waitingForQueuedOperations.add(id); - queueOperations = true; - if ( - ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() && - flushQueueImmediate - ) { - clearImmediate(flushQueueImmediate); - } + addAnimatedEventToView( + viewTag: number, + eventName: string, + eventMapping: EventMapping, + ) { + NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping); }, - - unsetWaitingForIdentifier(id: string): void { - if (shouldSignalBatch) { - return; - } - - waitingForQueuedOperations.delete(id); - - if (waitingForQueuedOperations.size === 0) { - queueOperations = false; - API.disableQueue(); + connectAnimatedNodes(parentTag: number, childTag: number): void { + NativeOperations.connectAnimatedNodes(parentTag, childTag); + }, + connectAnimatedNodeToShadowNodeFamily( + nodeTag: number, + shadowNode: Node, + ): void { + NativeOperations.connectAnimatedNodeToShadowNodeFamily?.( + nodeTag, + shadowNode, + ); + }, + connectAnimatedNodeToView(nodeTag: number, viewTag: number): void { + NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag); + }, + createAnimatedNode(tag: number, config: AnimatedNodeConfig): void { + if (config.disableBatchingForNativeCreate) { + NativeAnimatedModule?.createAnimatedNode(tag, config); + } else { + NativeOperations.createAnimatedNode(tag, config); } }, - disableQueue(): void { invariant(NativeAnimatedModule, 'Native animated module is not available'); @@ -210,7 +196,21 @@ const API = { API.flushQueue(); } }, - + disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void { + NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag); + }, + disconnectAnimatedNodes(parentTag: number, childTag: number): void { + NativeOperations.disconnectAnimatedNodes(parentTag, childTag); + }, + dropAnimatedNode(tag: number): void { + NativeOperations.dropAnimatedNode(tag); + }, + extractAnimatedNodeOffset(nodeTag: number): void { + NativeOperations.extractAnimatedNodeOffset(nodeTag); + }, + flattenAnimatedNodeOffset(nodeTag: number): void { + NativeOperations.flattenAnimatedNodeOffset(nodeTag); + }, flushQueue: (isSingleOpBatching ? (): void => { /* [Windows #11041 @@ -260,35 +260,54 @@ const API = { NativeAnimatedModule?.finishOperationBatch?.(); } }) as () => void, - - createAnimatedNode(tag: number, config: AnimatedNodeConfig): void { - if (config.disableBatchingForNativeCreate) { - NativeAnimatedModule?.createAnimatedNode(tag, config); - } else { - NativeOperations.createAnimatedNode(tag, config); - } - }, - - updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void { - NativeOperations.updateAnimatedNodeConfig?.(tag, config); + getValue: (isSingleOpBatching + ? (tag, saveValueCallback) => { + /* $FlowFixMe[constant-condition] Error discovered during Constant + * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ + if (saveValueCallback) { + eventListenerGetValueCallbacks[tag] = saveValueCallback; + } + /* $FlowExpectedError[incompatible-type] - `saveValueCallback` is handled + differently when `isSingleOpBatching` is enabled. */ + NativeOperations.getValue(tag); + } + : (tag, saveValueCallback) => { + NativeOperations.getValue(tag, saveValueCallback); + }) as NonNullable['getValue'], + removeAnimatedEventFromView( + viewTag: number, + eventName: string, + animatedNodeTag: number, + ) { + NativeOperations.removeAnimatedEventFromView( + viewTag, + eventName, + animatedNodeTag, + ); }, - - startListeningToAnimatedNodeValue(tag: number): void { - NativeOperations.startListeningToAnimatedNodeValue(tag); + restoreDefaultValues(nodeTag: number): void { + NativeOperations.restoreDefaultValues?.(nodeTag); }, - - stopListeningToAnimatedNodeValue(tag: number): void { - NativeOperations.stopListeningToAnimatedNodeValue(tag); + setAnimatedNodeOffset(nodeTag: number, offset: number): void { + NativeOperations.setAnimatedNodeOffset(nodeTag, offset); }, - - connectAnimatedNodes(parentTag: number, childTag: number): void { - NativeOperations.connectAnimatedNodes(parentTag, childTag); + setAnimatedNodeValue(nodeTag: number, value: number): void { + NativeOperations.setAnimatedNodeValue(nodeTag, value); }, + setWaitingForIdentifier(id: string): void { + if (shouldSignalBatch) { + return; + } - disconnectAnimatedNodes(parentTag: number, childTag: number): void { - NativeOperations.disconnectAnimatedNodes(parentTag, childTag); + waitingForQueuedOperations.add(id); + queueOperations = true; + if ( + ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() && + flushQueueImmediate + ) { + clearImmediate(flushQueueImmediate); + } }, - startAnimatingNode: (isSingleOpBatching ? (animationId, nodeTag, config, endCallback) => { /* $FlowFixMe[constant-condition] Error discovered during Constant @@ -307,72 +326,30 @@ const API = { config, endCallback, ); - }) as $NonMaybeType['startAnimatingNode'], - + }) as NonNullable['startAnimatingNode'], + startListeningToAnimatedNodeValue(tag: number): void { + NativeOperations.startListeningToAnimatedNodeValue(tag); + }, stopAnimation(animationId: number) { NativeOperations.stopAnimation(animationId); }, - - setAnimatedNodeValue(nodeTag: number, value: number): void { - NativeOperations.setAnimatedNodeValue(nodeTag, value); - }, - - setAnimatedNodeOffset(nodeTag: number, offset: number): void { - NativeOperations.setAnimatedNodeOffset(nodeTag, offset); - }, - - flattenAnimatedNodeOffset(nodeTag: number): void { - NativeOperations.flattenAnimatedNodeOffset(nodeTag); - }, - - extractAnimatedNodeOffset(nodeTag: number): void { - NativeOperations.extractAnimatedNodeOffset(nodeTag); - }, - - connectAnimatedNodeToView(nodeTag: number, viewTag: number): void { - NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag); - }, - - connectAnimatedNodeToShadowNodeFamily( - nodeTag: number, - shadowNode: Node, - ): void { - NativeOperations.connectAnimatedNodeToShadowNodeFamily?.( - nodeTag, - shadowNode, - ); - }, - - disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void { - NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag); - }, - - restoreDefaultValues(nodeTag: number): void { - NativeOperations.restoreDefaultValues?.(nodeTag); + stopListeningToAnimatedNodeValue(tag: number): void { + NativeOperations.stopListeningToAnimatedNodeValue(tag); }, + unsetWaitingForIdentifier(id: string): void { + if (shouldSignalBatch) { + return; + } - dropAnimatedNode(tag: number): void { - NativeOperations.dropAnimatedNode(tag); - }, + waitingForQueuedOperations.delete(id); - addAnimatedEventToView( - viewTag: number, - eventName: string, - eventMapping: EventMapping, - ) { - NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping); + if (waitingForQueuedOperations.size === 0) { + queueOperations = false; + API.disableQueue(); + } }, - - removeAnimatedEventFromView( - viewTag: number, - eventName: string, - animatedNodeTag: number, - ) { - NativeOperations.removeAnimatedEventFromView( - viewTag, - eventName, - animatedNodeTag, - ); + updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void { + NativeOperations.updateAnimatedNodeConfig?.(tag, config); }, }; @@ -432,7 +409,7 @@ function assertNativeAnimatedModule(): void { let _warnedMissingNativeAnimated = false; function shouldUseNativeDriver( - config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig, + config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig, ): boolean { if (config.useNativeDriver == null) { console.warn( @@ -480,12 +457,9 @@ function transformDataType(value: number | string): number | string { export default { API, - generateNewNodeTag, - generateNewAnimationId, assertNativeAnimatedModule, - shouldUseNativeDriver, - shouldSignalBatch, - transformDataType, + generateNewAnimationId, + generateNewNodeTag, // $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppression // $FlowExpectedError[missing-type-arg] - unsafe getter lint suppression get nativeEventEmitter(): NativeEventEmitter { @@ -499,4 +473,7 @@ export default { } return nativeEventEmitter; }, + shouldSignalBatch, + shouldUseNativeDriver, + transformDataType, }; diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index f161b56c034..5df7354a351 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -32,8 +32,8 @@ "eslint": "^8.19.0", "just-scripts": "^1.3.2", "prettier": "^3.6.2", - "react": "19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039", "typescript": "5.0.4" }, @@ -57,4 +57,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/perf-testing/package.json b/packages/@react-native-windows/perf-testing/package.json index 9925677e30f..8c40320f68d 100644 --- a/packages/@react-native-windows/perf-testing/package.json +++ b/packages/@react-native-windows/perf-testing/package.json @@ -37,7 +37,7 @@ "peerDependencies": { "jest": ">=29.0.3", "react": ">=18.0.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-test-renderer": ">=18.0.0" }, "peerDependenciesMeta": { @@ -64,4 +64,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index e2baa1c67c9..dd72d123643 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "copy", @@ -50,14 +50,14 @@ "type": "patch", "file": "src/js/examples/FlatList/FlatList-basic.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-basic.js", - "baseHash": "41496b69da9128cd74a3efa43e41d08f967b37ed", + "baseHash": "2e712b5b0e2230bbf0abcf967c497e207c472809", "issue": 12869 }, { "type": "copy", "file": "src/js/examples/FlatList/FlatList-multiColumn.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-multiColumn.js", - "baseHash": "d65899720b46246b721e583b9a9920d7601b5221", + "baseHash": "9d960f7a85d0b5b40e2b5a511c05364f7d952c53", "issue": 12869 }, { @@ -85,7 +85,7 @@ "type": "patch", "file": "src/js/examples/Image/ImageExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Image/ImageExample.js", - "baseHash": "9381aa0a0b1d084fda30e13c3b35eac653b28625", + "baseHash": "2ee70a725f5a944d99331a951e5389590847731f", "issue": 12869 }, { @@ -98,7 +98,7 @@ "type": "patch", "file": "src/js/examples/Modal/ModalPresentation.windows.js", "baseFile": "packages/rn-tester/js/examples/Modal/ModalPresentation.js", - "baseHash": "e33fdbe5b91b49ba913117e5f816d7034db308b0" + "baseHash": "1c53d7015caa0706d0197423c1f51fcb0c69d872" }, { "type": "patch", @@ -137,7 +137,7 @@ "type": "patch", "file": "src/js/examples/TurboModule/SampleTurboModuleExample.windows.js", "baseFile": "packages/rn-tester/js/examples/TurboModule/SampleTurboModuleExample.js", - "baseHash": "6699f509cf17c113d98fd87bfab9127037d9ca08" + "baseHash": "1af95dd18378165130c31b08bf17949ba281f193" }, { "type": "patch", diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index 3b1d5d38c91..34f91bca2fb 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -18,14 +18,14 @@ }, "peerDependencies": { "@react-native-picker/picker": "2.11.0", - "react": "19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039", "react-native-xaml": "^0.0.80" }, "devDependencies": { - "@react-native/new-app-screen": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/tester": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/new-app-screen": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/tester": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/just-task": "2.3.58", @@ -33,7 +33,7 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-platform-override": "0.0.0-canary.1021", "react-native-windows": "^0.0.0-canary.1039", "typescript": "5.0.4" @@ -41,4 +41,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js index aaad10c8bbb..32c71e626cc 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-basic.windows.js @@ -109,7 +109,7 @@ class FlatListExample extends React.PureComponent { this.setState({filterText}); }; - _onChangeScrollToIndex = (text: mixed) => { + _onChangeScrollToIndex = (text: unknown) => { this._listRef?.scrollToIndex({viewPosition: 0.5, index: Number(text)}); }; @@ -301,14 +301,7 @@ class FlatListExample extends React.PureComponent { ); } - _captureRef = ( - ref: React.ElementRef< - AnimatedComponentType< - React.ElementConfig, - React.ElementRef, - >, - > | null, - ) => { + _captureRef = (ref: FlatList | null) => { this._listRef = ref; }; // $FlowFixMe[missing-local-annot] @@ -423,7 +416,7 @@ class FlatListExample extends React.PureComponent { })); }; - _listRef: React.ElementRef | null; + _listRef: FlatList | null; } const styles = StyleSheet.create({ diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-multiColumn.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-multiColumn.windows.js index a6b6c8921de..5900e5d8cde 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-multiColumn.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-multiColumn.windows.js @@ -42,7 +42,7 @@ function MultiColumnExample(): React.Node { const _onChangeFilterText = (_filterText: string) => { setFilterText(_filterText); }; - const _onChangeNumColumns = (_numColumns: mixed) => { + const _onChangeNumColumns = (_numColumns: unknown) => { setNumColumns(Number(_numColumns)); }; diff --git a/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js index 2f79643bbdc..69446b3f484 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Image/ImageExample.windows.js @@ -1185,7 +1185,7 @@ exports.examples = [ { title: 'Multiple Image Source using the `srcSet` prop.', description: - ('A list of comma seperated uris along with scale are provided in `srcSet`.' + + ('A list of comma separated uris along with scale are provided in `srcSet`.' + 'An appropriate value will be used based on the scale of the device.': string), render: function (): React.Node { return ( diff --git a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js index fc5840ecc51..bd0dfc7383f 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js @@ -53,24 +53,24 @@ function ModalPresentation() { }, []); const [props, setProps] = useState({ + allowSwipeDismissal: false, animationType: 'none', - transparent: false, + backdropColor: undefined, hardwareAccelerated: false, - statusBarTranslucent: false, navigationBarTranslucent: false, + onDismiss: undefined, + onShow: undefined, presentationStyle: Platform.select({ - ios: 'fullScreen', default: undefined, + ios: 'fullScreen', }), - allowSwipeDismissal: false, + statusBarTranslucent: false, supportedOrientations: Platform.select({ - ios: ['portrait'], default: undefined, + ios: ['portrait'], }), - onDismiss: undefined, - onShow: undefined, + transparent: false, visible: false, - backdropColor: undefined, }); const presentationStyle = props.presentationStyle; const hardwareAccelerated = props.hardwareAccelerated; @@ -83,7 +83,7 @@ function ModalPresentation() { const [currentOrientation, setCurrentOrientation] = useState('unknown'); type OrientationChangeEvent = Parameters< - $NonMaybeType, + NonNullable, >[0]; const onOrientationChange = (event: OrientationChangeEvent) => setCurrentOrientation(event.nativeEvent.orientation); @@ -99,8 +99,8 @@ function ModalPresentation() { onValueChange={enabled => setProps(prev => ({ ...prev, - statusBarTranslucent: enabled, navigationBarTranslucent: false, + statusBarTranslucent: enabled, })) } /> @@ -114,8 +114,8 @@ function ModalPresentation() { onValueChange={enabled => { setProps(prev => ({ ...prev, - statusBarTranslucent: enabled, navigationBarTranslucent: enabled, + statusBarTranslucent: enabled, })); }} /> @@ -336,34 +336,18 @@ function ModalPresentation() { } const styles = StyleSheet.create({ - row: { - flexWrap: 'wrap', - flexDirection: 'row', - }, - rowWithSpaceBetween: { - flexDirection: 'row', - justifyContent: 'space-between', - }, block: { - borderColor: 'rgba(0,0,0, 0.1)', borderBottomWidth: 1, + borderColor: 'rgba(0,0,0, 0.1)', padding: 6, }, inlineBlock: { - padding: 6, - flexDirection: 'row', - justifyContent: 'space-between', alignItems: 'center', - borderColor: 'rgba(0,0,0, 0.1)', borderBottomWidth: 1, - }, - title: { - margin: 3, - fontWeight: 'bold', - }, - option: { - marginRight: 8, - marginTop: 6, + borderColor: 'rgba(0,0,0, 0.1)', + flexDirection: 'row', + justifyContent: 'space-between', + padding: 6, }, modalContainer: { //flex: 1, // [Windows] - This will cause the modal to stretch to be as tall as the availiable space given to it. @@ -374,16 +358,32 @@ const styles = StyleSheet.create({ borderRadius: 10, padding: 10, }, - warning: { + option: { + marginRight: 8, + marginTop: 6, + }, + row: { + flexDirection: 'row', + flexWrap: 'wrap', + }, + rowWithSpaceBetween: { + flexDirection: 'row', + justifyContent: 'space-between', + }, + title: { + fontWeight: 'bold', margin: 3, - fontSize: 12, + }, + warning: { color: 'red', + fontSize: 12, + margin: 3, }, }); export default ({ - title: 'Modal Presentation', - name: 'basic', description: 'Modals can be presented with or without animation', + name: 'basic', render: (): React.Node => , + title: 'Modal Presentation', }: RNTesterModuleExample); diff --git a/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js index 95acb4e4f2f..d70b8277e1c 100644 --- a/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/TurboModule/SampleTurboModuleExample.windows.js @@ -21,7 +21,7 @@ type State = { testResults: { [string]: { type: string, - value: mixed, + value: unknown, ... }, ... @@ -169,7 +169,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { | $FlowFixMe | void | RootTag - | Promise + | Promise | number | string | boolean diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index 3cdf8ce1c7f..7a53072e699 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "3a0c486cfb8ae352e091c1dded040dbf62e2934f" + "baseHash": "973f70ab26a189ba20972252d2812a94843feaf7" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index aef3c7cccbd..b5f40e5d0b0 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -51,10 +51,10 @@ "@jest/create-cache-key-function": "^29.7.0", "@microsoft/api-extractor": "^7.52.2", "@octokit/rest": "^22.0.0", - "@react-native/metro-babel-transformer": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-babel-transformer": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@tsconfig/node22": "22.0.2", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "@typescript-eslint/parser": "^8.36.0", "ansi-regex": "^5.0.0", "ansi-styles": "^4.2.1", @@ -79,7 +79,7 @@ "eslint-plugin-relay": "^1.8.3", "fb-dotslash": "0.5.8", "flow-api-translator": "0.32.0", - "flow-bin": "^0.293.0", + "flow-bin": "^0.295.0", "hermes-eslint": "0.32.0", "hermes-transform": "0.32.0", "ini": "^5.0.0", @@ -101,8 +101,8 @@ "nullthrows": "^1.1.1", "prettier": "3.6.2", "prettier-plugin-hermes-parser": "0.32.0", - "react": "19.2.0", - "react-test-renderer": "19.1.0", + "react": "19.2.3", + "react-test-renderer": "19.2.3", "rimraf": "^3.0.2", "shelljs": "^0.8.5", "signedsource": "^2.0.0", @@ -114,8 +114,8 @@ "ws": "^7.5.10" }, "resolutions": { - "react-is": "19.2.0", + "react-is": "19.2.3", "on-headers": "1.1.0", "compression": "1.8.1" } -} +} \ No newline at end of file diff --git a/packages/@react-native/tester/js/components/RNTOption.js b/packages/@react-native/tester/js/components/RNTOption.js index ce0da863b35..12de74bf477 100644 --- a/packages/@react-native/tester/js/components/RNTOption.js +++ b/packages/@react-native/tester/js/components/RNTOption.js @@ -21,7 +21,7 @@ import {Pressable, StyleSheet, Text, View} from 'react-native'; type Props = $ReadOnly<{ testID?: ?string, label: string, - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, selected?: ?boolean, multiSelect?: ?boolean, disabled?: ?boolean, diff --git a/packages/@react-native/tester/js/components/RNTPressableRow.js b/packages/@react-native/tester/js/components/RNTPressableRow.js index 9ae0649389c..a6598baea65 100644 --- a/packages/@react-native/tester/js/components/RNTPressableRow.js +++ b/packages/@react-native/tester/js/components/RNTPressableRow.js @@ -18,12 +18,12 @@ type ViewStyleProp = React.ElementConfig['style']; type Props = { accessibilityLabel?: ?string, testID?: ?string, - onPressIn?: ?() => mixed, - onPressOut?: ?() => mixed, + onPressIn?: ?() => unknown, + onPressOut?: ?() => unknown, children?: ?React.Node, title: string, description?: ?string, - onPress: () => mixed, + onPress: () => unknown, style?: ViewStyleProp | ((pressed: boolean) => ViewStyleProp), }; diff --git a/packages/@react-native/tester/js/components/RNTesterButton.js b/packages/@react-native/tester/js/components/RNTesterButton.js index c459bd94c56..a3facd92b5c 100644 --- a/packages/@react-native/tester/js/components/RNTesterButton.js +++ b/packages/@react-native/tester/js/components/RNTesterButton.js @@ -19,7 +19,7 @@ type Props = $ReadOnly<{ testID?: string, textTestID?: string, children?: React.Node, - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, }>; function RNTesterButton(props: Props): React.Node { diff --git a/packages/@react-native/tester/js/components/RNTesterListFilters.js b/packages/@react-native/tester/js/components/RNTesterListFilters.js index 03d4e5f5131..1dbd890ad1b 100644 --- a/packages/@react-native/tester/js/components/RNTesterListFilters.js +++ b/packages/@react-native/tester/js/components/RNTesterListFilters.js @@ -16,7 +16,7 @@ const {StyleSheet, Text, TouchableOpacity, View} = require('react-native'); const filters = ['Basic', 'UI', 'ListView', 'iOS', 'Android']; type Props = { - onFilterButtonPress: (filter: string) => mixed, //optional only for testing + onFilterButtonPress: (filter: string) => unknown, //optional only for testing ... }; diff --git a/packages/@react-native/tester/js/components/RNTesterModuleContainer.js b/packages/@react-native/tester/js/components/RNTesterModuleContainer.js index 5dfdb6880c0..c6b39e73649 100644 --- a/packages/@react-native/tester/js/components/RNTesterModuleContainer.js +++ b/packages/@react-native/tester/js/components/RNTesterModuleContainer.js @@ -25,7 +25,7 @@ const RNTesterExampleFilter = require('./RNTesterExampleFilter'); type Props = { module: RNTesterModule, example?: ?RNTesterModuleExample, - onExampleCardPress?: ?(exampleName: string) => mixed, + onExampleCardPress?: ?(exampleName: string) => unknown, }; function getExampleTitle(title: $FlowFixMe, platform: $FlowFixMe) { diff --git a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js index f9e183bc4eb..e4e869964d2 100644 --- a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js +++ b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js @@ -1508,7 +1508,7 @@ class EnabledExample extends React.Component< isEnabled: false, }; _subscription: EventSubscription; - componentDidMount(): null | Promise { + componentDidMount(): null | Promise { this._subscription = AccessibilityInfo.addEventListener( this.props.eventListener, this._handleToggled, diff --git a/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestTypes.js b/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestTypes.js index ee20acbb92d..a3b3a5685f6 100644 --- a/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestTypes.js +++ b/packages/@react-native/tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestTypes.js @@ -34,7 +34,7 @@ export type PlatformTestResult = $ReadOnly<{ name: string, status: PlatformTestResultStatus, assertions: $ReadOnlyArray, - error: mixed | null, // null is technically unnecessary but is kept to ensure the error is described as nullable + error: unknown | null, // null is technically unnecessary but is kept to ensure the error is described as nullable }>; export type PlatformTestContext = $ReadOnly<{ diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventClickTouchHierarchyPointerEvents.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventClickTouchHierarchyPointerEvents.js index 19af463d432..ef986ccb682 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventClickTouchHierarchyPointerEvents.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventClickTouchHierarchyPointerEvents.js @@ -21,7 +21,7 @@ import {StyleSheet, View} from 'react-native'; function PointerEventBoxParentChild(props: { eventsToTrack: EventTrackerProps['eventsToTrack'], eventsRef: EventTrackerProps['eventsRef'], - pointerEvents: $NonMaybeType, + pointerEvents: NonNullable, childStyle: ViewProps['style'], parentStyleOverride?: ViewProps['style'], }) { @@ -140,21 +140,26 @@ function PointerEventClickTouchHierarchyPointerEventsTestCase( } const styles = StyleSheet.create({ - parentContainer: { - display: 'flex', - flexDirection: 'row', - gap: 10, + checkResults: { + backgroundColor: 'green', + height: 50, + width: '80%', }, parent: { - display: 'flex', + alignItems: 'center', backgroundColor: 'black', + display: 'flex', height: 80, - width: '20%', - alignItems: 'center', justifyContent: 'center', + width: '20%', }, - targetBoxOnly: { - backgroundColor: 'blue', + parentContainer: { + display: 'flex', + flexDirection: 'row', + gap: 10, + }, + targetAuto: { + backgroundColor: 'yellow', height: 50, width: 50, }, @@ -163,8 +168,8 @@ const styles = StyleSheet.create({ height: 50, width: 50, }, - targetAuto: { - backgroundColor: 'yellow', + targetBoxOnly: { + backgroundColor: 'blue', height: 50, width: 50, }, @@ -173,11 +178,6 @@ const styles = StyleSheet.create({ height: 50, width: 50, }, - checkResults: { - backgroundColor: 'green', - height: 50, - width: '80%', - }, }); type Props = $ReadOnly<{}>; diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerCancelTouch.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerCancelTouch.js index a195230bf77..4d97b81e871 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerCancelTouch.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerCancelTouch.js @@ -23,7 +23,7 @@ function PointerEventPointerCancelTouchTestCase( ) { const {harness} = props; - const testPointerEvent = harness.useAsyncTest('pointercancel event recieved'); + const testPointerEvent = harness.useAsyncTest('pointercancel event received'); const pointerDownEventRef = useRef(null); const pointerCancelEventRef = useRef(null); @@ -40,7 +40,7 @@ function PointerEventPointerCancelTouchTestCase( testPointerEvent.step(({assert_equals, assert_not_equals}) => { const pointerDownEvent = pointerDownEventRef.current; - assert_not_equals(pointerDownEvent, null, 'pointerdown was recieved: '); + assert_not_equals(pointerDownEvent, null, 'pointerdown was received: '); if (pointerDownEvent != null) { assert_equals( event.nativeEvent.pointerId, @@ -87,7 +87,7 @@ function PointerEventPointerCancelTouchTestCase( assert_not_equals( pointerCancelEvent, null, - 'pointercancel was recieved: ', + 'pointercancel was received: ', ); if (pointerCancelEvent != null) { assert_equals( @@ -118,7 +118,7 @@ function PointerEventPointerCancelTouchTestCase( assert_not_equals( pointerCancelEvent, null, - 'pointercancel was recieved: ', + 'pointercancel was received: ', ); if (pointerCancelEvent != null) { assert_equals( diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerOverOut.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerOverOut.js index 77152706d7a..07cde4b5992 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerOverOut.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerOverOut.js @@ -78,7 +78,7 @@ function PointerEventPointerOverOutTestCase( assert_equals( innerOverRef.current, innerOutRef.current, - 'pointerover is recieved before pointerout', + 'pointerover is received before pointerout', ); switch (innerOverRef.current) { case 0: { @@ -144,7 +144,7 @@ function PointerEventPointerOverOutTestCase( assert_equals( outerOwnOverRef.current, outerOwnOutRef.current, - 'outer: pointerover is recieved before pointerout', + 'outer: pointerover is received before pointerout', ); outerOwnOverRef.current++; } else { @@ -167,7 +167,7 @@ function PointerEventPointerOverOutTestCase( assert_equals( outerOwnOverRef.current, outerOwnOutRef.current + 1, - 'outer: pointerout is recieved after pointerover', + 'outer: pointerout is received after pointerover', ); if (outerOwnOutRef.current === 1) { assert_equals(innerOutRef.current, 2, 'inner should be done now'); @@ -178,7 +178,7 @@ function PointerEventPointerOverOutTestCase( assert_equals( outerOutRef.current - outerOwnOutRef.current, innerOutRef.current - 1, - 'pointerout: should only recieve this via bubbling', + 'pointerout: should only receive this via bubbling', ); } }); diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js index 508a71dc82f..472502e120b 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js @@ -107,7 +107,7 @@ class FlatListExample extends React.PureComponent { this.setState({filterText}); }; - _onChangeScrollToIndex = (text: mixed) => { + _onChangeScrollToIndex = (text: unknown) => { this._listRef?.scrollToIndex({viewPosition: 0.5, index: Number(text)}); }; @@ -298,7 +298,7 @@ class FlatListExample extends React.PureComponent { ); } - _captureRef = (ref: FlatList | null) => { + _captureRef = (ref: FlatList | null) => { this._listRef = ref; }; // $FlowFixMe[missing-local-annot] @@ -422,7 +422,7 @@ class FlatListExample extends React.PureComponent { })); }; - _listRef: FlatList | null; + _listRef: FlatList | null; } const styles = StyleSheet.create({ diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js index a6b6c8921de..5900e5d8cde 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js @@ -42,7 +42,7 @@ function MultiColumnExample(): React.Node { const _onChangeFilterText = (_filterText: string) => { setFilterText(_filterText); }; - const _onChangeNumColumns = (_numColumns: mixed) => { + const _onChangeNumColumns = (_numColumns: unknown) => { setNumColumns(Number(_numColumns)); }; diff --git a/packages/@react-native/tester/js/examples/Image/ImageExample.js b/packages/@react-native/tester/js/examples/Image/ImageExample.js index 357e714ef8b..d598c4ae3f0 100644 --- a/packages/@react-native/tester/js/examples/Image/ImageExample.js +++ b/packages/@react-native/tester/js/examples/Image/ImageExample.js @@ -936,7 +936,7 @@ exports.examples = [ { title: 'Multiple Image Source using the `srcSet` prop.', description: - ('A list of comma seperated uris along with scale are provided in `srcSet`.' + + ('A list of comma separated uris along with scale are provided in `srcSet`.' + 'An appropriate value will be used based on the scale of the device.': string), render: function (): React.Node { return ( diff --git a/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingParent.js b/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingParent.js index 085024cb114..ce4f3e12bcd 100644 --- a/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingParent.js +++ b/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingParent.js @@ -29,7 +29,7 @@ export function render(): React.Node { /** * Showcase threshold of two overlapping elements */ -function roundRect(rect: mixed): ?{ +function roundRect(rect: unknown): ?{ x: number, y: number, width: number, diff --git a/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js b/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js index e08a2bf4f91..3bf9c3af192 100644 --- a/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js +++ b/packages/@react-native/tester/js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js @@ -26,7 +26,7 @@ export function render(): React.Node { return ; } -function roundRect(rect: mixed): ?{ +function roundRect(rect: unknown): ?{ x: number, y: number, width: number, diff --git a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js index 5ac8e416fed..39cf3e97130 100644 --- a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js +++ b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js @@ -53,24 +53,24 @@ function ModalPresentation() { }, []); const [props, setProps] = useState({ + allowSwipeDismissal: false, animationType: 'none', - transparent: false, + backdropColor: undefined, hardwareAccelerated: false, - statusBarTranslucent: false, navigationBarTranslucent: false, + onDismiss: undefined, + onShow: undefined, presentationStyle: Platform.select({ - ios: 'fullScreen', default: undefined, + ios: 'fullScreen', }), - allowSwipeDismissal: false, + statusBarTranslucent: false, supportedOrientations: Platform.select({ - ios: ['portrait'], default: undefined, + ios: ['portrait'], }), - onDismiss: undefined, - onShow: undefined, + transparent: false, visible: false, - backdropColor: undefined, }); const presentationStyle = props.presentationStyle; const hardwareAccelerated = props.hardwareAccelerated; @@ -83,7 +83,7 @@ function ModalPresentation() { const [currentOrientation, setCurrentOrientation] = useState('unknown'); type OrientationChangeEvent = Parameters< - $NonMaybeType, + NonNullable, >[0]; const onOrientationChange = (event: OrientationChangeEvent) => setCurrentOrientation(event.nativeEvent.orientation); @@ -99,8 +99,8 @@ function ModalPresentation() { onValueChange={enabled => setProps(prev => ({ ...prev, - statusBarTranslucent: enabled, navigationBarTranslucent: false, + statusBarTranslucent: enabled, })) } /> @@ -114,8 +114,8 @@ function ModalPresentation() { onValueChange={enabled => { setProps(prev => ({ ...prev, - statusBarTranslucent: enabled, navigationBarTranslucent: enabled, + statusBarTranslucent: enabled, })); }} /> @@ -336,34 +336,18 @@ function ModalPresentation() { } const styles = StyleSheet.create({ - row: { - flexWrap: 'wrap', - flexDirection: 'row', - }, - rowWithSpaceBetween: { - flexDirection: 'row', - justifyContent: 'space-between', - }, block: { - borderColor: 'rgba(0,0,0, 0.1)', borderBottomWidth: 1, + borderColor: 'rgba(0,0,0, 0.1)', padding: 6, }, inlineBlock: { - padding: 6, - flexDirection: 'row', - justifyContent: 'space-between', alignItems: 'center', - borderColor: 'rgba(0,0,0, 0.1)', borderBottomWidth: 1, - }, - title: { - margin: 3, - fontWeight: 'bold', - }, - option: { - marginRight: 8, - marginTop: 6, + borderColor: 'rgba(0,0,0, 0.1)', + flexDirection: 'row', + justifyContent: 'space-between', + padding: 6, }, modalContainer: { flex: 1, @@ -374,16 +358,32 @@ const styles = StyleSheet.create({ borderRadius: 10, padding: 10, }, - warning: { + option: { + marginRight: 8, + marginTop: 6, + }, + row: { + flexDirection: 'row', + flexWrap: 'wrap', + }, + rowWithSpaceBetween: { + flexDirection: 'row', + justifyContent: 'space-between', + }, + title: { + fontWeight: 'bold', margin: 3, - fontSize: 12, + }, + warning: { color: 'red', + fontSize: 12, + margin: 3, }, }); export default ({ - title: 'Modal Presentation', - name: 'basic', description: 'Modals can be presented with or without animation', + name: 'basic', render: (): React.Node => , + title: 'Modal Presentation', }: RNTesterModuleExample); diff --git a/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js b/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js index 59547b36f03..32f419d10ce 100644 --- a/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js +++ b/packages/@react-native/tester/js/examples/Snapshot/SnapshotViewIOS.ios.js @@ -30,7 +30,7 @@ type SnapshotReadyEvent = NativeSyntheticEvent< type Props = $ReadOnly<{ ...ViewProps, - onSnapshotReady?: ?(event: SnapshotReadyEvent) => mixed, + onSnapshotReady?: ?(event: SnapshotReadyEvent) => unknown, testIdentifier?: ?string, }>; diff --git a/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js b/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js index 99a6830e7f9..7df3686e543 100644 --- a/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js +++ b/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js @@ -149,7 +149,7 @@ function Card(props: {color: string}) { const separatorComponent = () => ; - const listRef = useRef>(); + const listRef = useRef>(); useEffect(() => { listRef.current?.scrollToOffset({offset: 0, animated: false}); diff --git a/packages/@react-native/tester/js/examples/Text/TextExample.ios.js b/packages/@react-native/tester/js/examples/Text/TextExample.ios.js index 5fdff36d3bc..1af9c830f13 100644 --- a/packages/@react-native/tester/js/examples/Text/TextExample.ios.js +++ b/packages/@react-native/tester/js/examples/Text/TextExample.ios.js @@ -269,7 +269,7 @@ class AdjustingFontSize extends React.Component< } } -class TextBaseLineLayoutExample extends React.Component<{}, mixed> { +class TextBaseLineLayoutExample extends React.Component<{}, unknown> { render(): React.Node { const texts = []; for (let i = 9; i >= 0; i--) { diff --git a/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js b/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js index cfd512be703..dcee38ad656 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/NativeCxxModuleExampleExample.js @@ -29,7 +29,7 @@ type State = { testResults: { [string]: { type: string, - value: mixed, + value: unknown, ... }, ... @@ -239,7 +239,7 @@ class NativeCxxModuleExampleExample extends React.Component<{}, State> { | {const1: boolean, const2: number, const3: string} | number | {[key: string]: ?number} - | Promise + | Promise | number | string, ) { diff --git a/packages/@react-native/tester/js/examples/TurboModule/SampleLegacyModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/SampleLegacyModuleExample.js index 876c03da3a1..d0090a3ebe2 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/SampleLegacyModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/SampleLegacyModuleExample.js @@ -26,7 +26,7 @@ type State = { testResults: { [string]: { type: string, - value: mixed, + value: unknown, ... }, ... @@ -49,14 +49,14 @@ function getSampleLegacyModule() { return module; } -function stringify(obj: mixed): string { - function replacer(_: string, value: mixed) { +function stringify(obj: unknown): string { + function replacer(_: string, value: unknown) { if (value instanceof Object && !(value instanceof Array)) { /* $FlowFixMe[constant-condition] Error discovered during Constant * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ return Object.keys(value ?? {}) .sort() - .reduce((sorted: {[key: string]: mixed}, key: string) => { + .reduce((sorted: {[key: string]: unknown}, key: string) => { // $FlowFixMe[invalid-computed-prop] /* $FlowFixMe[constant-condition] Error discovered during Constant * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ @@ -183,7 +183,7 @@ class SampleLegacyModuleExample extends React.Component<{}, State> { getConst3: () => getSampleLegacyModule()?.const3, }; - _setResult(name: string, result: mixed) { + _setResult(name: string, result: unknown) { this.setState(({testResults}) => ({ /* $FlowFixMe[cannot-spread-indexer] (>=0.122.0 site=react_native_fb) * This comment suppresses an error found when Flow v0.122.0 was diff --git a/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js index 3a57d12ce6c..c1c5803c06c 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/SampleTurboModuleExample.js @@ -21,7 +21,7 @@ type State = { testResults: { [string]: { type: string, - value: mixed, + value: unknown, ... }, ... @@ -169,7 +169,7 @@ class SampleTurboModuleExample extends React.Component<{}, State> { | $FlowFixMe | void | RootTag - | Promise + | Promise | number | string | boolean diff --git a/packages/@react-native/tester/overrides.json b/packages/@react-native/tester/overrides.json index af20c824f35..530093c6150 100644 --- a/packages/@react-native/tester/overrides.json +++ b/packages/@react-native/tester/overrides.json @@ -1,5 +1,5 @@ { - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "copy", @@ -12,14 +12,14 @@ "type": "copy", "directory": "js/components", "baseDirectory": "packages/rn-tester/js/components", - "baseHash": "27b96c605c41f54f04786b4e31cd1e5d911486b0", + "baseHash": "4a44c453c565b88357af138e9e3b49851bbb815b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Accessibility", "baseDirectory": "packages/rn-tester/js/examples/Accessibility", - "baseHash": "7751eabd9f186b099b05a13cf840314ccb34e349", + "baseHash": "dd31cfb78bdcb1f7d1b025b2203410b6eae2b3c8", "issue": 4054 }, { @@ -145,7 +145,7 @@ "type": "copy", "directory": "js/examples/Experimental", "baseDirectory": "packages/rn-tester/js/examples/Experimental", - "baseHash": "90d7895059bfda9f8c9badfb412609e65b7e8902", + "baseHash": "fd5aaccdbb8dedf93e2482a22b5e96312ce611ae", "issue": 4054 }, { @@ -159,14 +159,14 @@ "type": "copy", "directory": "js/examples/FlatList", "baseDirectory": "packages/rn-tester/js/examples/FlatList", - "baseHash": "d97b61b2f47bc4a49f83f766d91985436516b494", + "baseHash": "f58b39ecdfbc688f2a67fe0068b97116514af041", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Image", "baseDirectory": "packages/rn-tester/js/examples/Image", - "baseHash": "88c455e871b55a0e82fd2eed05626b750e350199", + "baseHash": "b1490ea3b4071db8ab8a10777de7ad8791388d05", "issue": 4054 }, { @@ -187,14 +187,14 @@ "type": "copy", "file": "js/examples/IntersectionObserver/IntersectionObserverClippingParent.js", "baseFile": "packages/rn-tester/js/examples/IntersectionObserver/IntersectionObserverClippingParent.js", - "baseHash": "42240cecd003cddeab075d4a30aa0ce0d66d6c9f", + "baseHash": "c50b11c459c2765dc673b3bf00abcf47a7102941", "issue": 4054 }, { "type": "copy", "file": "js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js", "baseFile": "packages/rn-tester/js/examples/IntersectionObserver/IntersectionObserverClippingRoot.js", - "baseHash": "322988e33c1f4c3830aa39df4610cc61c3a8b2a5", + "baseHash": "8f29a603b37b8d160ddf4b0bef35a09144a5cd00", "issue": 4054 }, { @@ -292,7 +292,7 @@ "type": "copy", "directory": "js/examples/Modal", "baseDirectory": "packages/rn-tester/js/examples/Modal", - "baseHash": "43927717ed07266edfb5522b8a8d43e1ea477106", + "baseHash": "1c4554cdbbedb4e005111d30027bf6151e13b790", "issue": 4054 }, { @@ -452,7 +452,7 @@ "type": "copy", "directory": "js/examples/Snapshot", "baseDirectory": "packages/rn-tester/js/examples/Snapshot", - "baseHash": "83f9c765c2b1c2113162e51f4d261b6a12d963cd", + "baseHash": "b8d69b8c4231e8824f71a0333da01e286273aebe", "issue": 4054 }, { @@ -466,7 +466,7 @@ "type": "copy", "directory": "js/examples/SwipeableCardExample", "baseDirectory": "packages/rn-tester/js/examples/SwipeableCardExample", - "baseHash": "6d1fd140b0ba3e748e78cb34c2a30caeb19a63f3", + "baseHash": "2dca5546c5218ea020d362764a61e3b53f038574", "issue": 4054 }, { @@ -480,7 +480,7 @@ "type": "copy", "directory": "js/examples/Text", "baseDirectory": "packages/rn-tester/js/examples/Text", - "baseHash": "ecaa9ebe21567284e104e7155cfabe1d157b09b9", + "baseHash": "1ade857d9eed74dbbf0ab3a74fd3687027624744", "issue": 4054 }, { @@ -564,7 +564,7 @@ "type": "copy", "directory": "js/examples/TurboModule", "baseDirectory": "packages/rn-tester/js/examples/TurboModule", - "baseHash": "382a1f6e29fc70a0ae5903e5a5198c8d4f69c365", + "baseHash": "b5c3d0c8e94f042a3f441bb7c1e563adfaf65480", "issue": 4054 }, { @@ -717,7 +717,7 @@ "type": "patch", "file": "package.json", "baseFile": "packages/rn-tester/package.json", - "baseHash": "f9fdbba3c08eec3656dc42104c47a890ca94e6e6", + "baseHash": "4251fa3d4fa790c4f818c79d0c6ccac5e6b476f0", "issue": 13228 }, { diff --git a/packages/@react-native/tester/package.json b/packages/@react-native/tester/package.json index ea393cd0f02..63398d43c62 100644 --- a/packages/@react-native/tester/package.json +++ b/packages/@react-native/tester/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/tester", - "version": "0.84.0-nightly-20251212-dd390dbbe", + "version": "0.84.0-nightly-20260107-58bc6c3e3", "private": true, "description": "React Native tester app.", "license": "MIT", @@ -10,7 +10,7 @@ "directory": "packages/rn-tester" }, "engines": { - "node": ">=22" + "node": ">= 22.11.0" }, "scripts": { "start": "npx @react-native-community/cli start", @@ -25,14 +25,14 @@ "e2e-test-ios": "./scripts/maestro-test-ios.sh" }, "dependencies": { - "@react-native/new-app-screen": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/popup-menu-android": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/new-app-screen": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/popup-menu-android": "0.84.0-nightly-20260107-58bc6c3e3", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "peerDependencies": { - "react": "19.2.0", + "react": "19.2.3", "react-native": "*" }, "codegenConfig": { diff --git a/packages/@rnw-scripts/babel-react-native-config/package.json b/packages/@rnw-scripts/babel-react-native-config/package.json index 8d3525797fb..7427e0beb38 100644 --- a/packages/@rnw-scripts/babel-react-native-config/package.json +++ b/packages/@rnw-scripts/babel-react-native-config/package.json @@ -11,16 +11,16 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/babel-preset": "0.84.0-nightly-20260107-58bc6c3e3", "babel-plugin-transform-flow-enums": "^0.0.2" }, "devDependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/babel-preset": "0.84.0-nightly-20260107-58bc6c3e3", "eslint": "^8.19.0", "prettier": "^3.6.2" }, "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@rnw-scripts/eslint-config/package.json b/packages/@rnw-scripts/eslint-config/package.json index 160bdfac560..8d32251a766 100644 --- a/packages/@rnw-scripts/eslint-config/package.json +++ b/packages/@rnw-scripts/eslint-config/package.json @@ -13,7 +13,7 @@ "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@microsoft/eslint-plugin-sdl": "^0.2.0", - "@react-native/eslint-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/eslint-config": "0.84.0-nightly-20260107-58bc6c3e3", "eslint-config-prettier": "^8.5.0", "eslint-plugin-ft-flow": "^2.0.1", "hermes-eslint": "0.23.1" @@ -29,4 +29,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@rnw-scripts/metro-dev-config/package.json b/packages/@rnw-scripts/metro-dev-config/package.json index 9b9a7a519b0..bf01c0c2eb8 100644 --- a/packages/@rnw-scripts/metro-dev-config/package.json +++ b/packages/@rnw-scripts/metro-dev-config/package.json @@ -17,7 +17,7 @@ "lint:fix": "rnw-scripts lint:fix" }, "dependencies": { - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnx-kit/metro-config": "^2.2.3", "@rnx-kit/metro-plugin-duplicates-checker": "^3.0.2", "@rnx-kit/metro-serializer": "^2.0.3", @@ -33,4 +33,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index 2e1af61e68e..33304642349 100644 --- a/packages/e2e-test-app-fabric/package.json +++ b/packages/e2e-test-app-fabric/package.json @@ -24,11 +24,11 @@ "dependencies": { "@react-native-windows/automation-channel": "0.0.0-canary.1039", "@react-native-windows/tester": "0.0.1", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", - "react": "^19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "^19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039" }, "devDependencies": { @@ -39,7 +39,7 @@ "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", "@react-native-windows/perf-testing": "0.0.0-canary.1035", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@react-native-windows/automation": "0.0.0-canary.1039", "@react-native-windows/automation-commands": "0.0.0-canary.1039", "@rnw-scripts/babel-node-config": "2.3.3", @@ -52,7 +52,7 @@ "@rnx-kit/jest-preset": "^0.3.1", "@types/jest": "^29.2.2", "@types/node": "^22.14.0", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "babel-jest": "^29.6.3", "eslint": "^8.19.0", "jest": "^29.7.0", @@ -76,4 +76,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/playground/package.json b/packages/playground/package.json index 02feb57c570..c6f655da361 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -11,18 +11,18 @@ "dependencies": { "@react-native-picker/picker": "^2.5.1", "@react-native-windows/tester": "0.0.1", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", - "react": "^19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "^19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/just-task": "2.3.58", @@ -31,7 +31,7 @@ "@rnw-scripts/ts-config": "2.0.6", "@rnx-kit/cli": "^1.1.0", "@types/node": "^22.14.0", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "eslint": "^8.19.0", "just-scripts": "^1.3.3", "prettier": "^3.6.2", @@ -52,4 +52,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index 11cb3627b8d..aac0eeb60fa 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -13,11 +13,11 @@ }, "dependencies": { "@react-native/new-app-screen": "0.82.0-nightly-20250821-0ef21bf8a", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", - "react": "^19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "^19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039" }, "devDependencies": { @@ -28,7 +28,7 @@ "@babel/runtime": "^7.20.0", "@jest/globals": "^29.7.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", @@ -36,7 +36,7 @@ "@rnw-scripts/metro-dev-config": "0.0.0", "@rnw-scripts/ts-config": "2.0.6", "@rnx-kit/jest-preset": "^0.3.1", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "@types/react-test-renderer": "^19.1.0", "babel-jest": "^29.6.3", "eslint": "^8.19.0", @@ -49,4 +49,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index 2fd0fc374ed..9081988029e 100644 --- a/packages/sample-custom-component/package.json +++ b/packages/sample-custom-component/package.json @@ -20,10 +20,10 @@ } }, "dependencies": { - "@types/react": "^19.2.0", - "react": "^19.2.0", + "@types/react": "^19.2.3", + "react": "^19.2.3", "minimatch": "^10.0.3", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-windows": "^0.0.0-canary.1039" }, "devDependencies": { @@ -33,7 +33,7 @@ "@babel/preset-typescript": "^7.8.3", "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", @@ -54,4 +54,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file diff --git a/vnext/.flowconfig b/vnext/.flowconfig index 9173d9c18e0..7b73037de5f 100644 --- a/vnext/.flowconfig +++ b/vnext/.flowconfig @@ -173,4 +173,4 @@ untyped-import untyped-type-import [version] -^0.293.0 +^0.295.0 diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp index 92f1e574f8d..1c7fb051fe8 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +#if _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4996) // deprecated APIs +#endif + #include "ReactInstanceWin.h" #include diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h index 7a7605813cc..d87254ac9aa 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h @@ -16,6 +16,11 @@ #include #include +#if _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4996) // deprecated APIs +#endif + namespace facebook::react { /** @@ -146,7 +151,13 @@ class JSI_EXPORT TurboModule : public jsi::HostObject { /** * An app/platform-specific provider function to get an instance of a module * given a name. + * + * @deprecated Use TurboModuleProviderFunctionTypeWithRuntime instead. + * Remove after React Native 0.84 is released. */ -using TurboModuleProviderFunctionType = std::function(const std::string &name)>; +using TurboModuleProviderFunctionType [[deprecated("Use TurboModuleProviderFunctionTypeWithRuntime instead")]] = + std::function(const std::string &name)>; +using TurboModuleProviderFunctionTypeWithRuntime = + std::function(jsi::Runtime &runtime, const std::string &name)>; } // namespace facebook::react diff --git a/vnext/ReactCopies/IntegrationTests/ImageCachePolicyTest.js b/vnext/ReactCopies/IntegrationTests/ImageCachePolicyTest.js index b5b786d8662..bfbfee8637e 100644 --- a/vnext/ReactCopies/IntegrationTests/ImageCachePolicyTest.js +++ b/vnext/ReactCopies/IntegrationTests/ImageCachePolicyTest.js @@ -32,14 +32,14 @@ const TESTS = ['only-if-cached', 'default', 'reload', 'force-cache'] as const; function ImageCachePolicyTest(): React.Node { const [state, setState] = useState<{[string]: ?boolean}>({ - 'only-if-cached': undefined, default: undefined, - reload: undefined, 'force-cache': undefined, + 'only-if-cached': undefined, + reload: undefined, }); const testComplete = ( - name: $NonMaybeType, + name: NonNullable, pass: boolean, ) => { setState(prevState => ({ @@ -89,19 +89,19 @@ function ImageCachePolicyTest(): React.Node { } const getImageSource = (cache: ImageURISource['cache']) => ({ + cache, uri: 'https://raw.githubusercontent.com/facebook/react-native/HEAD/Libraries/NewAppScreen/components/logo.png?cacheBust=notinCache' + Date.now(), - cache, }); const styles = StyleSheet.create({ - container: { - flex: 1, - }, base: { - width: 100, height: 100, + width: 100, + }, + container: { + flex: 1, }, }); diff --git a/vnext/Shared/OInstance.cpp b/vnext/Shared/OInstance.cpp index c7f4c057320..33cb9bc7279 100644 --- a/vnext/Shared/OInstance.cpp +++ b/vnext/Shared/OInstance.cpp @@ -19,6 +19,11 @@ #include #endif +#if _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4996) // deprecated APIs +#endif + #include #include #include diff --git a/vnext/Shared/Shared.vcxitems.filters b/vnext/Shared/Shared.vcxitems.filters index f56d73c9f85..4a0d1ee7ddb 100644 --- a/vnext/Shared/Shared.vcxitems.filters +++ b/vnext/Shared/Shared.vcxitems.filters @@ -1,208 +1,105 @@  - + - - Source Files\tracing - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\Threading - - - Source Files\Threading - - - Source Files - - - Source Files\Modules - - - Source Files - - - Source Files\Modules - - - Source Files\Utils - - - Source Files\Networking - - - Source Files\Networking - - - Source Files\Networking - - - - Source Files\Modules - - - Source Files\Modules - - - Source Files\Networking - - - Source Files\Modules - - - - - - - Source Files\Fabric\codegen\react\components\rnwcore - - - Source Files\Fabric\codegen\react\components\rnwcore - - - Source Files\Fabric\codegen\react\components\rnwcore - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition\TextInput - - - Source Files\Fabric\Composition\TextInput - - - Source Files\Fabric\Composition\TextInput - - - Source Files\Fabric\Composition\TextInput - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric\Composition - - - Source Files\Fabric - - - Source Files\Fabric - - - Source Files\Fabric - + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -217,30 +114,16 @@ - - Source Files - - - Hermes - - - - - - - - Source Files\Networking - - - - - - Source Files\Modules - - + + + + + + - + + @@ -248,527 +131,152 @@ - - - - - - - - - - - - - - - - + + + + + + + - - - - - + - - - - - - - - - - - - - - + + - - - - - Hermes - - - Hermes - - - Inspector - - - - - {87359046-466f-4c83-856e-1755bcb1c066} - - - {d297c8b2-b89e-46e9-8d7c-ee4766384cb5} - - - {37d57028-146d-45f3-a56d-2ce7625a3449} - - - {da7f5a49-e3fb-46c3-906d-be42b8b651f7} - - - {87b365df-267b-4c00-860a-53d129a65a4e} - - - {6d6b7412-d407-4ee3-be2a-addd9dba140a} - - - {5e38b06d-5bcb-437b-9a9b-e787e37ef3ee} - - - {a3399e44-cc5c-45bf-8e6e-ea5f3fcdc8f4} - - - {d2b54f2c-7e3c-48a6-8df6-dea9fb7ab4e3} - - - {0ffdd86e-d4b2-4517-a8e3-8cb8ee8d8bca} - - - {32ac535b-b680-447d-9849-9fdffb26f218} - - - {2ad4b85f-faa4-4e14-905c-6c48c8ae1a20} - - - {07874914-e3b0-4d02-ad53-3518c2cb8cd8} - - - {1a3ad55f-1297-41b3-ba2a-0f819e69270c} - - - {e78de2f1-a7e5-4a81-b69b-4a1f7fa91cde} - - - {deefba53-d1ca-457d-9293-1993510e6d5a} - - - {71196e04-aca0-48d6-99e4-f418c957b50f} - - - {b32590e6-ae3d-4388-ab98-767345ce38c9} - - - {e045612e-bca3-4844-bce8-e75f83e89e05} - - - {c6241404-615b-4338-8955-e9282c440712} - - - {00b927dc-e868-4e01-80a7-03adbd7ef5af} - - - {81771765-0676-4cf8-baab-3656dd4d761f} - - - {b84ea036-35e5-4c33-b029-14b35dcbb5ce} - - - {0198c3a8-dcd1-4f17-aa80-769fa8df762f} - - - {9bbd1367-8911-4f05-8c3a-b1b82899413d} - - - {f34dccd6-7da9-46e6-b5e2-67f02690ff1d} - - - {1bc720d3-e07d-4a92-a569-11139f183736} - - - {5e9ae667-7a86-4d99-8996-0255534ef606} - - - {74e10d51-8301-4dfa-9e88-522d810f308f} - - - {5e32924b-0ec4-4876-a84b-0ecd8cecbade} - - - {322257be-ef83-46b0-b01e-10a776cf3948} - - - {157c380f-1c7c-436c-847e-e4a365d28991} - - - {4a029ab4-6068-4c47-afbe-d7f8d938457f} - - - {8131175d-d3f4-4abe-82f5-5d09fbd46ae9} - - - {46ba086f-8a77-434d-9a7f-58b35d1a5f45} - - - {9f8dd12b-12a1-42c6-bc1c-d4fb457e257d} - - - {ff174bb3-ecbd-4995-9f09-f5831c075db3} - - - {f7096aa5-32db-48ef-ad96-7350d860cd20} - - - {c42e0178-be33-40d1-bc97-cae01ad0c40a} - - - {1566d980-2e96-406e-80ff-3b23f9b1351c} - - - {20bed205-f5ef-4ecb-aa4b-c6d52ecae6c3} - - - {d63d0a43-1f13-4674-aaa5-de02447a46b9} - - - {0bd2cd2a-875b-4f98-851d-b90adac57415} - - - {b32590e6-ae3d-4388-ab98-767345ce38c9} - - - {680511e1-15e0-48c9-a2a3-64addaeacce5} - + - - Header Files\Modules - - - Header Files\tracing - - - Header Files\Pch - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\Threading - - - Header Files\Threading - - - Header Files\Utils - - - Header Files\JSI - - - Header Files\JSI - - - Header Files\JSI - + + + - - Header Files\tracing - - - Header Files\Modules - - - Header Files\Utils - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Networking - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Modules - - - Header Files\Fabric\codegen\react\components\rnwcore - - - Header Files\Fabric\codegen\react\components\rnwcore - - - Header Files\Fabric\codegen\react\components\rnwcore - - - Header Files\Fabric - - - Header Files\Fabric - - - Header Files\Fabric - - - Header Files - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition\TextInput - - - Header Files\Fabric\Composition\TextInput - - - Header Files\Fabric\Composition\TextInput - - - Header Files\Fabric\Composition\TextInput - - - Header Files\Fabric\Composition\TextInput - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\Composition - - - Header Files\Fabric\platform\react\renderer\graphics - - - Header Files\Fabric\platform\react\renderer\textlayoutmanager - + + + + + + + + + + + + + + + + + + + + + + + + - - - Header Files - - - Header Files - - - Header Files\Fabric\platform\react\renderer\core - - Header Files\Modules - - - Header Files\Networking - - - Header Files\Networking - - - Header Files - + + + - - Header Files\Modules - - - Hermes - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - Hermes - - - Hermes - - - Inspector - - - Inspector - - - - - Source Files\tracing - + + @@ -790,4 +298,7 @@ + + + \ No newline at end of file diff --git a/vnext/overrides.json b/vnext/overrides.json index a793cf83d22..9c5530b4622 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -8,13 +8,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.84.0-nightly-20251212-dd390dbbe", + "baseVersion": "0.84.0-nightly-20260107-58bc6c3e3", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "f8443da42da65a4f55de1fdcc8e30c3446004ad0" + "baseHash": "49be0404a6bbdf103616a7506ad8a27874048119" }, { "type": "derived", @@ -175,7 +175,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h", "baseFile": "packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h", - "baseHash": "a37bcf2c24ab4b0a3a1e65d2568625ef8db7429e", + "baseHash": "38ab1c28ebdee19c3e003135ee760083977f1f88", "issue": 14128 }, { @@ -295,7 +295,7 @@ "type": "copy", "directory": "ReactCopies/IntegrationTests", "baseDirectory": "packages/rn-tester/IntegrationTests", - "baseHash": "1a98afd05e30105137307d2cb5d75bba421d95a8", + "baseHash": "5ad0c9d40b186d2358221dd6f878162fb45bed20", "issue": 4054 }, { @@ -354,7 +354,7 @@ "type": "copy", "file": "src-win/jest/setup.js", "baseFile": "packages/react-native/jest/setup.js", - "baseHash": "0e6b2cac1864ee6389b08d0851480bbac0f9f700", + "baseHash": "e07439e411da31c953736731ab474e0401028b1f", "issue": 14929 }, { @@ -383,7 +383,7 @@ "type": "patch", "file": "src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js", "baseFile": "packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js", - "baseHash": "86b1d5f06946b43428b2b09351ab6a0cff56a894", + "baseHash": "c0c7037e52d48caae88cffaac7f60d4dd1c32b3e", "issue": 4578 }, { @@ -404,7 +404,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Button.windows.js", "baseFile": "packages/react-native/Libraries/Components/Button.js", - "baseHash": "67bb8c4e71cd242d366b3607f4c71f07e70f2488" + "baseHash": "ef86e2343f5213a5f230c63a1ddf12cbe6fa946c" }, { "type": "platform", @@ -460,7 +460,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Pressable/Pressable.windows.js", "baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js", - "baseHash": "08a6e1c0dd895af70ea1c8448a3be028d9cd2587" + "baseHash": "b8d87e48400468e702509ad24dab05f0a492aa19" }, { "type": "patch", @@ -490,13 +490,13 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.flow.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.flow.js", - "baseHash": "c3e71a2dbba8e4dd45a34c0c21327aa36d79a1b1" + "baseHash": "e36bacf69caef9e59e1f62f9ee4335c6879ef0ed" }, { "type": "patch", "file": "src-win/Libraries/Components/TextInput/TextInput.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "f037eaadc2960fb8d1e935c635116c8ebc702a8c" + "baseHash": "cc397bb3c850bb0a02f4b3134fdcbc2d9b597b80" }, { "type": "patch", @@ -520,7 +520,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableBounce.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableBounce.js", - "baseHash": "dfb47e9e3460324ab7e3ea876849f0ef82f94daf" + "baseHash": "affb73c526600c75c88438bc8a41ce92d6a4d578" }, { "type": "patch", @@ -532,7 +532,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js", - "baseHash": "2ded2efb727d7544aa8a0b249dd3f2502bb57129" + "baseHash": "d48f21572fc72cf6d79df5aac775fb67d4f1abb4" }, { "type": "patch", @@ -544,7 +544,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js", - "baseHash": "dca4ad0284644ab841356441dd24dfe2671bd22c" + "baseHash": "4238d1e618dba670d1a5739ad7991a8d542b61b0" }, { "type": "patch", @@ -581,13 +581,13 @@ "type": "patch", "file": "src-win/Libraries/Components/View/ViewPropTypes.windows.js", "baseFile": "packages/react-native/Libraries/Components/View/ViewPropTypes.js", - "baseHash": "2a031cb660382c3ebb74fcbfe71535fa99810cdb" + "baseHash": "3f85fd36b8c098a91f965e9150e53d77ff3aa432" }, { "type": "patch", "file": "src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js", "baseFile": "packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js", - "baseHash": "5177ecc736e9bebd4e798dcc2c6dd19c38b0a937", + "baseHash": "920db91a9af73d35420692d31beb1e4a8e068ff1", "issue": 12704 }, { @@ -604,7 +604,7 @@ "type": "patch", "file": "src-win/Libraries/Image/Image.windows.js", "baseFile": "packages/react-native/Libraries/Image/Image.ios.js", - "baseHash": "be81d302b8f2d64ddf7a52bd30fbcb47d18741b5", + "baseHash": "e52a6144ed3241e1e31e87292536908f8088d9c0", "issue": 4590 }, { @@ -660,7 +660,7 @@ "type": "derived", "file": "src-win/Libraries/NativeComponent/ViewConfigIgnore.windows.js", "baseFile": "packages/react-native/Libraries/NativeComponent/ViewConfigIgnore.js", - "baseHash": "ad955a66606d12afc8402e82afdd8103c5ca8b03" + "baseHash": "1bde2f3d9c647b0f541d03a1f2281848591158c5" }, { "type": "derived", @@ -672,7 +672,7 @@ "type": "copy", "file": "src-win/Libraries/Network/RCTNetworking.windows.js", "baseFile": "packages/react-native/Libraries/Network/RCTNetworking.ios.js", - "baseHash": "f1afed4408683b8e6a2b66ab88bb873aa5f81696" + "baseHash": "6cc93d00e1b6f541d08102cdc5363184f7ed6025" }, { "type": "platform", @@ -689,20 +689,20 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.windows.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "a4205b3bea276e65da3ce0aeb6753bc8e7c5ead0", + "baseHash": "10801e10120946aa4c721d13f3b8f455d0f43db8", "issue": 4379 }, { "type": "patch", "file": "src-win/Libraries/ReactNative/PaperUIManager.windows.js", "baseFile": "packages/react-native/Libraries/ReactNative/PaperUIManager.js", - "baseHash": "7a14c3d42ba7442848bd90329f6d31bda323c6d4" + "baseHash": "2c0076cc934fffa7c0a91721ee4268584289c6ec" }, { "type": "patch", "file": "src-win/Libraries/Renderer/shims/ReactNativeTypes.windows.js", "baseFile": "packages/react-native/Libraries/Renderer/shims/ReactNativeTypes.js", - "baseHash": "333afc05f5a42a5321196f5f7a14d14c8fd5dd0f", + "baseHash": "41da351b1e8d090e5ecf0859738218a5dcd4c08f", "issue": 4578 }, { @@ -719,13 +719,13 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.windows.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "d6607b86327891c5920c56ff833a9d984f20533f" + "baseHash": "914f50544d09bc3bfe2ea3e34951e47e52d2dd87" }, { "type": "derived", "file": "src-win/Libraries/Text/TextProps.windows.js", "baseFile": "packages/react-native/Libraries/Text/TextProps.js", - "baseHash": "7ee3be32c351343aa65a3fd12e568265bb788d9f" + "baseHash": "ddeedf097aec999824c4e9d246fdf6fefd61dc76" }, { "type": "patch", @@ -769,7 +769,7 @@ "type": "patch", "file": "src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js", "baseFile": "packages/react-native/src/private/featureflags/ReactNativeFeatureFlagsBase.js", - "baseHash": "7f9ec3ffc3b96bb213039323d5f35d623cde89d7" + "baseHash": "942394bbc4aeba209aa9d1f06127648e9ea34764" }, { "type": "patch", diff --git a/vnext/package.json b/vnext/package.json index 05cd99765ed..1255afc114e 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -28,14 +28,14 @@ "@react-native-community/cli-platform-ios": "20.0.0", "@react-native-windows/cli": "0.0.0-canary.286", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/codegen": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/community-cli-plugin": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/gradle-plugin": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/js-polyfills": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/new-app-screen": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/normalize-colors": "0.84.0-nightly-20251212-dd390dbbe", - "@react-native/virtualized-lists": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/assets-registry": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/codegen": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/community-cli-plugin": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/gradle-plugin": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/js-polyfills": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/new-app-screen": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/normalize-colors": "0.84.0-nightly-20260107-58bc6c3e3", + "@react-native/virtualized-lists": "0.84.0-nightly-20260107-58bc6c3e3", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -71,7 +71,7 @@ }, "devDependencies": { "@react-native-windows/codegen": "0.0.0-canary.132", - "@react-native/metro-config": "0.84.0-nightly-20251212-dd390dbbe", + "@react-native/metro-config": "0.84.0-nightly-20260107-58bc6c3e3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42", @@ -79,22 +79,22 @@ "@rnw-scripts/metro-dev-config": "0.0.0", "@rnx-kit/jest-preset": "^0.3.1", "@types/node": "^22.14.0", - "@types/react": "^19.2.0", + "@types/react": "^19.2.3", "eslint": "^8.19.0", - "flow-bin": "^0.293.0", + "flow-bin": "^0.295.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "^3.6.2", - "react": "19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe", + "react": "19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3", "react-native-platform-override": "0.0.0-canary.1021", "react-refresh": "^0.14.0", "typescript": "5.0.4" }, "peerDependencies": { - "@types/react": "^19.2.0", - "react": "^19.2.0", - "react-native": "0.84.0-nightly-20251212-dd390dbbe" + "@types/react": "^19.2.3", + "react": "^19.2.3", + "react-native": "0.84.0-nightly-20260107-58bc6c3e3" }, "beachball": { "defaultNpmTag": "canary", @@ -152,4 +152,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js b/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js index ee71e0244f0..3e65ae23fee 100644 --- a/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +++ b/vnext/src-win/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js @@ -43,7 +43,11 @@ type AccessibilityEventDefinitions = { screenReaderChanged: [boolean], }; -type AccessibilityEventTypes = 'click' | 'focus' | 'viewHoverEnter'; +type AccessibilityEventTypes = + | 'click' + | 'focus' + | 'viewHoverEnter' + | 'windowStateChange'; // Mapping of public event names to platform-specific event names. const EventNames: Map< @@ -449,6 +453,8 @@ const AccessibilityInfo = { * Set accessibility focus to a React component. * * See https://reactnative.dev/docs/accessibilityinfo#setaccessibilityfocus + * + * @deprecated Use `sendAccessibilityEvent` with eventType `focus` instead. */ setAccessibilityFocus(reactTag: number): void { legacySendAccessibilityEvent(reactTag, 'focus'); diff --git a/vnext/src-win/Libraries/Components/Button.windows.js b/vnext/src-win/Libraries/Components/Button.windows.js index 3320fe95c70..6573bc7a877 100644 --- a/vnext/src-win/Libraries/Components/Button.windows.js +++ b/vnext/src-win/Libraries/Components/Button.windows.js @@ -43,7 +43,7 @@ export type ButtonProps = $ReadOnly<{ Handler to be called when the user taps the button. The first function argument is an event in form of [GestureResponderEvent](pressevent). */ - onPress?: (event?: GestureResponderEvent) => mixed, + onPress?: (event?: GestureResponderEvent) => unknown, /** If `true`, doesn't play system sound on touch. @@ -153,7 +153,7 @@ export type ButtonProps = $ReadOnly<{ */ accessible?: ?boolean, accessibilityActions?: ?$ReadOnlyArray, - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, onAccessibilityTap?: ?() => void, // Windows accessibilityState?: ?AccessibilityState, accessibilityValue?: ?AccessibilityValue, // Windows diff --git a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js index bff1821662f..0988d84cace 100644 --- a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js +++ b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js @@ -94,41 +94,41 @@ type PressableBaseProps = $ReadOnly<{ /** * Called when this view's layout changes. */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * Called when the hover is activated to provide visual feedback. */ - onHoverIn?: ?(event: MouseEvent) => mixed, + onHoverIn?: ?(event: MouseEvent) => unknown, /** * Called when the hover is deactivated to undo visual feedback. */ - onHoverOut?: ?(event: MouseEvent) => mixed, + onHoverOut?: ?(event: MouseEvent) => unknown, /** * Called when a long-tap gesture is detected. */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a single tap gesture is detected. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is engaged before `onPress`. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press location moves. */ - onPressMove?: ?(event: GestureResponderEvent) => mixed, + onPressMove?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is released before `onPress`. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Whether to prevent any other native components from becoming responder diff --git a/vnext/src-win/Libraries/Components/TextInput/TextInput.flow.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.flow.windows.js index a4c4ddad820..9fa144abd79 100644 --- a/vnext/src-win/Libraries/Components/TextInput/TextInput.flow.windows.js +++ b/vnext/src-win/Libraries/Components/TextInput/TextInput.flow.windows.js @@ -880,18 +880,18 @@ type TextInputBaseProps = $ReadOnly<{ /** * Callback that is called when the text input is blurred. */ - onBlur?: ?(e: TextInputBlurEvent) => mixed, + onBlur?: ?(e: TextInputBlurEvent) => unknown, /** * Callback that is called when the text input's text changes. */ - onChange?: ?(e: TextInputChangeEvent) => mixed, + onChange?: ?(e: TextInputChangeEvent) => unknown, /** * Callback that is called when the text input's text changes. * Changed text is passed as an argument to the callback handler. */ - onChangeText?: ?(text: string) => mixed, + onChangeText?: ?(text: string) => unknown, /** * Callback that is called when the text input's content size changes. @@ -900,17 +900,17 @@ type TextInputBaseProps = $ReadOnly<{ * * Only called for multiline text inputs. */ - onContentSizeChange?: ?(e: TextInputContentSizeChangeEvent) => mixed, + onContentSizeChange?: ?(e: TextInputContentSizeChangeEvent) => unknown, /** * Callback that is called when text input ends. */ - onEndEditing?: ?(e: TextInputEndEditingEvent) => mixed, + onEndEditing?: ?(e: TextInputEndEditingEvent) => unknown, /** * Callback that is called when the text input is focused. */ - onFocus?: ?(e: TextInputFocusEvent) => mixed, + onFocus?: ?(e: TextInputFocusEvent) => unknown, /** * Callback that is called when a key is pressed. @@ -919,42 +919,42 @@ type TextInputBaseProps = $ReadOnly<{ * the typed-in character otherwise including `' '` for space. * Fires before `onChange` callbacks. */ - onKeyPress?: ?(e: TextInputKeyPressEvent) => mixed, + onKeyPress?: ?(e: TextInputKeyPressEvent) => unknown, /** * Called when a single tap gesture is detected. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is engaged. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when a touch is released. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Callback that is called when the text input selection is changed. * This will be called with * `{ nativeEvent: { selection: { start, end } } }`. */ - onSelectionChange?: ?(e: TextInputSelectionChangeEvent) => mixed, + onSelectionChange?: ?(e: TextInputSelectionChangeEvent) => unknown, /** * Callback that is called when the text input's submit button is pressed. * Invalid if `multiline={true}` is specified. */ - onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => mixed, + onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => unknown, /** * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`. * May also contain other properties from ScrollEvent but on Android contentSize * is not provided for performance reasons. */ - onScroll?: ?(e: ScrollEvent) => mixed, + onScroll?: ?(e: ScrollEvent) => unknown, /** * The string that will be rendered before text input has been entered. diff --git a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js index d55b13d6eba..98b9b59eb25 100644 --- a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js +++ b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js @@ -165,7 +165,7 @@ type TextInputStateType = $ReadOnly<{ blurTextInput: (textField: ?HostInstance) => void, }>; -type ViewCommands = $NonMaybeType< +type ViewCommands = NonNullable< | typeof AndroidTextInputCommands | typeof RCTMultilineTextInputNativeCommands | typeof RCTSinglelineTextInputNativeCommands, @@ -204,8 +204,8 @@ function useTextInputStateSynchronization({ const [lastNativeText, setLastNativeText] = useState(props.value); const [lastNativeSelectionState, setLastNativeSelection] = useState({ - selection: {start: -1, end: -1}, - mostRecentEventCount: mostRecentEventCount, + mostRecentEventCount, + selection: {end: -1, start: -1}, }); const lastNativeSelection = lastNativeSelectionState.selection; @@ -228,7 +228,7 @@ function useTextInputStateSynchronization({ lastNativeSelection.end !== selection.end) ) { nativeUpdate.selection = selection; - setLastNativeSelection({selection, mostRecentEventCount}); + setLastNativeSelection({mostRecentEventCount, selection}); } if (Object.keys(nativeUpdate).length === 0) { @@ -256,7 +256,7 @@ function useTextInputStateSynchronization({ viewCommands, ]); - return {setLastNativeText, setLastNativeSelection}; + return {setLastNativeSelection, setLastNativeText}; } /** @@ -402,8 +402,8 @@ function InternalTextInput(props: TextInputProps): React.Node { propsSelection == null ? null : { - start: propsSelection.start, end: propsSelection.end ?? propsSelection.start, + start: propsSelection.start, }; const text = @@ -423,9 +423,9 @@ function InternalTextInput(props: TextInputProps): React.Node { const [mostRecentEventCount, setMostRecentEventCount] = useState(0); const {setLastNativeText, setLastNativeSelection} = useTextInputStateSynchronization({ - props, inputRef, mostRecentEventCount, + props, selection, text, // $FlowFixMe[incompatible-call] @@ -497,6 +497,10 @@ function InternalTextInput(props: TextInputProps): React.Node { ); } }, + getNativeRef(): ?TextInputInstance { + return inputRef.current; + }, + // TODO: Fix this returning true on null === null, when no input is focused isFocused(): boolean { const currentlyFocusedInput = TextInputState.currentlyFocusedInput(); @@ -505,9 +509,6 @@ function InternalTextInput(props: TextInputProps): React.Node { currentlyFocusedInput === inputRef.current ); }, - getNativeRef(): ?TextInputInstance { - return inputRef.current; - }, setSelection(start: number, end: number): void { if (inputRef.current != null) { viewCommands.setTextAndSelection( @@ -557,8 +558,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } setLastNativeSelection({ - selection: event.nativeEvent.selection, mostRecentEventCount, + selection: event.nativeEvent.selection, }); }; @@ -628,6 +629,7 @@ function InternalTextInput(props: TextInputProps): React.Node { const config = useMemo( () => ({ + cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null, hitSlop, onPress: (event: GestureResponderEvent) => { onPress?.(event); @@ -637,9 +639,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } } }, - onPressIn: onPressIn, - onPressOut: onPressOut, - cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null, + onPressIn, + onPressOut, }), [ editable, @@ -865,12 +866,12 @@ function InternalTextInput(props: TextInputProps): React.Node { } // For consistency with iOS set cursor/selectionHandle color as selectionColor const colorProps = { + cursorColor: cursorColor === undefined ? selectionColor : cursorColor, selectionColor, selectionHandleColor: selectionHandleColor === undefined ? selectionColor : selectionHandleColor, - cursorColor: cursorColor === undefined ? selectionColor : cursorColor, }; textInput = ( /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match up @@ -975,8 +976,8 @@ function InternalTextInput(props: TextInputProps): React.Node { } const enterKeyHintToReturnTypeMap = { - enter: 'default', done: 'done', + enter: 'default', go: 'go', next: 'next', previous: 'previous', @@ -985,19 +986,20 @@ const enterKeyHintToReturnTypeMap = { } as const; const inputModeToKeyboardTypeMap = { - none: 'default', - text: 'default', decimal: 'decimal-pad', + email: 'email-address', + none: 'default', numeric: 'number-pad', - tel: 'phone-pad', search: Platform.OS === 'ios' ? ('web-search' as const) : ('default' as const), - email: 'email-address', + tel: 'phone-pad', + text: 'default', url: 'url', } as const; // Map HTML autocomplete values to Android autoComplete values const autoCompleteWebToAutoCompleteAndroidMap = { + 'additional-name': 'name-middle', 'address-line1': 'postal-address-region', 'address-line2': 'postal-address-locality', bday: 'birthdate-full', @@ -1012,12 +1014,11 @@ const autoCompleteWebToAutoCompleteAndroidMap = { country: 'postal-address-country', 'current-password': 'password', email: 'email', + 'family-name': 'name-family', + 'given-name': 'name-given', 'honorific-prefix': 'name-prefix', 'honorific-suffix': 'name-suffix', name: 'name', - 'additional-name': 'name-middle', - 'family-name': 'name-family', - 'given-name': 'name-given', 'new-password': 'password-new', off: 'off', 'one-time-code': 'sms-otp', @@ -1032,33 +1033,33 @@ const autoCompleteWebToAutoCompleteAndroidMap = { // Map HTML autocomplete values to iOS textContentType values const autoCompleteWebToTextContentTypeMap = { + 'additional-name': 'middleName', 'address-line1': 'streetAddressLine1', 'address-line2': 'streetAddressLine2', bday: 'birthdate', 'bday-day': 'birthdateDay', 'bday-month': 'birthdateMonth', 'bday-year': 'birthdateYear', + 'cc-additional-name': 'creditCardMiddleName', 'cc-csc': 'creditCardSecurityCode', + 'cc-exp': 'creditCardExpiration', 'cc-exp-month': 'creditCardExpirationMonth', 'cc-exp-year': 'creditCardExpirationYear', - 'cc-exp': 'creditCardExpiration', - 'cc-given-name': 'creditCardGivenName', - 'cc-additional-name': 'creditCardMiddleName', 'cc-family-name': 'creditCardFamilyName', + 'cc-given-name': 'creditCardGivenName', 'cc-name': 'creditCardName', 'cc-number': 'creditCardNumber', 'cc-type': 'creditCardType', - 'current-password': 'password', country: 'countryName', + 'current-password': 'password', email: 'emailAddress', - name: 'name', - 'additional-name': 'middleName', 'family-name': 'familyName', 'given-name': 'givenName', - nickname: 'nickname', 'honorific-prefix': 'namePrefix', 'honorific-suffix': 'nameSuffix', + name: 'name', 'new-password': 'newPassword', + nickname: 'nickname', off: 'none', 'one-time-code': 'oneTimeCode', organization: 'organizationName', @@ -1135,11 +1136,10 @@ TextInput.displayName = 'TextInput'; // $FlowFixMe[prop-missing] TextInput.State = { - currentlyFocusedInput: TextInputState.currentlyFocusedInput, - + blurTextInput: TextInputState.blurTextInput, currentlyFocusedField: TextInputState.currentlyFocusedField, + currentlyFocusedInput: TextInputState.currentlyFocusedInput, focusTextInput: TextInputState.focusTextInput, - blurTextInput: TextInputState.blurTextInput, }; export type TextInputComponentStatics = $ReadOnly<{ @@ -1157,9 +1157,9 @@ const styles = StyleSheet.create({ const verticalAlignToTextAlignVerticalMap = { auto: 'auto', - top: 'top', bottom: 'bottom', middle: 'center', + top: 'top', } as const; // $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe. diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js index d29d248dcb9..898472e91ad 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableBounce.windows.js @@ -218,7 +218,7 @@ class TouchableBounce extends React.Component< this.state.pressability.configure(this._createPressabilityConfig()); } - componentDidMount(): mixed { + componentDidMount(): unknown { this.state.pressability.configure(this._createPressabilityConfig()); } @@ -232,11 +232,11 @@ export default (function TouchableBounceWrapper({ ref: hostRef, ...props }: { - ref: React.RefSetter, + ref: React.RefSetter, ...$ReadOnly>, }) { return ; } as component( - ref?: React.RefSetter, + ref?: React.RefSetter, ...props: $ReadOnly> )); diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js index b7ff67e9552..4bb4cfaace3 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js @@ -397,7 +397,7 @@ class TouchableNativeFeedback extends React.Component< this.state.pressability.configure(this._createPressabilityConfig()); } - componentDidMount(): mixed { + componentDidMount(): unknown { this.state.pressability.configure(this._createPressabilityConfig()); } diff --git a/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js b/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js index cb154bf7ab6..50ef0dcae0a 100644 --- a/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js @@ -94,32 +94,32 @@ export type TouchableWithoutFeedbackProps = $ReadOnly< | 'no-hide-descendants' ), nativeID?: ?string, - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, /** * When `accessible` is true (which is the default) this may be called when * the OS-specific concept of "blur" occurs, meaning the element lost focus. * Some platforms may not have the concept of blur. */ - onBlur?: ?(event: BlurEvent) => mixed, + onBlur?: ?(event: BlurEvent) => unknown, /** * When `accessible` is true (which is the default) this may be called when * the OS-specific concept of "focus" occurs. Some platforms may not have * the concept of focus. */ - onFocus?: ?(event: FocusEvent) => mixed, + onFocus?: ?(event: FocusEvent) => unknown, /** * Invoked on mount and layout changes with * {nativeEvent: {layout: {x, y, width, height}}} */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when the touch is released, * but not if cancelled (e.g. by a scroll that steals the responder lock). */ - onPress?: ?(event: GestureResponderEvent) => mixed, - onPressIn?: ?(event: GestureResponderEvent) => mixed, - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, + onPressIn?: ?(event: GestureResponderEvent) => unknown, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * When the scroll view is disabled, this defines how far your * touch may move off of the button, before deactivating the button. @@ -290,7 +290,7 @@ const TouchableWithoutFeedback: React.AbstractComponent< // adopting `Pressability`, so preserve that behavior. const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = eventHandlers; - const elementProps: {[string]: mixed, ...} = { + const elementProps: {[string]: unknown, ...} = { ...eventHandlersWithoutBlurAndFocus, accessible: props.accessible !== false, accessibilityState: diff --git a/vnext/src-win/Libraries/Components/View/ViewPropTypes.windows.js b/vnext/src-win/Libraries/Components/View/ViewPropTypes.windows.js index 01591d0c342..691bff5552b 100644 --- a/vnext/src-win/Libraries/Components/View/ViewPropTypes.windows.js +++ b/vnext/src-win/Libraries/Components/View/ViewPropTypes.windows.js @@ -40,7 +40,7 @@ type DirectEventProps = $ReadOnly<{ * when the user performs an accessibility custom action. * */ - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, /** * When `accessible` is true, the system will try to invoke this function @@ -48,7 +48,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onaccessibilitytap */ - onAccessibilityTap?: ?() => mixed, + onAccessibilityTap?: ?() => unknown, /** * Invoked on mount and layout changes with: @@ -61,7 +61,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onlayout */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * When `accessible` is `true`, the system will invoke this function when the @@ -69,7 +69,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onmagictap */ - onMagicTap?: ?() => mixed, + onMagicTap?: ?() => unknown, /** * When `accessible` is `true`, the system will invoke this function when the @@ -77,7 +77,7 @@ type DirectEventProps = $ReadOnly<{ * * See https://reactnative.dev/docs/view#onaccessibilityescape */ - onAccessibilityEscape?: ?() => mixed, + onAccessibilityEscape?: ?() => unknown, }>; type MouseEventProps = $ReadOnly<{ @@ -354,7 +354,7 @@ export type ViewPropsAndroid = $ReadOnly<{ * * @platform android */ - onClick?: ?(event: GestureResponderEvent) => mixed, + onClick?: ?(event: GestureResponderEvent) => unknown, }>; export type TVViewPropsIOS = $ReadOnly<{ diff --git a/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js b/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js index 99ac2a59124..f557c4f7627 100644 --- a/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js +++ b/vnext/src-win/Libraries/Core/Devtools/loadBundleFromServer.windows.js @@ -13,7 +13,10 @@ import DevLoadingView from '../../Utilities/DevLoadingView'; import HMRClient from '../../Utilities/HMRClient'; import getDevServer from './getDevServer'; -declare var global: {globalEvalWithSourceUrl?: (string, string) => mixed, ...}; +declare var global: { + globalEvalWithSourceUrl?: (string, string) => unknown, + ... +}; let pendingRequests = 0; @@ -26,7 +29,7 @@ export class LoadBundleFromServerError extends Error { message: string, url: string, isTimeout: boolean, - options?: {cause: mixed, ...}, + options?: {cause: unknown, ...}, ): void { super(message, options); this.url = url; @@ -40,7 +43,7 @@ export class LoadBundleFromServerRequestError extends LoadBundleFromServerError message: string, url: string, isTimeout: boolean, - options?: {cause: mixed, ...}, + options?: {cause: unknown, ...}, ): void { super(message, url, isTimeout, options); this.name = 'LoadBundleFromServerRequestError'; diff --git a/vnext/src-win/Libraries/Image/Image.windows.js b/vnext/src-win/Libraries/Image/Image.windows.js index 8e663181faf..1df8ff9c7a4 100644 --- a/vnext/src-win/Libraries/Image/Image.windows.js +++ b/vnext/src-win/Libraries/Image/Image.windows.js @@ -35,7 +35,7 @@ import * as React from 'react'; function getSize( uri: string, success?: (width: number, height: number) => void, - failure?: (error: mixed) => void, + failure?: (error: unknown) => void, ): void | Promise { const promise = NativeImageLoaderIOS.getSize(uri).then(([width, height]) => ({ width, @@ -58,7 +58,7 @@ function getSizeWithHeaders( uri: string, headers: {[string]: string, ...}, success?: (width: number, height: number) => void, - failure?: (error: mixed) => void, + failure?: (error: unknown) => void, ): void | Promise { const promise = NativeImageLoaderIOS.getSizeWithHeaders(uri, headers); if (typeof success !== 'function') { diff --git a/vnext/src-win/Libraries/NativeComponent/ViewConfigIgnore.windows.js b/vnext/src-win/Libraries/NativeComponent/ViewConfigIgnore.windows.js index f14c0a218fb..9b2797b88de 100644 --- a/vnext/src-win/Libraries/NativeComponent/ViewConfigIgnore.windows.js +++ b/vnext/src-win/Libraries/NativeComponent/ViewConfigIgnore.windows.js @@ -37,7 +37,7 @@ export function ConditionallyIgnoredEventHandlers< return value; } -export function isIgnored(value: mixed): boolean { +export function isIgnored(value: unknown): boolean { if (typeof value === 'object' && value != null) { return ignoredViewConfigProps.has(value); } diff --git a/vnext/src-win/Libraries/Network/RCTNetworking.windows.js b/vnext/src-win/Libraries/Network/RCTNetworking.windows.js index 72669fbd615..454ce4b9176 100644 --- a/vnext/src-win/Libraries/Network/RCTNetworking.windows.js +++ b/vnext/src-win/Libraries/Network/RCTNetworking.windows.js @@ -20,8 +20,8 @@ import {type NativeResponseType} from './XMLHttpRequest'; const RCTNetworking = { addListener>( eventType: K, - listener: (...RCTNetworkingEventDefinitions[K]) => mixed, - context?: mixed, + listener: (...RCTNetworkingEventDefinitions[K]) => unknown, + context?: unknown, ): EventSubscription { // $FlowFixMe[incompatible-type] return RCTDeviceEventEmitter.addListener(eventType, listener, context); diff --git a/vnext/src-win/Libraries/Pressability/Pressability.windows.js b/vnext/src-win/Libraries/Pressability/Pressability.windows.js index bcc36404cb2..9b833fa2873 100644 --- a/vnext/src-win/Libraries/Pressability/Pressability.windows.js +++ b/vnext/src-win/Libraries/Pressability/Pressability.windows.js @@ -90,12 +90,12 @@ export type PressabilityConfig = $ReadOnly<{ /** * Called after the element loses focus. */ - onBlur?: ?(event: BlurEvent) => mixed, + onBlur?: ?(event: BlurEvent) => unknown, /** * Called after the element is focused. */ - onFocus?: ?(event: FocusEvent) => mixed, + onFocus?: ?(event: FocusEvent) => unknown, /* * Called after a key down event is detected. @@ -110,37 +110,37 @@ export type PressabilityConfig = $ReadOnly<{ /** * Called when the hover is activated to provide visual feedback. */ - onHoverIn?: ?(event: MouseEvent) => mixed, + onHoverIn?: ?(event: MouseEvent) => unknown, /** * Called when the hover is deactivated to undo visual feedback. */ - onHoverOut?: ?(event: MouseEvent) => mixed, + onHoverOut?: ?(event: MouseEvent) => unknown, /** * Called when a long press gesture has been triggered. */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when a press gesture has been triggered. */ - onPress?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press is activated to provide visual feedback. */ - onPressIn?: ?(event: GestureResponderEvent) => mixed, + onPressIn?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press location moves. (This should rarely be used.) */ - onPressMove?: ?(event: GestureResponderEvent) => mixed, + onPressMove?: ?(event: GestureResponderEvent) => unknown, /** * Called when the press is deactivated to undo visual feedback. */ - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPressOut?: ?(event: GestureResponderEvent) => unknown, /** * Whether to prevent any other native components from becoming responder diff --git a/vnext/src-win/Libraries/ReactNative/PaperUIManager.windows.js b/vnext/src-win/Libraries/ReactNative/PaperUIManager.windows.js index ec739cdb348..f2d5432a30b 100644 --- a/vnext/src-win/Libraries/ReactNative/PaperUIManager.windows.js +++ b/vnext/src-win/Libraries/ReactNative/PaperUIManager.windows.js @@ -140,7 +140,7 @@ function lazifyViewManagerConfig(viewName: string) { defineLazyObjectProperty(viewConfig, 'Constants', { get: () => { const viewManager = NativeModules[viewConfig.Manager]; - const constants: {[string]: mixed} = {}; + const constants: {[string]: unknown} = {}; viewManager && Object.keys(viewManager).forEach(key => { const value = viewManager[key]; diff --git a/vnext/src-win/Libraries/Renderer/shims/ReactNativeTypes.windows.js b/vnext/src-win/Libraries/Renderer/shims/ReactNativeTypes.windows.js index ee6ae134cac..3226d4b538b 100644 --- a/vnext/src-win/Libraries/Renderer/shims/ReactNativeTypes.windows.js +++ b/vnext/src-win/Libraries/Renderer/shims/ReactNativeTypes.windows.js @@ -7,7 +7,9 @@ * @noformat * @nolint * @flow strict - * @generated SignedSource<> + * @generated SignedSource<<989e6e2e860dc2af7ba983849111bda8>> + * + * This file was sync'd from the facebook/react repository. */ import type { diff --git a/vnext/src-win/Libraries/Text/Text.windows.js b/vnext/src-win/Libraries/Text/Text.windows.js index 6da31a45a01..930747adbcd 100644 --- a/vnext/src-win/Libraries/Text/Text.windows.js +++ b/vnext/src-win/Libraries/Text/Text.windows.js @@ -759,10 +759,10 @@ const TextImpl: component( TextImpl.displayName = 'Text'; type TextPressabilityProps = $ReadOnly<{ - onLongPress?: ?(event: GestureResponderEvent) => mixed, - onPress?: ?(event: GestureResponderEvent) => mixed, - onPressIn?: ?(event: GestureResponderEvent) => mixed, - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, + onPress?: ?(event: GestureResponderEvent) => unknown, + onPressIn?: ?(event: GestureResponderEvent) => unknown, + onPressOut?: ?(event: GestureResponderEvent) => unknown, onResponderGrant?: ?(event: GestureResponderEvent) => void, onResponderMove?: ?(event: GestureResponderEvent) => void, onResponderRelease?: ?(event: GestureResponderEvent) => void, diff --git a/vnext/src-win/Libraries/Text/TextProps.windows.js b/vnext/src-win/Libraries/Text/TextProps.windows.js index 721c9ee3ba1..e6d478d44a4 100644 --- a/vnext/src-win/Libraries/Text/TextProps.windows.js +++ b/vnext/src-win/Libraries/Text/TextProps.windows.js @@ -122,7 +122,7 @@ export type TextPropsAndroid = { }; type TextBaseProps = $ReadOnly<{ - onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed, + onAccessibilityAction?: ?(event: AccessibilityActionEvent) => unknown, accessibilityLevel?: ?number, // Windows accessibilityPosInSet?: ?number, // Windows accessibilitySetSize?: ?number, // Windows @@ -214,7 +214,7 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onlayout */ - onLayout?: ?(event: LayoutChangeEvent) => mixed, + onLayout?: ?(event: LayoutChangeEvent) => unknown, /** * This function is called on long press. @@ -222,7 +222,7 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onlongpress */ - onLongPress?: ?(event: GestureResponderEvent) => mixed, + onLongPress?: ?(event: GestureResponderEvent) => unknown, /** * This function is called on press. @@ -230,9 +230,9 @@ type TextBaseProps = $ReadOnly<{ * * See https://reactnative.dev/docs/text#onpress */ - onPress?: ?(event: GestureResponderEvent) => mixed, - onPressIn?: ?(event: GestureResponderEvent) => mixed, - onPressOut?: ?(event: GestureResponderEvent) => mixed, + onPress?: ?(event: GestureResponderEvent) => unknown, + onPressIn?: ?(event: GestureResponderEvent) => unknown, + onPressOut?: ?(event: GestureResponderEvent) => unknown, onResponderGrant?: ?(event: GestureResponderEvent) => void, onResponderMove?: ?(event: GestureResponderEvent) => void, onResponderRelease?: ?(event: GestureResponderEvent) => void, @@ -240,7 +240,7 @@ type TextBaseProps = $ReadOnly<{ onResponderTerminationRequest?: ?() => boolean, onStartShouldSetResponder?: ?() => boolean, onMoveShouldSetResponder?: ?() => boolean, - onTextLayout?: ?(event: TextLayoutEvent) => mixed, + onTextLayout?: ?(event: TextLayoutEvent) => unknown, /** * Defines how far your touch may move off of the button, before diff --git a/vnext/src-win/jest/setup.js b/vnext/src-win/jest/setup.js index 580181701bd..e22fe06d5c7 100644 --- a/vnext/src-win/jest/setup.js +++ b/vnext/src-win/jest/setup.js @@ -51,7 +51,7 @@ Object.defineProperties(global, { regeneratorRuntime: { configurable: true, enumerable: true, - value: jest.requireActual('regenerator-runtime/runtime'), + value: jest.requireActual('regenerator-runtime/runtime'), writable: true, }, requestAnimationFrame: { diff --git a/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js index 44dd80056e4..68443c4ad2f 100644 --- a/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js +++ b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js @@ -67,13 +67,13 @@ export function createJavaScriptFlagGetter< ); } -type NativeFeatureFlags = $NonMaybeType; +type NativeFeatureFlags = NonNullable; export function createNativeFlagGetter>( configName: K, - defaultValue: ReturnType<$NonMaybeType>, + defaultValue: ReturnType>, skipUnavailableNativeModuleError: boolean = false, -): Getter>> { +): Getter>> { return createGetter( configName, () => { diff --git a/yarn.lock b/yarn.lock index e471ce06115..dd1f2b90575 100644 --- a/yarn.lock +++ b/yarn.lock @@ -502,7 +502,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7", "@babel/plugin-transform-arrow-functions@^7.27.1": +"@babel/plugin-transform-arrow-functions@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== @@ -569,7 +569,7 @@ "@babel/helper-replace-supers" "^7.28.6" "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.28.6": +"@babel/plugin-transform-computed-properties@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== @@ -653,7 +653,7 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-function-name@^7.25.1", "@babel/plugin-transform-function-name@^7.27.1": +"@babel/plugin-transform-function-name@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== @@ -669,14 +669,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-literals@^7.25.2", "@babel/plugin-transform-literals@^7.27.1": +"@babel/plugin-transform-literals@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.24.7", "@babel/plugin-transform-logical-assignment-operators@^7.28.6": +"@babel/plugin-transform-logical-assignment-operators@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== @@ -746,14 +746,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-numeric-separator@^7.24.7", "@babel/plugin-transform-numeric-separator@^7.28.6": +"@babel/plugin-transform-numeric-separator@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== dependencies: "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-rest-spread@^7.24.7", "@babel/plugin-transform-object-rest-spread@^7.28.6": +"@babel/plugin-transform-object-rest-spread@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== @@ -787,7 +787,7 @@ "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-parameters@^7.24.7", "@babel/plugin-transform-parameters@^7.27.7": +"@babel/plugin-transform-parameters@^7.27.7": version "7.27.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== @@ -884,14 +884,14 @@ babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7", "@babel/plugin-transform-shorthand-properties@^7.27.1": +"@babel/plugin-transform-shorthand-properties@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.28.6": +"@babel/plugin-transform-spread@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== @@ -899,7 +899,7 @@ "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.24.7", "@babel/plugin-transform-sticky-regex@^7.27.1": +"@babel/plugin-transform-sticky-regex@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== @@ -2560,28 +2560,28 @@ resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.11.4.tgz#7fb09506ee00a82989125cc03e8495204c8afc01" integrity sha512-Kf8h1AMnBo54b1fdiVylP2P/iFcZqzpMYcglC28EEFB1DEnOjsNr6Ucqc+3R9e91vHxEDnhZFbYDmAe79P2gjA== -"@react-native/assets-registry@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.84.0-nightly-20251212-dd390dbbe.tgz#fe6376ba287256a3735706c278ed9cc08eb6f2a0" - integrity sha512-Fut5di9BK9kUsI0WAKsPzC3PdaQcSMRPgl2fucnSSOh/ROOymEP90qy2aPoAQvqz+VyXPWeQ9mlSXsN/kMNvww== +"@react-native/assets-registry@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.84.0-nightly-20260107-58bc6c3e3.tgz#458fe52cde4740cd333cc1ba51c6c70d5ae52728" + integrity sha512-5aHTRhfKs6Mbcx0qrmfEbnnyihI+tPpkP5kEndAq753q++Dc7z3m4XC/U5uoLxduYGaNKJq5RjXTdG0abyxRIw== "@react-native/assets@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== -"@react-native/babel-plugin-codegen@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.84.0-nightly-20251212-dd390dbbe.tgz#4f4d8e067eb0d09bbb8f2b4809d0afa85cfcc0b0" - integrity sha512-DcWlBTIXMjxzPVQJLACkTWsyEe38PNhb3FlK1uLTQoZalmZApOkHmk641J5vfOsSYqYFwk2mk5/zK1YFQ+dS1g== +"@react-native/babel-plugin-codegen@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.84.0-nightly-20260107-58bc6c3e3.tgz#fd4ab0e45a63fa81c46dd22e55cd46e9981a2bc5" + integrity sha512-7ihCz8vYHjUwPQpMs0RfGiCNUqx/P5rUxJ37bNTZxiL8ok6+eRq37WN+c0JAWStAP4w81nOkdUNOGpMGzU2jcw== dependencies: "@babel/traverse" "^7.25.3" - "@react-native/codegen" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/codegen" "0.84.0-nightly-20260107-58bc6c3e3" -"@react-native/babel-preset@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.84.0-nightly-20251212-dd390dbbe.tgz#d2a661753efb76f8f2acc71a1a79cb54aeb8c885" - integrity sha512-KyLsdAuLYaDb1pKyDTGKUsE/vu5wnbXm1SNueE41KX6OHGobSOR2fyH1ly9hpfUFOGoyf3DEKEyuH1eonmPIlQ== +"@react-native/babel-preset@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.84.0-nightly-20260107-58bc6c3e3.tgz#a16c47f6a5048ca130e22876e2ad049e4e532f7c" + integrity sha512-ot0E7NOTOCU4mUmXw6ZzfrQN2hfYJ6iL8QFGZivuTrr3DYpkbMzc59HWjAk2j/SGPX8eSCmPBZSsTEdFYNrW4Q== dependencies: "@babel/core" "^7.25.2" "@babel/plugin-proposal-export-default-from" "^7.24.7" @@ -2589,27 +2589,19 @@ "@babel/plugin-syntax-export-default-from" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.24.7" "@babel/plugin-transform-async-generator-functions" "^7.25.4" "@babel/plugin-transform-async-to-generator" "^7.24.7" "@babel/plugin-transform-block-scoping" "^7.25.0" "@babel/plugin-transform-class-properties" "^7.25.4" "@babel/plugin-transform-classes" "^7.25.4" - "@babel/plugin-transform-computed-properties" "^7.24.7" "@babel/plugin-transform-destructuring" "^7.24.8" "@babel/plugin-transform-flow-strip-types" "^7.25.2" "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.25.1" - "@babel/plugin-transform-literals" "^7.25.2" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" "@babel/plugin-transform-modules-commonjs" "^7.24.8" "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" "@babel/plugin-transform-optional-catch-binding" "^7.24.7" "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" "@babel/plugin-transform-private-methods" "^7.24.7" "@babel/plugin-transform-private-property-in-object" "^7.24.7" "@babel/plugin-transform-react-display-name" "^7.24.7" @@ -2618,21 +2610,17 @@ "@babel/plugin-transform-react-jsx-source" "^7.24.7" "@babel/plugin-transform-regenerator" "^7.24.7" "@babel/plugin-transform-runtime" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" "@babel/plugin-transform-typescript" "^7.25.2" "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/template" "^7.25.0" - "@react-native/babel-plugin-codegen" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/babel-plugin-codegen" "0.84.0-nightly-20260107-58bc6c3e3" babel-plugin-syntax-hermes-parser "0.32.0" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.84.0-nightly-20251212-dd390dbbe.tgz#e84347d1b49b74bffc2b8c32be0c4c755e11ed1b" - integrity sha512-dTJv9+HA253feQiCQrcHK7c5XZg9q6XrpBv8tq3+Kex9+TXWeA9MJ2wmiim4sfcviElc1K9jsTTQVJOqqrPiLw== +"@react-native/codegen@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.84.0-nightly-20260107-58bc6c3e3.tgz#b6cc38ac7bec30b0dbfb4ee55a6a08f22f1a6e0f" + integrity sha512-+qLLmg2vQpvODXrVz75Dae8E7YgId6IXFfpDkbbTxPvVWUATr+PIBQWRVLUkueGjmEnqROzTtN+7sRwpEppI1A== dependencies: "@babel/core" "^7.25.2" "@babel/parser" "^7.25.3" @@ -2642,12 +2630,12 @@ tinyglobby "^0.2.15" yargs "^17.6.2" -"@react-native/community-cli-plugin@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.0-nightly-20251212-dd390dbbe.tgz#246a47f55b302a219739ecae01e13bbde431e4f9" - integrity sha512-rPGKhSmMUZXAdlzcPpjjA0E8/z9Cm2mt4yi89kmR2lmngbPbqYLyqD+AK7NQv6fx1zOaPDozwbXyOWi0i97FLA== +"@react-native/community-cli-plugin@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.0-nightly-20260107-58bc6c3e3.tgz#ea9fbc72d59723897a7232bfe316c1f4317757da" + integrity sha512-l5+tHxDfrz/okgZD5a9deG30Z/fGPIOBLgRU2rn6hkMc5hTfNJUsyYjFc2V+Op7XpT4k0pFva2E3NtnvXfWz2Q== dependencies: - "@react-native/dev-middleware" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/dev-middleware" "0.84.0-nightly-20260107-58bc6c3e3" debug "^4.4.0" invariant "^2.2.4" metro "^0.83.3" @@ -2655,27 +2643,27 @@ metro-core "^0.83.3" semver "^7.1.3" -"@react-native/debugger-frontend@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.84.0-nightly-20251212-dd390dbbe.tgz#692659de33d40399f558bc78265f683e85dee4ae" - integrity sha512-w/Zoh3GbTzcAJWm1Lx+B3ynWL620TNwzaMyGwFTWnjE0bcWiKXVMQlZ7b28Nf0deDxg8vOaJ13ysFf1WTwpR+A== +"@react-native/debugger-frontend@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.84.0-nightly-20260107-58bc6c3e3.tgz#1b91b877e7918f2f3cbee6fcbe3f137e929abfa6" + integrity sha512-rY4mE7z1X5pYAV2OzHuMolKvT+3yXmycQ5CtZPEF1ZWMDvBuF7Zzo27vOy/1dP65e72YiZmqP5a0mnsdncviXg== -"@react-native/debugger-shell@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/debugger-shell/-/debugger-shell-0.84.0-nightly-20251212-dd390dbbe.tgz#05f74f2d5d83e4490680ef750e52adbaffceff1d" - integrity sha512-JjYZD2yRBISeqRdMs3CbKP4HFfUWylkUSHYzxrH228yc7NhrmEDOXnrq1DSxv9TsMpzaKRNMzNbBCgMPpNzTDg== +"@react-native/debugger-shell@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-shell/-/debugger-shell-0.84.0-nightly-20260107-58bc6c3e3.tgz#8b6bf76212709c2519a7ce312326c26acdecd118" + integrity sha512-rnKBk11aPgMCovtwZRf8ioFNhU8b+tLwA8jK4rhw2OOTW/hPr6lGp5lLvzqvYt/c7H2/oUIXoRUMEHi79oeetQ== dependencies: cross-spawn "^7.0.6" fb-dotslash "0.5.8" -"@react-native/dev-middleware@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.84.0-nightly-20251212-dd390dbbe.tgz#feefbd59562d96423a1ab13542217c70c47e2308" - integrity sha512-H1zp7vMdEr1m0dqoOXrtKOVp0j4onUQLHEeobT3qbf1afjBTnOnNQSSXAW5zOcXtm/qCILvob02XJefjhJ8xDw== +"@react-native/dev-middleware@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.84.0-nightly-20260107-58bc6c3e3.tgz#27e3b5b662a7bdde798ae3b64882841855679981" + integrity sha512-jhtYbqFOKIjYuSoY+TQ+vpToEMiZe1pHp/vlDEQ4fMlrD7tFul0I7tf8qW/961j4IVoR9IHGitPP/QmeFG10Fg== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/debugger-shell" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/debugger-frontend" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/debugger-shell" "0.84.0-nightly-20260107-58bc6c3e3" chrome-launcher "^0.15.2" chromium-edge-launcher "^0.2.0" connect "^3.6.5" @@ -2686,14 +2674,14 @@ serve-static "^1.16.2" ws "^7.5.10" -"@react-native/eslint-config@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.84.0-nightly-20251212-dd390dbbe.tgz#a0989f8bc06116398479265c259e69c3d3d4fb2a" - integrity sha512-kMw/mEaVNjy2V/bd1IajplY99biEGZNrsXKvB/fEQA1rUFJj7VolSinBnxc62oQNotj03q9Ut90NDM0UaBypDA== +"@react-native/eslint-config@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.84.0-nightly-20260107-58bc6c3e3.tgz#a81a638a373a9a54fca39f84441772886a03cfcf" + integrity sha512-/ozPX9j3Ke8NGyshnGO0dEMS0eMbF3PPrLnpEUxeYmEboP7jJb41yS83I4wjvBOTZ8u05POx/Fs0gyEVOOGqXg== dependencies: "@babel/core" "^7.25.2" "@babel/eslint-parser" "^7.25.1" - "@react-native/eslint-plugin" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/eslint-plugin" "0.84.0-nightly-20260107-58bc6c3e3" "@typescript-eslint/eslint-plugin" "^8.36.0" "@typescript-eslint/parser" "^8.36.0" eslint-config-prettier "^8.5.0" @@ -2704,38 +2692,38 @@ eslint-plugin-react-hooks "^7.0.1" eslint-plugin-react-native "^5.0.0" -"@react-native/eslint-plugin@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.84.0-nightly-20251212-dd390dbbe.tgz#f01a951dd7a34503ee8111d8cf4174189d4e072d" - integrity sha512-9qJKgvU7vJk++ihhcTPhtlGikBAMsijLyAdd/HkcQ7O3x7K1AmrBQ0XBfI7SIw93LVbsZSBx7h0xiH0IXfVuCw== +"@react-native/eslint-plugin@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.84.0-nightly-20260107-58bc6c3e3.tgz#3fdbbb04bb201abd644fd98190ed067ce00409ae" + integrity sha512-qlx8ruM8jyynxOyNhYUJnVrryDbSC4mZ5/L/GUfGUbeP/e0OF1G5hwJA9D284XI9d7VTfXI2gIA/m39wNbsmDw== -"@react-native/gradle-plugin@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.84.0-nightly-20251212-dd390dbbe.tgz#7af4251c768b4c0285821d696632610ba7ec4b4a" - integrity sha512-3FAakCive56vgIh61idX2qhDU1Gvhp793uE/cOyjWbYlZelpG89HLoS7YUSlvxhrR8nqOKuQ2AkooqJMNjwoWw== +"@react-native/gradle-plugin@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.84.0-nightly-20260107-58bc6c3e3.tgz#5e01c9708e82ca7740168906d0c75c60997484dc" + integrity sha512-bbGjG6QIMe8BzotXIaYfqkwZW9J58z/9P7j0gNj+tw4b4R+1AuTEe3qAF+C6Xo3Ak16p+N7VR+rNwDvlzaeLfA== -"@react-native/js-polyfills@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.84.0-nightly-20251212-dd390dbbe.tgz#b7854810b9c2cda2e2f79eb0b14de3b2a2de3ecc" - integrity sha512-2CbRod1/QoEKZQ55H8LowsDqS0vZkd84sLckWfPC7wQkFOD6IJcKVgz0ubuqlAtdH/pY2fNwqevwBAOhDSg5rA== +"@react-native/js-polyfills@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.84.0-nightly-20260107-58bc6c3e3.tgz#49ce0452cfcead11b18f125daf8312b598ef8e0b" + integrity sha512-bkE/uJ5CTcMpAlq5/sguQq3mB/4od93zSRHcUXdrrkGC/I8a1liD3XYCUd2deM4ny/mBXsxAwzWnLRC3jUl0Cw== -"@react-native/metro-babel-transformer@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.84.0-nightly-20251212-dd390dbbe.tgz#54e2bd1fa4be53d9dd671b5012c29c37b7367e81" - integrity sha512-EwoDHa8zmdy71ovMwN3edrB8C5lh4TSIpn7Pr3INLLT630FoRDxCCiqXrQqm7q1fK+kTUOIt1Xs0cx1kqAT0Og== +"@react-native/metro-babel-transformer@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.84.0-nightly-20260107-58bc6c3e3.tgz#ef99c2cb0f8858f8236cf0faa4cb06c75ab78382" + integrity sha512-ZlrnfIheZhs9s33v1pSBwutVoO9n7mjebEW2b5ccwk6QXzFfHTkCf1pVbuX5dD5ge+Y2NcdntbCCQxW3D6PCng== dependencies: "@babel/core" "^7.25.2" - "@react-native/babel-preset" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/babel-preset" "0.84.0-nightly-20260107-58bc6c3e3" hermes-parser "0.32.0" nullthrows "^1.1.1" -"@react-native/metro-config@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.84.0-nightly-20251212-dd390dbbe.tgz#cf99b0dbcb436389cec09763c2775193aaf5ff93" - integrity sha512-KA67gfY+LHXXBL8DhcTYoEtZfU9wiRzRifPj6ewt5O5iOURk+SqON4YHz9Td5UgJGW8MakLPvPA+TFGYy5TPJQ== +"@react-native/metro-config@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.84.0-nightly-20260107-58bc6c3e3.tgz#aa010e0c0b608772ef4d68cafec59557fa9bbd18" + integrity sha512-Qb89Suh9SSNLzOo4KYgmS79l3hWJDKBOGDJZ8lHgvkBCZfLaxZ5yCNpvRGjTTzxKagaxZo1FGsr8wPddzUdB/Q== dependencies: - "@react-native/js-polyfills" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/metro-babel-transformer" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/js-polyfills" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/metro-babel-transformer" "0.84.0-nightly-20260107-58bc6c3e3" metro-config "^0.83.3" metro-runtime "^0.83.3" @@ -2744,27 +2732,27 @@ resolved "https://registry.yarnpkg.com/@react-native/new-app-screen/-/new-app-screen-0.82.0-nightly-20250821-0ef21bf8a.tgz#f7b64f7bd93945bdea0d597d973b11d079bbceb9" integrity sha512-IcNqFAgsUTEt/GxJDW7PaoOS2Sn3iTQijnPGCIBkmlo/PBlnOzOZOXT6nz58aVdWYbHVh9+WTuItv/dpeKgzMg== -"@react-native/new-app-screen@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/new-app-screen/-/new-app-screen-0.84.0-nightly-20251212-dd390dbbe.tgz#957da67daee72de3cc4f00db312f387b566a4a89" - integrity sha512-LNm7jdzQxz1bP+Mpmk5yPnjNHp+OhGiV+yfgjJt7CYcBQZXlpIfWP04T5LxXNlrKlTN8HTuP2xtTLnuJpzZYHQ== +"@react-native/new-app-screen@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/new-app-screen/-/new-app-screen-0.84.0-nightly-20260107-58bc6c3e3.tgz#34ed680213e7fbde3aadb26075f80e578435caff" + integrity sha512-nS2fp4nVP0ZfILX7Xdtojn3NkYunyhCrYJ6wTj1twy1+vNhT1fHJyNltbF6V7dFK33TkYTgvQipORA+5PxULkQ== -"@react-native/normalize-colors@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.84.0-nightly-20251212-dd390dbbe.tgz#d265c1974ef01e72b684a03a75ac28e376bf156f" - integrity sha512-TfcO68100H/EA+j3io5v0JZM0fun7W52hdHvmTo3nWYRl+olCjs3QRyEGVb8KgHbTbKs/N1F9oCQZEFLwL40yQ== +"@react-native/normalize-colors@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.84.0-nightly-20260107-58bc6c3e3.tgz#f30ec7454480699a43fa8bcd109133b4a332bcde" + integrity sha512-2XTCU9R0xR9vMN1MCvDlGm3ivB1yu1o2mugDiOgrSvyjiYcZSPs+3t0lasDCtqsY9fKLzmhlmKmWs3snsghY2Q== -"@react-native/popup-menu-android@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.84.0-nightly-20251212-dd390dbbe.tgz#4f572f5a86f99ce526d4ebed72c2e89b63171a3c" - integrity sha512-TX2ervfCYelP4JvUIaDaZTJqVC091MhrW0oUHtdeh9AUGyv7BJrE46TZnxpLCQq+/suKf4okyPWKFvifDV2/kA== +"@react-native/popup-menu-android@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.84.0-nightly-20260107-58bc6c3e3.tgz#b47bedd9ba831697f85a47c792e38dcd929f8db6" + integrity sha512-SNvqudhKAxVhs+jabHxhj8KcuQ7ezGgJ/woh3soYpi9W2syUr09H9UONaP8rXr3dVjhfHekCYcqeaLYqYMZnWA== dependencies: nullthrows "^1.1.1" -"@react-native/virtualized-lists@0.84.0-nightly-20251212-dd390dbbe": - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.84.0-nightly-20251212-dd390dbbe.tgz#f41612b952c91dc5b36b5d50b5a39190a5a646f0" - integrity sha512-/s+Of6Y9eM6ako571LUQhU005iWlNmp9jSxIEgedl+8L/NYg3sMEoP/kJYJkM1JB3LCN9unRJv7IU/0/iduLRQ== +"@react-native/virtualized-lists@0.84.0-nightly-20260107-58bc6c3e3": + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.84.0-nightly-20260107-58bc6c3e3.tgz#5756c152e8065831f38a07e8b3354ea805f51475" + integrity sha512-gSScacsDiDjzzMHU+Uh7ScjUz8vuHj5p0u13Z0p9QU1jT91AB38O271rWLSX2ekrmTLUlQ0/AdSDYkyheit1Yw== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -3458,7 +3446,7 @@ dependencies: csstype "^3.2.2" -"@types/react@^19.0.0", "@types/react@^19.2.0": +"@types/react@^19.0.0", "@types/react@^19.2.3": version "19.2.14" resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== @@ -6768,10 +6756,10 @@ flow-api-translator@0.32.0: hermes-transform "0.32.0" typescript "5.3.2" -flow-bin@^0.293.0: - version "0.293.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.293.0.tgz#c554b15a2edf587897802696ba553756bf9190cb" - integrity sha512-jLE786Qdhq0hu9BDrWGk1h68Ebda76yERhLuaO8TYZIn+x+nkB5Xtld7AZan8a/tproxfz0nD/n8wA4CbPUu9w== +flow-bin@^0.295.0: + version "0.295.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.295.0.tgz#e404b4e0c1ab4994e09ed3527682014e6b555967" + integrity sha512-r5DHHyygFvMKGIV92elp5R8qzO5EbpBuXd6gMNxWc7W9i1ph4hLqpNnGaJbA6KycppP+hNdN3n0D43vNtIfkoA== flow-enums-runtime@^0.0.6: version "0.0.6" @@ -7313,6 +7301,11 @@ hermes-compiler@0.14.0-commitly-202512102158-39fca9fda: resolved "https://registry.yarnpkg.com/hermes-compiler/-/hermes-compiler-0.14.0-commitly-202512102158-39fca9fda.tgz#19a7a50c768a2f91f7e04b10937e151599efe37b" integrity sha512-gi136ckWTuS3NdyO3G4bvyhKrmIAwz7mPmxSDdWcp585+1CZBpapZJufHnqNok7I9Yp0PoH9ebkH3BhmqbDVDQ== +hermes-compiler@0.16.0-commitly-202601051832-eb1eb2d95: + version "0.16.0-commitly-202601051832-eb1eb2d95" + resolved "https://registry.yarnpkg.com/hermes-compiler/-/hermes-compiler-0.16.0-commitly-202601051832-eb1eb2d95.tgz#b0ad8b74ccbe2f12fa9a8b26ab7aa4fff5673cdc" + integrity sha512-4XewV3cLnIJ0Bw1bZX6+lhNJZYyFY520wOv4e2cPp+n8I3BfaxH7wA+nBPXsqfBppL/jwWkPnN6+Cr9ysB3c7g== + hermes-eslint@0.23.1: version "0.23.1" resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.23.1.tgz#e0801e58bd4a70f01b0b0659805f315ab7ea6691" @@ -11068,7 +11061,7 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^19.1.0: +react-is@^19.1.0, react-is@^19.2.3: version "19.2.4" resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.4.tgz#a080758243c572ccd4a63386537654298c99d135" integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA== @@ -11098,19 +11091,19 @@ react-native-platform-override@0.0.0-canary.1017: upath "^1.2.0" yargs "^16.2.0" -react-native@0.84.0-nightly-20251212-dd390dbbe: - version "0.84.0-nightly-20251212-dd390dbbe" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.84.0-nightly-20251212-dd390dbbe.tgz#d997217c99bf48acdfe10906388bee961cb42468" - integrity sha512-2VTnJX3hHbOAet7/7yAE/+clb8GCVK+zDzMIsykzqT4B1sabhr0z0LFIsR5Kf4MWKkqONSHrDBSQhd+JjoorsA== +react-native@0.84.0-nightly-20260107-58bc6c3e3: + version "0.84.0-nightly-20260107-58bc6c3e3" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.84.0-nightly-20260107-58bc6c3e3.tgz#ea300e9c701ace3978f0f94b82e44bd1dc1a6281" + integrity sha512-0lB9dmQGa6+K5CjFJ8+qEpMXpCu2T82rYKAGqUc/EkHTcaa/TXlw6CD+baysfTW6lL35eHSPBpdsS1bFNHqR2A== dependencies: "@jest/create-cache-key-function" "^29.7.0" - "@react-native/assets-registry" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/codegen" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/community-cli-plugin" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/gradle-plugin" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/js-polyfills" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/normalize-colors" "0.84.0-nightly-20251212-dd390dbbe" - "@react-native/virtualized-lists" "0.84.0-nightly-20251212-dd390dbbe" + "@react-native/assets-registry" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/codegen" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/community-cli-plugin" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/gradle-plugin" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/js-polyfills" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/normalize-colors" "0.84.0-nightly-20260107-58bc6c3e3" + "@react-native/virtualized-lists" "0.84.0-nightly-20260107-58bc6c3e3" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" @@ -11119,7 +11112,7 @@ react-native@0.84.0-nightly-20251212-dd390dbbe: base64-js "^1.5.1" commander "^12.0.0" flow-enums-runtime "^0.0.6" - hermes-compiler "0.14.0-commitly-202512102158-39fca9fda" + hermes-compiler "0.16.0-commitly-202601051832-eb1eb2d95" invariant "^2.2.4" jest-environment-node "^29.7.0" memoize-one "^5.0.0" @@ -11152,10 +11145,18 @@ react-test-renderer@19.1.0: react-is "^19.1.0" scheduler "^0.26.0" -react@19.2.0, react@^19.2.0: - version "19.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.0.tgz#d33dd1721698f4376ae57a54098cb47fc75d93a5" - integrity sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ== +react-test-renderer@19.2.3: + version "19.2.3" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-19.2.3.tgz#d20f5193867c98b2df9e13b4e72bb83f311f6a43" + integrity sha512-TMR1LnSFiWZMJkCgNf5ATSvAheTT2NvKIwiVwdBPHxjBI7n/JbWd4gaZ16DVd9foAXdvDz+sB5yxZTwMjPRxpw== + dependencies: + react-is "^19.2.3" + scheduler "^0.27.0" + +react@19.2.3, react@^19.2.3: + version "19.2.3" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.3.tgz#d83e5e8e7a258cf6b4fe28640515f99b87cd19b8" + integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA== read-pkg-up@^2.0.0: version "2.0.0" @@ -11583,7 +11584,7 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.3.tgz#fcebae3b756cdc8428321805f4b70f16ec0ab5db" integrity sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ== -scheduler@0.27.0: +scheduler@0.27.0, scheduler@^0.27.0: version "0.27.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.27.0.tgz#0c4ef82d67d1e5c1e359e8fc76d3a87f045fe5bd" integrity sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==