From 43ac674608fbae39c6c0df476e785addf5af3e0f Mon Sep 17 00:00:00 2001 From: Anukrati Agrawal Date: Wed, 26 Aug 2026 15:34:04 -0700 Subject: [PATCH 1/3] Integrate React Native 0.86.0-nightly-20260408-8bac1df5a Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 272e5076-5e5a-4139-8412-8b4e7f59f370 --- ...-497539f3-70de-4116-8f1c-df8cc4ea8b66.json | 7 + ...-a76c6195-c6fa-4047-a275-414692facd98.json | 7 + ...-7a8a81c5-7428-42e2-803a-91b91974d8be.json | 7 + ...-1d772d74-03d8-409c-9bb9-54ec4fe59ed8.json | 7 + ...-b70b76c2-bf4c-4b15-b462-c0a9f5ad4d13.json | 7 + ...-56d3c634-0855-48b8-85b8-a6ea301c2204.json | 7 + package.json | 2 +- .../react-native-win32-tester/overrides.json | 6 +- .../react-native-win32-tester/package.json | 6 +- .../js/components/ListExampleShared.win32.js | 2 +- .../src/js/utils/RNTesterList.win32.js | 385 +++++++------- .../react-native-win32/.flowconfig | 4 +- .../react-native-win32/overrides.json | 30 +- .../react-native-win32/package.json | 26 +- .../Components/Pressable/Pressable.win32.js | 4 +- .../Components/TextInput/TextInput.win32.js | 10 +- .../Components/Touchable/Touchable.win32.js | 2 +- .../Core/ReactNativeVersionCheck.win32.js | 2 +- .../Pressability/Pressability.win32.js | 4 +- .../src-win/Libraries/Text/Text.win32.js | 8 +- .../Text/TextNativeComponent.win32.js | 8 +- .../Libraries/Utilities/BackHandler.win32.js | 14 +- .../react-native-win32/src-win/index.win32.js | 28 + .../src-win/index.win32.js.flow | 17 + .../modules/NativeAccessibilityInfoWin32.js | 2 +- .../modules/NativeImageLoaderWin32.js | 2 +- .../modules/NativePlatformConstantsWin.js | 4 +- .../automation-channel/package.json | 2 +- .../@react-native-windows/cli/package.json | 2 +- .../perf-testing/package.json | 2 +- .../tester/overrides.json | 38 +- .../@react-native-windows/tester/package.json | 8 +- .../js/components/TextInlineView.windows.js | 2 +- .../Button/ButtonExample.windows.js | 8 +- .../Switch/SwitchExample.windows.js | 2 +- .../ActivityIndicatorExample.windows.js | 5 +- .../FlatList/FlatList-basic.windows.js | 4 +- .../FlatList/FlatList-multiColumn.windows.js | 4 +- .../FlatList/FlatList-nested.windows.js | 4 +- .../FlatList-stickyHeaders.windows.js | 4 +- .../js/examples/Image/ImageExample.windows.js | 38 +- .../js/examples/Modal/ModalOnShow.windows.js | 4 +- .../Modal/ModalPresentation.windows.js | 4 +- .../Pressable/PressableExample.windows.js | 24 +- .../js/examples/Text/TextExample.windows.js | 4 +- .../TextInput/TextInputExample.windows.js | 8 +- .../Touchable/TouchableExample.windows.js | 20 +- .../js/examples/View/ViewExample.windows.js | 6 +- .../src/js/utils/RNTesterList.windows.js | 490 ++++++++--------- .../@react-native/monorepo/overrides.json | 4 +- packages/@react-native/monorepo/package.json | 8 +- .../js/MyNativeViewNativeComponent.js | 4 +- .../NativeCxxModuleExample.js | 4 +- .../ReportFullyDrawnViewNativeComponent.js | 4 +- .../tester/js/RNTesterApp.ios.js | 2 +- .../tester/js/components/ListExampleShared.js | 2 +- .../tester/js/components/RNTesterButton.js | 2 +- .../tester/js/components/RNTesterText.js | 3 +- .../tester/js/components/RNTesterTitle.js | 2 +- .../tester/js/components/TextInlineView.js | 2 +- .../AccessibilityAndroidExample.js | 2 +- .../Accessibility/AccessibilityExample.js | 3 +- .../ActivityIndicatorExample.js | 5 +- .../tester/js/examples/Alert/AlertExample.js | 4 +- .../js/examples/Animated/AnimatedIndex.js | 4 +- .../examples/Animated/ColorStylesExample.js | 4 +- .../js/examples/Animated/CombineExample.js | 4 +- .../ComposeAnimationsWithEasingExample.js | 6 +- .../js/examples/Animated/ComposingExample.js | 4 +- .../Animated/ContinuousInteractionsExample.js | 6 +- .../js/examples/Animated/EasingExample.js | 4 +- .../js/examples/Animated/FadeInViewExample.js | 6 +- .../js/examples/Animated/LoopingExample.js | 4 +- .../js/examples/Animated/MovingBoxExample.js | 4 +- .../js/examples/Animated/PanGestureExample.js | 4 +- .../Animated/PressabilityWithNativeDrivers.js | 4 +- .../Animated/RotatingImagesExample.js | 4 +- .../Animated/TransformBounceExample.js | 6 +- .../Animated/TransformStylesExample.js | 4 +- .../examples/AnimatedGratuitousApp/AnExApp.js | 2 +- .../AnimatedGratuitousApp/AnExBobble.js | 2 +- .../AnimatedGratuitousApp/AnExChained.js | 2 +- .../AnimatedGratuitousApp/AnExScroll.js | 2 +- .../examples/AnimatedGratuitousApp/AnExSet.js | 3 +- .../AnimatedGratuitousApp/AnExTilt.js | 3 +- .../AnimationBackend/AnimationBackendIndex.js | 4 +- .../AnimationBackend/ChessboardExample.js | 4 +- .../AnimationBackend/SwipeableListExample.js | 8 +- .../js/examples/AppState/AppStateExample.js | 2 +- .../js/examples/Border/BorderExample.js | 4 +- .../js/examples/Button/ButtonExample.js | 10 +- .../ContentURLAndroid/ContentURLAndroid.js | 2 +- .../tester/js/examples/Crash/CrashExample.js | 4 +- .../examples/Dimensions/DimensionsExample.js | 3 +- .../DisplayContents/DisplayContentsExample.js | 4 +- .../DrawerLayoutAndroidExample.js | 3 +- .../CompatibilityAnimatedPointerMove.js | 12 +- .../CompatibilityNativeGestureHandling.js | 4 +- .../ManyPointersPropertiesExample.js | 4 +- ...PointerEventAttributesHoverablePointers.js | 6 +- .../PointerEventAttributesNoHoverPointers.js | 6 +- .../PointerEventPointerMove.js | 2 +- .../PointerEventPrimaryTouchPointer.js | 2 +- .../js/examples/Filter/FilterExample.js | 2 +- .../js/examples/FlatList/FlatList-basic.js | 4 +- .../FlatList/FlatList-contentInset.js | 4 +- .../js/examples/FlatList/FlatList-inverted.js | 4 +- ...FlatList-maintainVisibleContentPosition.js | 4 +- .../examples/FlatList/FlatList-multiColumn.js | 4 +- .../js/examples/FlatList/FlatList-nested.js | 4 +- .../FlatList/FlatList-onEndReached.js | 4 +- .../FlatList/FlatList-onStartReached.js | 4 +- ...Changed-horizontal-noWaitForInteraction.js | 4 +- ...ewableItemsChanged-horizontal-offScreen.js | 4 +- ...msChanged-horizontal-waitForInteraction.js | 4 +- ...ewableItemsChanged-noWaitForInteraction.js | 4 +- ...atList-onViewableItemsChanged-offScreen.js | 4 +- ...ViewableItemsChanged-waitForInteraction.js | 4 +- .../FlatList-onViewableItemsChanged.js | 4 +- .../FlatList/FlatList-stickyHeaders.js | 4 +- .../FlatList/FlatList-withSeparators.js | 4 +- .../examples/FlatList/FlatListExampleIndex.js | 4 +- .../tester/js/examples/Image/ImageExample.js | 38 +- .../InvalidProps/InvalidPropsExample.js | 2 +- .../JSResponderHandlerExample.js | 4 +- .../KeyboardAvoidingViewExample.js | 7 +- .../examples/Layout/LayoutAnimationExample.js | 2 +- .../js/examples/Layout/LayoutEventsExample.js | 4 +- .../js/examples/Layout/LayoutExample.js | 2 +- .../LinearGradient/LinearGradientExample.js | 2 +- .../js/examples/Linking/LinkingExample.js | 2 +- .../MixBlendMode/MixBlendModeExample.js | 3 +- .../tester/js/examples/Modal/ModalOnShow.js | 4 +- .../js/examples/Modal/ModalPresentation.js | 4 +- .../NativeAnimationsExample.js | 2 +- .../OrientationChangeExample.js | 2 +- .../Performance/PerformanceApiExample.js | 62 +-- .../PermissionsAndroid/PermissionsExample.js | 2 +- .../PlatformColor/PlatformColorExample.js | 2 +- .../examples/Playground/RNTesterPlayground.js | 4 +- .../PointerEvents/PointerEventsExample.js | 4 +- .../js/examples/Pressable/PressableExample.js | 24 +- .../tester/js/examples/RTL/RTLExample.js | 10 +- .../RefreshControl/RefreshControlExample.js | 2 +- .../SafeAreaView/SafeAreaViewExample.js | 6 +- .../SectionList/SectionList-scrollable.js | 2 +- .../tester/js/examples/Share/ShareExample.js | 8 +- .../js/examples/StatusBar/StatusBarExample.js | 2 +- .../SwipeableCardExample.js | 2 +- .../js/examples/Switch/SwitchExample.js | 2 +- .../js/examples/Text/TextExample.android.js | 4 +- .../js/examples/Text/TextExample.ios.js | 8 +- .../js/examples/TextInput/ExampleTextInput.js | 3 +- .../TextInput/TextInputExample.android.js | 8 +- .../TextInput/TextInputExample.ios.js | 8 +- .../js/examples/TextInput/TextInputKeyProp.js | 3 +- .../TextInput/TextInputSharedExamples.js | 4 +- .../tester/js/examples/Timer/TimerExample.js | 6 +- .../ToastAndroid/ToastAndroidExample.js | 2 +- .../js/examples/Touchable/TouchableExample.js | 20 +- .../TurboModule/LegacyModuleExample.js | 2 +- .../TurboModule/TurboCxxModuleExample.js | 2 +- .../TurboModule/TurboModuleExample.js | 2 +- .../tester/js/examples/Urls/UrlExample.js | 2 +- .../js/examples/Vibration/VibrationExample.js | 2 +- .../tester/js/examples/View/ViewExample.js | 6 +- .../js/examples/WebSocket/WebSocketExample.js | 2 +- .../tester/js/examples/XHR/XHRExample.js | 2 +- .../js/examples/XHR/XHRExampleBinaryUpload.js | 2 +- .../tester/js/examples/XHR/XHRExampleFetch.js | 2 +- .../js/examples/XHR/XHRExampleHeaders.js | 2 +- .../tester/js/utils/RNTesterList.android.js | 500 +++++++++--------- .../tester/js/utils/RNTesterList.ios.js | 430 +++++++-------- packages/@react-native/tester/overrides.json | 144 ++--- packages/@react-native/tester/package.json | 8 +- .../babel-react-native-config/package.json | 4 +- .../@rnw-scripts/eslint-config/package.json | 2 +- .../@rnw-scripts/integrate-rn/package.json | 2 +- .../metro-dev-config/package.json | 4 +- packages/e2e-test-app-fabric/package.json | 6 +- packages/playground/package.json | 6 +- .../react-native-windows-init/package.json | 2 +- packages/sample-app-fabric/package.json | 6 +- packages/sample-custom-component/package.json | 6 +- vnext/.flowconfig | 4 +- .../AnimatedPropSerializer.cpp | 3 + .../IntegrationTests/IntegrationTestsApp.js | 2 +- vnext/Scripts/Warm-RnwFeedCache.ps1 | 2 +- vnext/overrides.json | 38 +- vnext/package.json | 28 +- .../Components/Pressable/Pressable.windows.js | 4 +- .../ScrollView/ScrollView.windows.js | 6 +- .../Components/Switch/Switch.windows.js | 2 +- .../Components/TextInput/TextInput.windows.js | 10 +- .../WindowsTextInputNativeComponent.js | 2 +- .../Components/Touchable/Touchable.windows.js | 2 +- .../Pressability/Pressability.windows.js | 4 +- vnext/src-win/Libraries/Text/Text.windows.js | 8 +- .../Utilities/BackHandler.windows.js | 14 +- vnext/src-win/index.windows.js | 28 + vnext/src-win/index.windows.js.flow | 20 +- .../RCTModalHostViewNativeComponent.js | 4 +- .../components/SwitchNativeComponent.js | 4 +- .../modules/NativeDialogManagerWindows.js | 2 +- .../modules/NativePlatformConstantsWindows.js | 4 +- yarn.lock | 340 ++++++------ 206 files changed, 1852 insertions(+), 1683 deletions(-) create mode 100644 change/@office-iss-react-native-win32-497539f3-70de-4116-8f1c-df8cc4ea8b66.json create mode 100644 change/@react-native-windows-automation-channel-a76c6195-c6fa-4047-a275-414692facd98.json create mode 100644 change/@react-native-windows-cli-7a8a81c5-7428-42e2-803a-91b91974d8be.json create mode 100644 change/@react-native-windows-perf-testing-1d772d74-03d8-409c-9bb9-54ec4fe59ed8.json create mode 100644 change/react-native-windows-b70b76c2-bf4c-4b15-b462-c0a9f5ad4d13.json create mode 100644 change/react-native-windows-init-56d3c634-0855-48b8-85b8-a6ea301c2204.json diff --git a/change/@office-iss-react-native-win32-497539f3-70de-4116-8f1c-df8cc4ea8b66.json b/change/@office-iss-react-native-win32-497539f3-70de-4116-8f1c-df8cc4ea8b66.json new file mode 100644 index 00000000000..0aea48da477 --- /dev/null +++ b/change/@office-iss-react-native-win32-497539f3-70de-4116-8f1c-df8cc4ea8b66.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "@office-iss/react-native-win32", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-a76c6195-c6fa-4047-a275-414692facd98.json b/change/@react-native-windows-automation-channel-a76c6195-c6fa-4047-a275-414692facd98.json new file mode 100644 index 00000000000..08937042efb --- /dev/null +++ b/change/@react-native-windows-automation-channel-a76c6195-c6fa-4047-a275-414692facd98.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "@react-native-windows/automation-channel", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-cli-7a8a81c5-7428-42e2-803a-91b91974d8be.json b/change/@react-native-windows-cli-7a8a81c5-7428-42e2-803a-91b91974d8be.json new file mode 100644 index 00000000000..1cb185622ea --- /dev/null +++ b/change/@react-native-windows-cli-7a8a81c5-7428-42e2-803a-91b91974d8be.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "@react-native-windows/cli", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-perf-testing-1d772d74-03d8-409c-9bb9-54ec4fe59ed8.json b/change/@react-native-windows-perf-testing-1d772d74-03d8-409c-9bb9-54ec4fe59ed8.json new file mode 100644 index 00000000000..3002ea4451b --- /dev/null +++ b/change/@react-native-windows-perf-testing-1d772d74-03d8-409c-9bb9-54ec4fe59ed8.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "@react-native-windows/perf-testing", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-b70b76c2-bf4c-4b15-b462-c0a9f5ad4d13.json b/change/react-native-windows-b70b76c2-bf4c-4b15-b462-c0a9f5ad4d13.json new file mode 100644 index 00000000000..c5d04e945a4 --- /dev/null +++ b/change/react-native-windows-b70b76c2-bf4c-4b15-b462-c0a9f5ad4d13.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "react-native-windows", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-init-56d3c634-0855-48b8-85b8-a6ea301c2204.json b/change/react-native-windows-init-56d3c634-0855-48b8-85b8-a6ea301c2204.json new file mode 100644 index 00000000000..bb084712f13 --- /dev/null +++ b/change/react-native-windows-init-56d3c634-0855-48b8-85b8-a6ea301c2204.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate React Native 0.86.0-nightly-20260408-8bac1df5a", + "packageName": "react-native-windows-init", + "email": "email not defined", + "dependentChangeType": "patch" +} diff --git a/package.json b/package.json index 4067c6bd672..890ef794190 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "prettier": "^3.6.2", "prettier-plugin-hermes-parser": "0.21.1", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-platform-override": "workspace:*", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index f7e2c6b6cf6..b86b4d32209 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,13 +5,13 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "patch", "file": "src/js/components/ListExampleShared.win32.js", "baseFile": "packages/rn-tester/js/components/ListExampleShared.js", - "baseHash": "5eddedbaff0a785757713beb25750aac98e40fcb" + "baseHash": "df8e829f48192ff86f3e09f47308f18f4f2dacb2" }, { "type": "patch", @@ -42,7 +42,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.win32.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "6c9c1b36ee77323fa1b76235eaab9907ee7c733c" + "baseHash": "31a3c185ebce41969fc8af059b997a3c8442617c" } ] } \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index ea142e37ac1..153cd6982e7 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -11,7 +11,7 @@ "validate-overrides": "react-native-platform-override validate" }, "dependencies": { - "@react-native/tester": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/tester": "0.86.0-nightly-20260408-8bac1df5a", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "flow-enums-runtime": "^0.0.6" @@ -19,7 +19,7 @@ "peerDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.312", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa" + "react-native": "0.86.0-nightly-20260408-8bac1df5a" }, "devDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.312", @@ -32,7 +32,7 @@ "just-scripts": "^1.3.3", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-platform-override": "0.0.0-canary.1023", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js b/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js index efc5ef91680..14e64e2c097 100644 --- a/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js +++ b/packages/@office-iss/react-native-win32-tester/src/js/components/ListExampleShared.win32.js @@ -11,7 +11,7 @@ 'use strict'; import RNTesterText from './RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {memo} from 'react'; import { ActivityIndicator, diff --git a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js index aeecc2212f1..cf8c62f7c6e 100644 --- a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js +++ b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js @@ -122,7 +122,8 @@ const Components: Array = [ key: 'SwipeableCardExample', category: 'UI', module: require('../examples/SwipeableCardExample/SwipeableCardExample'), - }*/ { + }*/ + { key: 'SwitchExample', category: 'UI', module: require('../examples/Switch/SwitchExample'), @@ -166,176 +167,177 @@ const Components: Array = [ ...RNTesterListFbInternal.Components, ]; -const APIs: Array = ([ - { - key: 'AccessibilityExample', - category: 'Basic', - module: require('../examples/Accessibility/AccessibilityExample'), - }, - { - key: 'AccessibilityExampleWin32', - module: require('../examples-win32/Accessibility/AccessibilityExampleWin32'), - }, - { - key: 'AlertExample', - category: 'UI', - module: require('../examples/Alert/AlertExample').default, - }, - { - key: 'AnimatedIndex', - category: 'UI', - module: require('../examples/Animated/AnimatedIndex').default, - }, - { - key: 'AnimationBackendIndex', - category: 'UI', - module: require('../examples/AnimationBackend/AnimationBackendIndex') - .default, - }, - { - key: 'Animation - GratuitousAnimation', - category: 'UI', - module: require('../examples/AnimatedGratuitousApp/AnExApp'), - }, - { - key: 'AppearanceExample', - category: 'UI', - module: require('../examples/Appearance/AppearanceExample'), - }, - { - key: 'AppStateExample', - category: 'Basic', - module: require('../examples/AppState/AppStateExample'), - }, - { - key: 'ContentURLAndroid', - category: 'Android', - module: require('../examples/ContentURLAndroid/ContentURLAndroid'), - }, - { - key: 'URLExample', - category: 'Basic', - module: require('../examples/Urls/UrlExample'), - }, - { - key: 'BorderExample', - category: 'UI', - module: require('../examples/Border/BorderExample').default, - }, - { - key: 'CrashExample', - category: 'Basic', - module: require('../examples/Crash/CrashExample'), - }, - { - key: 'DevSettings', - category: 'Basic', - module: require('../examples/DevSettings/DevSettingsExample'), - }, - { - key: 'Dimensions', - category: 'UI', - module: require('../examples/Dimensions/DimensionsExample'), - }, - { - key: 'DisplayContentsExample', - category: 'UI', - module: require('../examples/DisplayContents/DisplayContentsExample') - .default, - }, - // Only show the link for the example if the API is available. - /*{ +const APIs: Array = ( + [ + { + key: 'AccessibilityExample', + category: 'Basic', + module: require('../examples/Accessibility/AccessibilityExample'), + }, + { + key: 'AccessibilityExampleWin32', + module: require('../examples-win32/Accessibility/AccessibilityExampleWin32'), + }, + { + key: 'AlertExample', + category: 'UI', + module: require('../examples/Alert/AlertExample').default, + }, + { + key: 'AnimatedIndex', + category: 'UI', + module: require('../examples/Animated/AnimatedIndex').default, + }, + { + key: 'AnimationBackendIndex', + category: 'UI', + module: require('../examples/AnimationBackend/AnimationBackendIndex') + .default, + }, + { + key: 'Animation - GratuitousAnimation', + category: 'UI', + module: require('../examples/AnimatedGratuitousApp/AnExApp'), + }, + { + key: 'AppearanceExample', + category: 'UI', + module: require('../examples/Appearance/AppearanceExample'), + }, + { + key: 'AppStateExample', + category: 'Basic', + module: require('../examples/AppState/AppStateExample'), + }, + { + key: 'ContentURLAndroid', + category: 'Android', + module: require('../examples/ContentURLAndroid/ContentURLAndroid'), + }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, + { + key: 'BorderExample', + category: 'UI', + module: require('../examples/Border/BorderExample').default, + }, + { + key: 'CrashExample', + category: 'Basic', + module: require('../examples/Crash/CrashExample'), + }, + { + key: 'DevSettings', + category: 'Basic', + module: require('../examples/DevSettings/DevSettingsExample'), + }, + { + key: 'Dimensions', + category: 'UI', + module: require('../examples/Dimensions/DimensionsExample'), + }, + { + key: 'DisplayContentsExample', + category: 'UI', + module: require('../examples/DisplayContents/DisplayContentsExample') + .default, + }, + // Only show the link for the example if the API is available. + /*{ key: 'FocusEventsExample', module: require('../examples/FocusEventsExample/FocusEventsExample') .default, },*/ - { - key: 'InvalidPropsExample', - module: require('../examples/InvalidProps/InvalidPropsExample'), - }, - { - key: 'Keyboard', - category: 'Basic', - module: require('../examples/Keyboard/KeyboardExample').default, - }, - { - key: 'LayoutEventsExample', - category: 'UI', - module: require('../examples/Layout/LayoutEventsExample'), - }, - { - key: 'LinkingExample', - category: 'Basic', - module: require('../examples/Linking/LinkingExample'), - }, - { - key: 'LayoutExample', - category: 'UI', - module: require('../examples/Layout/LayoutExample'), - }, - { - key: 'NativeAnimationsExample', - category: 'UI', - module: require('../examples/NativeAnimation/NativeAnimationsExample'), - }, - { - key: 'PanResponderExample', - category: 'Basic', - module: require('../examples/PanResponder/PanResponderExample'), - }, - { - key: 'PixelRatio', - category: 'UI', - module: require('../examples/PixelRatio/PixelRatioExample'), - }, - /* + { + key: 'InvalidPropsExample', + module: require('../examples/InvalidProps/InvalidPropsExample'), + }, + { + key: 'Keyboard', + category: 'Basic', + module: require('../examples/Keyboard/KeyboardExample').default, + }, + { + key: 'LayoutEventsExample', + category: 'UI', + module: require('../examples/Layout/LayoutEventsExample'), + }, + { + key: 'LinkingExample', + category: 'Basic', + module: require('../examples/Linking/LinkingExample'), + }, + { + key: 'LayoutExample', + category: 'UI', + module: require('../examples/Layout/LayoutExample'), + }, + { + key: 'NativeAnimationsExample', + category: 'UI', + module: require('../examples/NativeAnimation/NativeAnimationsExample'), + }, + { + key: 'PanResponderExample', + category: 'Basic', + module: require('../examples/PanResponder/PanResponderExample'), + }, + { + key: 'PixelRatio', + category: 'UI', + module: require('../examples/PixelRatio/PixelRatioExample'), + }, + /* { key: 'PermissionsExampleAndroid', category: 'Android', module: require('../examples/PermissionsAndroid/PermissionsExample'), }, */ - { - key: 'PlatformColorExample', - category: 'UI', - module: require('../examples/PlatformColor/PlatformColorExample'), - }, - { - key: 'PointerEventsExample', - category: 'Basic', - module: require('../examples/PointerEvents/PointerEventsExample'), - } /* + { + key: 'PlatformColorExample', + category: 'UI', + module: require('../examples/PlatformColor/PlatformColorExample'), + }, + { + key: 'PointerEventsExample', + category: 'Basic', + module: require('../examples/PointerEvents/PointerEventsExample'), + } /* { key: 'RTLExample', category: 'Basic', module: require('../examples/RTL/RTLExample'), }*/, - { - key: 'ShareExample', - category: 'Basic', - module: require('../examples/Share/ShareExample'), - }, - { - key: 'TimerExample', - category: 'UI', - module: require('../examples/Timer/TimerExample'), - }, + { + key: 'ShareExample', + category: 'Basic', + module: require('../examples/Share/ShareExample'), + }, + { + key: 'TimerExample', + category: 'UI', + module: require('../examples/Timer/TimerExample'), + }, - { - key: 'ThemingExample', - module: require('../examples-win32/Theming/ThemingModuleAPI'), - }, - { - key: 'TransformExample', - category: 'UI', - module: require('../examples/Transform/TransformExample'), - }, - { - key: 'FilterExample', - category: 'UI', - module: require('../examples/Filter/FilterExample'), - }, - /* + { + key: 'ThemingExample', + module: require('../examples-win32/Theming/ThemingModuleAPI'), + }, + { + key: 'TransformExample', + category: 'UI', + module: require('../examples/Transform/TransformExample'), + }, + { + key: 'FilterExample', + category: 'UI', + module: require('../examples/Filter/FilterExample'), + }, + /* { key: 'LinearGradientExample', category: 'UI', @@ -372,42 +374,43 @@ const APIs: Array = ([ module: require('../examples/XHR/XHRExample'), }, */ { - key: 'TurboModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboModuleExample'), - }, - { - key: 'LegacyModuleExample', - module: require('../examples/TurboModule/LegacyModuleExample'), - }, - { - key: 'TurboCxxModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboCxxModuleExample'), - }, - // Basic check to detect the availability of the IntersectionObserver API. - // $FlowExpectedError[cannot-resolve-name] - ...(typeof IntersectionObserver === 'function' - ? [ - { - key: 'IntersectionObserver', - category: 'UI', - module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), - }, - ] - : []), - // Basic check to detect the availability of the modern Performance API. - ...(typeof performance.getEntries === 'function' - ? [ - { - key: 'PerformanceApiExample', - category: 'Basic', - module: require('../examples/Performance/PerformanceApiExample'), - }, - ] - : []), - ...RNTesterListFbInternal.APIs, -]: Array).filter(Boolean); + key: 'TurboModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboModuleExample'), + }, + { + key: 'LegacyModuleExample', + module: require('../examples/TurboModule/LegacyModuleExample'), + }, + { + key: 'TurboCxxModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboCxxModuleExample'), + }, + // Basic check to detect the availability of the IntersectionObserver API. + // $FlowExpectedError[cannot-resolve-name] + ...(typeof IntersectionObserver === 'function' + ? [ + { + key: 'IntersectionObserver', + category: 'UI', + module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), + }, + ] + : []), + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), + ...RNTesterListFbInternal.APIs, + ] as Array +).filter(Boolean); const Playgrounds: Array = [ { diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index cb404cf9a3c..a657cf5c8dc 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -118,8 +118,6 @@ experimental.pattern_matching=true casting_syntax=both component_syntax=true -check_is_status=true - emoji=true exact_by_default=true @@ -173,4 +171,4 @@ untyped-import untyped-type-import [version] -^0.306.1 +^0.308.0 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 681aad7ff29..d94b05fbf48 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,25 +7,25 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "c0ccac81466faa8097c8ec9341c3ffe788c242da" + "baseHash": "6432378bd921ccd4ddb48296f710ec593c82d6e4" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "36c619cbe063dcd12ab4003886209d00e80ab249" + "baseHash": "5b9aa9de98ceb1bc54698f1a6889148d51c73790" }, { "type": "derived", "file": "src-win/index.win32.js.flow", "baseFile": "packages/react-native/index.js.flow", - "baseHash": "d1e1f6a15bd8659d03fb763a86a4de0c855f05c1" + "baseHash": "7e36d1b2b90a74e30b63a14dab2d97ccbb46e579" }, { "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": "5ff66c1735078860d360204d9e4471c05cf0fb1e", + "baseHash": "cf86b53a53968ee3140f5aba8f07ec90c961f2ea", "issue": 6240 }, { @@ -120,7 +120,7 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.win32.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "cedca6e0b5e98b29759cc1ca806313ffa7937eb2" + "baseHash": "63cc3972f4d9d1c369e616dd1a93348595e67a20" }, { "type": "patch", @@ -147,7 +147,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Touchable/Touchable.win32.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/Touchable.js", - "baseHash": "a9e38223753e718c5410a8ca9973064e699c1ab4" + "baseHash": "bb64188fc7f7c760c960de6a66d74048658d2fe5" }, { "type": "derived", @@ -225,7 +225,7 @@ "type": "patch", "file": "src-win/Libraries/Core/ReactNativeVersionCheck.win32.js", "baseFile": "packages/react-native/Libraries/Core/ReactNativeVersionCheck.js", - "baseHash": "b755142f421cc35c549c1d45768779d0910054b7", + "baseHash": "ac97a25a0585d02c5aaacf9a046aece04c4f05d8", "issue": 5170 }, { @@ -365,7 +365,7 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.win32.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "623bd2db2402499786aa79161ec7bfa10577a404", + "baseHash": "65f7013eb707b42f787520de552571102b249fb5", "issue": 6240 }, { @@ -425,13 +425,13 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.win32.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "9e33c80b41f230349924379625a39c9cf68b9d3b" + "baseHash": "c7a8fd756a79aee901d60cf731d3be71199bd3b3" }, { "type": "derived", "file": "src-win/Libraries/Text/TextNativeComponent.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js", - "baseHash": "508e687d6346c5c99bef39d56a6e8230754ba0ef", + "baseHash": "9e39e1294ee45f8c4c7bb7e23e27e8c16e77bf77", "issue": 7074 }, { @@ -451,7 +451,7 @@ "type": "copy", "file": "src-win/Libraries/Utilities/BackHandler.win32.js", "baseFile": "packages/react-native/Libraries/Utilities/BackHandler.android.js", - "baseHash": "dfaab027e0fe3a2d7b6dccd92c1de2a558a5d36c", + "baseHash": "9fa1579308fcafa2d919b6f428e1ef2bdbfb83fc", "issue": 4629 }, { @@ -510,19 +510,19 @@ "type": "derived", "file": "src-win/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js", - "baseHash": "82fc086f675dec489e485c3aabaabe1225ef5f36" + "baseHash": "c36aa0a8347aa80fdc8bdbfc687adf284b7a2cae" }, { "type": "derived", "file": "src-win/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js", - "baseHash": "98c031d5f249af5f8d9198290750825b70827dcc" + "baseHash": "755d9106743414de391e261e31558de5ab28a8d0" }, { "type": "derived", "file": "src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js", - "baseHash": "365c5df75b38b129d364af3f6700cb206ce5bd2a" + "baseHash": "809b3807bafb9b73c95fd5ecf30f2d398f993847" } ] } \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index 554764b6648..466e64da315 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -30,14 +30,14 @@ "@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.86.0-nightly-20260325-d1809f0aa", - "@react-native/codegen": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/community-cli-plugin": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/gradle-plugin": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/js-polyfills": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/normalize-colors": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/virtualized-lists": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/assets-registry": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/codegen": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/community-cli-plugin": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/gradle-plugin": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/js-polyfills": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/normalize-colors": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/virtualized-lists": "0.86.0-nightly-20260408-8bac1df5a", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -76,7 +76,7 @@ "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@babel/preset-env": "^7.25.3", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@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", @@ -88,20 +88,20 @@ "@types/prop-types": "15.7.1", "@types/react": "^19.2.3", "eslint": "^8.19.0", - "flow-bin": "^0.306.1", + "flow-bin": "^0.308.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-platform-override": "0.0.0-canary.1023", "typescript": "5.0.4" }, "peerDependencies": { - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa" + "react-native": "0.86.0-nightly-20260408-8bac1df5a" }, "beachball": { "defaultNpmTag": "canary", 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 18e3f4d400e..3cd10dccf10 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 @@ -414,7 +414,7 @@ function usePressState(forcePressed: boolean): [boolean, (boolean) => void] { const MemoedPressable = memo(Pressable); MemoedPressable.displayName = 'Pressable'; -export default (MemoedPressable: component( +export default MemoedPressable as component( ref?: React.RefSetter>, ...props: PressableProps -)); +); 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 a61603350b8..5e216b1a7a6 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 @@ -759,14 +759,14 @@ function InternalTextInput(props: TextInputProps): React.Node { if (flattenedStyle != null) { let overrides: ?{...TextStyleInternal} = null; if (typeof flattenedStyle?.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.fontWeight = // $FlowFixMe[incompatible-type] - (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + flattenedStyle.fontWeight.toString() as TextStyleInternal['fontWeight']; } if (flattenedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign]; overrides.verticalAlign = undefined; @@ -797,7 +797,7 @@ function InternalTextInput(props: TextInputProps): React.Node { textInput = ( void)), - onPointerLeave: (undefined: void | (PointerEvent => void)), + onPointerEnter: undefined as void | (PointerEvent => void), + onPointerLeave: undefined as void | (PointerEvent => void), }; const {onHoverIn, onHoverOut} = this._config; if (onHoverIn != null) { 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 dbcc4ad391f..381878740b3 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 @@ -227,20 +227,20 @@ const TextImpl: component( if (processedStyle != null) { let overrides: ?{...TextStyleInternal} = null; if (typeof processedStyle.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.fontWeight = // $FlowFixMe[incompatible-type] - (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); + String(processedStyle.fontWeight) as TextStyleInternal['fontWeight']; } if (processedStyle.userSelect != null) { _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.userSelect = undefined; } if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; overrides.verticalAlign = undefined; 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 e47d5b9edb8..f631af77aef 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 @@ -111,9 +111,9 @@ const virtualTextViewConfig = { // Additional note: Our long term plan is to reduce the overhead of the // and wrappers so that we no longer have any reason to export these APIs. export const NativeText: HostComponent = - (createReactNativeComponentClass('RCTText', () => + createReactNativeComponentClass('RCTText', () => createViewConfig(textViewConfig), - ): any); + ) as any; export const NativeVirtualText: HostComponent = !global.RN$Bridgeless && @@ -121,7 +121,7 @@ export const NativeVirtualText: HostComponent = ? NativeText : (createReactNativeComponentClass('RCTVirtualText', () => createViewConfig(virtualTextViewConfig), - ): any); + ) as any); export const NativeSelectableText: HostComponent = enablePreparedTextLayout() @@ -130,5 +130,5 @@ export const NativeSelectableText: HostComponent = ...textViewConfig, uiViewClassName: 'RCTSelectableText', }), - ): any) + ) as any) : NativeText; diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/BackHandler.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/BackHandler.win32.js index ff468f6500f..d29e71fa07b 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/BackHandler.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/BackHandler.win32.js @@ -9,18 +9,26 @@ */ import NativeDeviceEventManager from '../../Libraries/NativeModules/specs/NativeDeviceEventManager'; +import {setEventInitTimeStamp} from '../../src/private/webapis/dom/events/internals/EventInternals'; import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter'; +import {HardwareBackPressEvent} from './HardwareBackPressEvent'; const DEVICE_BACK_EVENT = 'hardwareBackPress'; type BackPressEventName = 'backPress' | 'hardwareBackPress'; -type BackPressHandler = () => ?boolean; +type BackPressHandler = (event: HardwareBackPressEvent) => ?boolean; const _backPressSubscriptions: Array = []; -RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function () { +RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function (nativeEvent) { + const options = {}; + const nativeTimestamp = nativeEvent?.timeStamp; + if (nativeTimestamp != null) { + setEventInitTimeStamp(options, nativeTimestamp); + } + const event = new HardwareBackPressEvent(options); for (let i = _backPressSubscriptions.length - 1; i >= 0; i--) { - if (_backPressSubscriptions[i]?.()) { + if (_backPressSubscriptions[i]?.(event)) { return; } } diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index c2fcdec1c14..f9c235fde63 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js @@ -157,6 +157,34 @@ module.exports = { get unstable_VirtualView() { return require('./src/private/components/virtualview/VirtualView').default; }, + get unstable_VirtualArray() { + return require('./src/private/components/virtualcollection/Virtual') + .VirtualArray; + }, + get unstable_createVirtualCollectionView() { + return require('./src/private/components/virtualcollection/VirtualCollectionView') + .createVirtualCollectionView; + }, + get unstable_VirtualColumn() { + return require('./src/private/components/virtualcollection/column/VirtualColumn') + .default; + }, + get unstable_VirtualColumnGenerator() { + return require('./src/private/components/virtualcollection/column/VirtualColumnGenerator') + .default; + }, + get unstable_VirtualRow() { + return require('./src/private/components/virtualcollection/row/VirtualRow') + .default; + }, + get unstable_getScrollParent() { + return require('./src/private/components/virtualcollection/dom/getScrollParent') + .default; + }, + get unstable_DEFAULT_INITIAL_NUM_TO_RENDER() { + return require('./src/private/components/virtualcollection/FlingConstants') + .DEFAULT_INITIAL_NUM_TO_RENDER; + }, // #endregion // #region APIs get AccessibilityInfo() { diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js.flow b/packages/@office-iss/react-native-win32/src-win/index.win32.js.flow index 1e79e3c15f6..7ddf46abc9e 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js.flow +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js.flow @@ -480,6 +480,23 @@ export { } from './src/private/components/virtualview/VirtualView'; export type {ModeChangeEvent} from './src/private/components/virtualview/VirtualView'; +export {VirtualArray as unstable_VirtualArray} from './src/private/components/virtualcollection/Virtual'; +export type { + Item as unstable_VirtualItem, + VirtualCollection as unstable_VirtualCollection, +} from './src/private/components/virtualcollection/Virtual'; +export {createVirtualCollectionView as unstable_createVirtualCollectionView} from './src/private/components/virtualcollection/VirtualCollectionView'; +export type { + VirtualCollectionGenerator as unstable_VirtualCollectionGenerator, + VirtualCollectionLayoutComponent as unstable_VirtualCollectionLayoutComponent, + VirtualCollectionViewComponent as unstable_VirtualCollectionViewComponent, +} from './src/private/components/virtualcollection/VirtualCollectionView'; +export {default as unstable_VirtualColumn} from './src/private/components/virtualcollection/column/VirtualColumn'; +export {default as unstable_VirtualColumnGenerator} from './src/private/components/virtualcollection/column/VirtualColumnGenerator'; +export {default as unstable_VirtualRow} from './src/private/components/virtualcollection/row/VirtualRow'; +export {default as unstable_getScrollParent} from './src/private/components/virtualcollection/dom/getScrollParent'; +export {DEFAULT_INITIAL_NUM_TO_RENDER as unstable_DEFAULT_INITIAL_NUM_TO_RENDER} from './src/private/components/virtualcollection/FlingConstants'; + // Win32 Specific exports /* $FlowFixMe[untyped-import] */ export {ColorGradientWin32} from './Libraries/StyleSheet/PlatformColorValueTypesWin32'; diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js index ee6436268a3..2c7b4205f5e 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfoWin32.js @@ -45,4 +45,4 @@ export interface Spec extends TurboModule { ) => void; } -export default (TurboModuleRegistry.get('AccessibilityInfo'): ?Spec); +export default TurboModuleRegistry.get('AccessibilityInfo') as ?Spec; diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js index 2aa557bbb55..dd446299c01 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativeImageLoaderWin32.js @@ -42,4 +42,4 @@ export interface Spec extends TurboModule { // Win32] } -export default (TurboModuleRegistry.getEnforcing('ImageLoader'): Spec); +export default TurboModuleRegistry.getEnforcing('ImageLoader') as Spec; diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js index 353b279c4ca..c7a6d609c0c 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWin.js @@ -34,6 +34,6 @@ export interface Spec extends TurboModule { +getConstants: () => PlatformConstantsWin32; } -export default (TurboModuleRegistry.getEnforcing( +export default TurboModuleRegistry.getEnforcing( 'PlatformConstants', -): Spec); +) as Spec; diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index 3feb9d5f402..a26e190399d 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -33,7 +33,7 @@ "just-scripts": "^1.3.2", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060", "typescript": "5.0.4" }, diff --git a/packages/@react-native-windows/cli/package.json b/packages/@react-native-windows/cli/package.json index a9438e21054..809a427c009 100644 --- a/packages/@react-native-windows/cli/package.json +++ b/packages/@react-native-windows/cli/package.json @@ -66,7 +66,7 @@ "jest": "^29.7.0", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "typescript": "5.0.4" }, "peerDependencies": { diff --git a/packages/@react-native-windows/perf-testing/package.json b/packages/@react-native-windows/perf-testing/package.json index f680b5eec55..d018b3a2bef 100644 --- a/packages/@react-native-windows/perf-testing/package.json +++ b/packages/@react-native-windows/perf-testing/package.json @@ -36,7 +36,7 @@ "peerDependencies": { "jest": ">=29.0.3", "react": ">=18.0.0", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-test-renderer": ">=18.0.0" }, "peerDependenciesMeta": { diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 3f33b19e5a2..58f276df41b 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,38 +5,38 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "copy", "file": "js/examples/ContentURLAndroid/ContentURLAndroid.js", "baseFile": "packages/rn-tester/js/examples/ContentURLAndroid/ContentURLAndroid.js", - "baseHash": "99a33bffbea3e776edbfca9f26de146995cbe9d0", + "baseHash": "39f01dd662f661a906fba2da29e5ebd5e5b3a155", "issue": 14844 }, { "type": "derived", "file": "src/js/components/TextInlineView.windows.js", "baseFile": "packages/rn-tester/js/components/TextInlineView.js", - "baseHash": "c3ef9781d473fa5fd4d0a93842ee875536b19eb2" + "baseHash": "eb6acf659f499dfb8e0c49414c81554973b70aaa" }, { "type": "derived", "file": "src/js/examples-win/Button/ButtonExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Button/ButtonExample.js", - "baseHash": "69d270a73a83ff51ba78d174600e50edd1fe2c42" + "baseHash": "5b8790f6ee1331deae0163cf8b5c09b2d9f97b72" }, { "type": "derived", "file": "src/js/examples-win/Switch/SwitchExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Switch/SwitchExample.js", - "baseHash": "80662bdca686778c035ca49095f3121afdfe0c93" + "baseHash": "5f3ca96c4ef73b03d28b7a2d6bd7330c8d86cf53" }, { "type": "patch", "file": "src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js", "baseFile": "packages/rn-tester/js/examples/ActivityIndicator/ActivityIndicatorExample.js", - "baseHash": "35832d0f01bfc434ce7ebadb4aeb6b6a4b21cc64", + "baseHash": "80a2468c9d1579d6f88a54982628183c7920f482", "issue": 12869 }, { @@ -50,28 +50,28 @@ "type": "patch", "file": "src/js/examples/FlatList/FlatList-basic.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-basic.js", - "baseHash": "41945de10fceadb15bebb03f7c386e5f1d7cc59a", + "baseHash": "a0c1221da66d97bdc7a0c08f8528d3b2646c5071", "issue": 12869 }, { "type": "copy", "file": "src/js/examples/FlatList/FlatList-multiColumn.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-multiColumn.js", - "baseHash": "13f7c3f3ddfc847cadbafa7c4137b1150f87e053", + "baseHash": "25cc6d6b728deefed0b6abce81c5710f8e34708e", "issue": 12869 }, { "type": "patch", "file": "src/js/examples/FlatList/FlatList-nested.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-nested.js", - "baseHash": "45f9ec2ee31f7d7d1fada2709bc2ac6b54564bdf", + "baseHash": "8af3316951172a89f92ea7fcd164fa13faef652c", "issue": 12869 }, { "type": "patch", "file": "src/js/examples/FlatList/FlatList-stickyHeaders.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/FlatList-stickyHeaders.js", - "baseHash": "1b4aa52a4c1779607b5bd74c475dd23db152900c" + "baseHash": "b5c8bdfcbbc066dba155bed95cb20c0dbc4d74f6" }, { "type": "platform", @@ -85,33 +85,33 @@ "type": "patch", "file": "src/js/examples/Image/ImageExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Image/ImageExample.js", - "baseHash": "885ebdd53ac7f33e1fd4d81b4d41de15e530ebe9", + "baseHash": "f69e611d660df1bb767d61e1c0fe5b5c2fae378a", "issue": 12869 }, { "type": "patch", "file": "src/js/examples/Modal/ModalOnShow.windows.js", "baseFile": "packages/rn-tester/js/examples/Modal/ModalOnShow.js", - "baseHash": "911507abcf9172b5fdd1bb68faaf02562df704d4" + "baseHash": "4c695e7f73e9c3e71482e1993a3107168cb7955d" }, { "type": "patch", "file": "src/js/examples/Modal/ModalPresentation.windows.js", "baseFile": "packages/rn-tester/js/examples/Modal/ModalPresentation.js", - "baseHash": "1c53d7015caa0706d0197423c1f51fcb0c69d872" + "baseHash": "361308f1e6362f42be2d04c02995c227d8f947e7" }, { "type": "patch", "file": "src/js/examples/Pressable/PressableExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Pressable/PressableExample.js", - "baseHash": "e80fa7c12100c3744d39be075d3a09d5ac2466af", + "baseHash": "a88dce30ae4ba4b334b903b2f85663a054b3603c", "issue": 6240 }, { "type": "derived", "file": "src/js/examples/Text/TextExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Text/TextExample.android.js", - "baseHash": "f69c13423c37eb7de8864b9c846249dce4e77d29" + "baseHash": "b5e53c2dce9be6e4fefa9a60b7229a4114208fd6" }, { "type": "patch", @@ -124,14 +124,14 @@ "type": "patch", "file": "src/js/examples/TextInput/TextInputExample.windows.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.android.js", - "baseHash": "b6ab9814dd71d6411856a445839a07c3c34e369d", + "baseHash": "3cc8ea65c4cd7b5fb2c0c96a1352ea2dab43b732", "issue": 5688 }, { "type": "derived", "file": "src/js/examples/Touchable/TouchableExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Touchable/TouchableExample.js", - "baseHash": "d56cdb355fd6edfcec3ce22eef7ef50223f709ff" + "baseHash": "fe9d2a6d6340dd18639b97a46b3757d71fc52ffe" }, { "type": "patch", @@ -143,7 +143,7 @@ "type": "patch", "file": "src/js/examples/View/ViewExample.windows.js", "baseFile": "packages/rn-tester/js/examples/View/ViewExample.js", - "baseHash": "8aa56a53370fb53150956fbeb9f5d82c00b677e8" + "baseHash": "3ff31e95e684d224a0493422a28956b6a71d34b4" }, { "type": "copy", @@ -156,7 +156,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.windows.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "6c9c1b36ee77323fa1b76235eaab9907ee7c733c" + "baseHash": "31a3c185ebce41969fc8af059b997a3c8442617c" } ] } \ No newline at end of file diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index 987162c594f..76de3457645 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -19,7 +19,7 @@ "peerDependencies": { "@react-native-picker/picker": "2.11.0", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060", "react-native-xaml": "^0.0.80" }, @@ -33,8 +33,8 @@ }, "devDependencies": { "@react-native-picker/picker": "2.11.0", - "@react-native/new-app-screen": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/tester": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/new-app-screen": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/tester": "0.86.0-nightly-20260408-8bac1df5a", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/just-task": "2.3.58", @@ -44,7 +44,7 @@ "just-scripts": "^1.3.3", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-platform-override": "0.0.0-canary.1023", "react-native-windows": "^0.0.0-canary.1060", "typescript": "5.0.4" diff --git a/packages/@react-native-windows/tester/src/js/components/TextInlineView.windows.js b/packages/@react-native-windows/tester/src/js/components/TextInlineView.windows.js index 970946eb65b..a66a30d5103 100644 --- a/packages/@react-native-windows/tester/src/js/components/TextInlineView.windows.js +++ b/packages/@react-native-windows/tester/src/js/components/TextInlineView.windows.js @@ -11,7 +11,7 @@ 'use strict'; import RNTesterText from '../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Image, TouchableHighlight, View} from 'react-native'; const INLINE_IMAGE1 = diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js index e2757c7e9ac..ec329cf80e3 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Button/ButtonExample.windows.js @@ -47,7 +47,7 @@ exports.examples = [ name: 'color-red', description: ('Note: On iOS, the color prop controls the color of the text. On ' + - 'Android, the color adjusts the background color of the button.': string), + 'Android, the color adjusts the background color of the button.') as string, render: function (): React.Node { return ( @@ -71,7 +71,7 @@ exports.examples = [ name: 'two-buttons-flexbox', description: ('Two buttons wrapped inside view with justifyContent: spaceBetween,' + - 'This layout strategy lets the title define the width of the button': string), + 'This layout strategy lets the title define the width of the button') as string, render: function (): React.Node { return ( @@ -170,7 +170,7 @@ exports.examples = [ { title: 'Button with accessibilityLabel="label"', description: ('Note: This prop changes the text that a screen ' + - 'reader announces (there are no visual differences).': string), + 'reader announces (there are no visual differences).') as string, render: function (): React.Node { return ( @@ -193,7 +193,7 @@ exports.examples = [ title: 'Button with accessibilityState={{disabled: true}}', description: ('Note: This prop will announce on TalkBack that the button is disabled. ' + - 'The "disabled" prop has higher precedence on the state of the component': string), + 'The "disabled" prop has higher precedence on the state of the component') as string, render: function (): React.Node { return ( diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js index fc6b71b6b19..50ce2377abb 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples-win/Switch/SwitchExample.windows.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Platform, Switch, View} from 'react-native'; type OnOffIndicatorProps = Readonly<{on: boolean, testID: string}>; diff --git a/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js index 649a19990b8..905c3e34539 100644 --- a/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/ActivityIndicator/ActivityIndicatorExample.windows.js @@ -11,7 +11,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {Node} from 'react'; -import React, {useCallback, useEffect, useRef, useState} from 'react'; +import * as React from 'react'; +import {useCallback, useEffect, useRef, useState} from 'react'; import {ActivityIndicator, StyleSheet, View} from 'react-native'; function ToggleAnimatingActivityIndicator() { @@ -61,7 +62,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.category = 'UI'; exports.framework = 'React'; exports.title = 'ActivityIndicator'; 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 42e786bc487..2037b6d509a 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 @@ -438,9 +438,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Basic', name: 'basic', description: 'Simple list of items', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; 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 a0b043de57f..4b54ba987c8 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 @@ -196,9 +196,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'MultiColumn', name: 'multicolumn', description: 'Performant, scrollable grid of data', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-nested.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-nested.windows.js index 38c4456841f..2a13a9a99ee 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-nested.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-nested.windows.js @@ -331,9 +331,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Nested', description: 'Nested FlatLists of same and opposite orientation', name: 'nested', render: NestedListExample, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-stickyHeaders.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-stickyHeaders.windows.js index a9c540675ed..2f8bcc45611 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-stickyHeaders.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/FlatList-stickyHeaders.windows.js @@ -66,9 +66,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Sticky Headers', name: 'stickyHeaders', description: 'Test sticky headers on FlatList', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; 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 aae30809742..6682443cdf6 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 @@ -16,7 +16,7 @@ import type {ImageProps, LayoutChangeEvent} from 'react-native'; import RNTesterButton from '../../components/RNTesterButton'; import RNTesterText from '../../components/RNTesterText'; import ImageCapInsetsExample from './ImageCapInsetsExample'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useState} from 'react'; import {Image, ImageBackground, StyleSheet, Text, View} from 'react-native'; @@ -1144,7 +1144,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.framework = 'React'; exports.title = 'Image'; exports.category = 'Basic'; @@ -1155,7 +1155,7 @@ exports.examples = [ { title: 'Plain Network Image with `source` prop.', description: ('If the `source` prop `uri` property is prefixed with ' + - '"http", then it will be downloaded from the network.': string), + '"http", then it will be downloaded from the network.') as string, render: function (): React.Node { return ( ; }, @@ -1213,7 +1213,7 @@ exports.examples = [ name: 'static-image', description: ('Static assets should be placed in the source code tree, and ' + - 'required in the same way as JavaScript modules.': string), + 'required in the same way as JavaScript modules.') as string, render: function (): React.Node { return ( @@ -1547,7 +1547,7 @@ exports.examples = [ title: 'Tint Color', name: 'tint-color', description: ('The `tintColor` prop changes all the non-alpha ' + - 'pixels to the tint color.': string), + 'pixels to the tint color.') as string, render: function (): React.Node { return ( @@ -1699,7 +1699,7 @@ exports.examples = [ { title: 'Object Fit', description: ('The `objectFit` style prop controls how the image is ' + - 'rendered within the frame.': string), + 'rendered within the frame.') as string, render: function (): React.Node { return ( @@ -1767,7 +1767,7 @@ exports.examples = [ { title: 'Resize Mode', description: ('The `resizeMode` style prop controls how the image is ' + - 'rendered within the frame.': string), + 'rendered within the frame.') as string, render: function (): React.Node { return ( @@ -1895,7 +1895,7 @@ exports.examples = [ ('When the image is resized, the corners of the size specified ' + 'by capInsets will stay a fixed size, but the center content and ' + 'borders of the image will be stretched. This is useful for creating ' + - 'resizable rounded buttons, shadows, and other resizable assets.': string), + 'resizable rounded buttons, shadows, and other resizable assets.') as string, render: function (): React.Node { return ; }, @@ -1911,7 +1911,7 @@ exports.examples = [ title: 'MultipleSourcesExample', description: ('The `source` prop allows passing in an array of uris, so that native to choose which image ' + - 'to diplay based on the size of the of the target image': string), + 'to diplay based on the size of the of the target image') as string, render: function (): React.Node { return ; }, @@ -1921,7 +1921,7 @@ exports.examples = [ { title: 'Legacy local image', description: ('Images shipped with the native bundle, but not managed ' + - 'by the JS packager': string), + 'by the JS packager') as string, render: function (): React.Node { return ( ; }, @@ -2064,7 +2064,7 @@ exports.examples = [ { title: 'Loading Indicator Source', description: - ('This prop is used to set the resource that will be used as the loading indicator for the image (displayed until the image is ready to be displayed).': string), + 'This prop is used to set the resource that will be used as the loading indicator for the image (displayed until the image is ready to be displayed).' as string, render: function (): React.Node { return ; }, @@ -2072,7 +2072,7 @@ exports.examples = [ { title: 'On Layout', description: - ('This prop is used to set the handler function to be called when the image is mounted or its layout changes. The function receives an event with `{nativeEvent: {layout: {x, y, width, height}}}`': string), + 'This prop is used to set the handler function to be called when the image is mounted or its layout changes. The function receives an event with `{nativeEvent: {layout: {x, y, width, height}}}`' as string, render: function (): React.Node { return ; }, @@ -2080,7 +2080,7 @@ exports.examples = [ { title: 'On Partial Load', description: - ('This prop is used to set the handler function to be called when the partial load of the image is complete. This is meant for progressive JPEG loads.': string), + 'This prop is used to set the handler function to be called when the partial load of the image is complete. This is meant for progressive JPEG loads.' as string, render: function (): React.Node { return ; }, diff --git a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalOnShow.windows.js b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalOnShow.windows.js index 7490c24d868..5fa205f0f48 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalOnShow.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalOnShow.windows.js @@ -132,10 +132,10 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: "Modal's onShow/onDismiss", name: 'onShow', description: 'onShow and onDismiss (iOS only) callbacks are called when a modal is shown/dismissed', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; 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 4015de904c5..9b641a9660c 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 @@ -415,9 +415,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { description: 'Modals can be presented with or without animation', name: 'basic', render: (): React.Node => , title: 'Modal Presentation', -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js index 94dc652d55a..4a7931345bd 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Pressable/PressableExample.windows.js @@ -558,7 +558,7 @@ const examples = [ { title: 'Change child based on Press', description: - ('You should be able to press the button, move your finger while pressing, and release it with the proper status updates.': string), + 'You should be able to press the button, move your finger while pressing, and release it with the proper status updates.' as string, render(): React.Node { return ( @@ -586,7 +586,7 @@ const examples = [ title: 'Pressable feedback events', name: 'feedback-events', description: (' components accept onPress, onPressIn, ' + - 'onPressOut, and onLongPress as props.': string), + 'onPressOut, and onLongPress as props.') as string, render: function (): React.Node { return ; }, @@ -594,7 +594,7 @@ const examples = [ { title: 'Pressable with Ripple and Animated child', description: - ('Pressable can have an AnimatedComponent as a direct child.': string), + 'Pressable can have an AnimatedComponent as a direct child.' as string, platform: 'android', render: function (): React.Node { const mScale = new Animated.Value(1); @@ -621,7 +621,7 @@ const examples = [ { title: 'Pressable with custom Ripple', description: - ("Pressable can specify ripple's radius, color and borderless params": string), + "Pressable can specify ripple's radius, color and borderless params" as string, platform: 'android', render: function (): React.Node { const nativeFeedbackButton = { @@ -707,7 +707,7 @@ const examples = [ title: 'Pressable delay for events', description: (' also accept delayPressIn, ' + 'delayPressOut, and delayLongPress as props. These props impact the ' + - 'timing of feedback events.': string), + 'timing of feedback events.') as string, render: function (): React.Node { return ; }, @@ -726,7 +726,7 @@ const examples = [ name: 'hit-slop', description: (' components accept hitSlop prop which extends the touch area ' + - 'without changing the view bounds.': string), + 'without changing the view bounds.') as string, render: function (): React.Node { return ; }, @@ -734,7 +734,7 @@ const examples = [ { title: 'Pressable Native Methods', description: - (' components expose native methods like `measure`.': string), + ' components expose native methods like `measure`.' as string, render: function (): React.Node { return ; }, @@ -743,7 +743,7 @@ const examples = [ title: 'Disabled Pressable', description: (' components accept disabled prop which prevents ' + - 'any interaction with component': string), + 'any interaction with component') as string, render: function (): React.Node { return ; }, @@ -751,14 +751,14 @@ const examples = [ { title: 'Pressable with aria-label="label"', description: ('Note: This prop changes the text that a screen ' + - 'reader announces (there are no visual differences).': string), + 'reader announces (there are no visual differences).') as string, render: function (): React.Node { return ; }, }, { title: 'Pressable with box-shadow', - description: ('Pressables with box-shadow': string), + description: 'Pressables with box-shadow' as string, render: function PressableWithBoxShadow(): React.Node { const [parentColor, setParentColor] = useState('red'); const [childColor, setChildColor] = useState('blue'); @@ -1151,7 +1151,7 @@ const examples = [ // Windows] ]; -module.exports = ({ +module.exports = { title: 'Pressable', documentationURL: 'https://reactnative.dev/docs/pressable', category: 'UI', @@ -1160,4 +1160,4 @@ module.exports = ({ /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js index 004d5b6c0c6..c04e3684f19 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js @@ -2108,11 +2108,11 @@ const styles = StyleSheet.create({ }, }); -module.exports = ({ +module.exports = { title: 'Text', documentationURL: 'https://reactnative.dev/docs/text', category: 'Basic', description: 'Base component for rendering styled text.', displayName: 'TextExample', examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js index 7ec77f08aa5..2d6bf48991b 100644 --- a/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/TextInput/TextInputExample.windows.js @@ -17,7 +17,7 @@ import type { import ExampleTextInput from './ExampleTextInput'; import TextInputSharedExamples from './TextInputSharedExamples'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {StyleSheet, Switch, Text, View} from 'react-native'; @@ -966,11 +966,11 @@ const examples: Array = [ // Windows] ]; -module.exports = ({ - displayName: (undefined: ?string), +module.exports = { + displayName: undefined as ?string, title: 'TextInput', documentationURL: 'https://reactnative.dev/docs/textinput', category: 'Basic', description: 'Single and multi-line text inputs.', examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js index e9dc9230f7f..c9430937b6e 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Touchable/TouchableExample.windows.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useRef, useState} from 'react'; import { Animated, @@ -715,7 +715,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.description = 'Touchable and onPress examples.'; exports.title = 'Touchable* and onPress'; exports.category = 'UI'; @@ -728,7 +728,7 @@ exports.examples = [ 'black background under the single child view. This works best when the ' + 'child view is fully opaque, although it can be made to work as a simple ' + 'background color change as well with the activeOpacity and ' + - 'underlayColor props.': string), + 'underlayColor props.') as string, render(): React.Node { return ; }, @@ -743,7 +743,7 @@ exports.examples = [ { title: 'TouchableNativeFeedback with Animated child', description: ('TouchableNativeFeedback can have an AnimatedComponent as a' + - 'direct child.': string), + 'direct child.') as string, platform: 'android', render(): React.Node { const mScale = new Animated.Value(1); @@ -797,7 +797,7 @@ exports.examples = [ title: 'Touchable feedback events', name: 'feedback-events', description: (' components accept onPress, onPressIn, ' + - 'onPressOut, and onLongPress as props.': string), + 'onPressOut, and onLongPress as props.') as string, render(): React.MixedElement { return ; }, @@ -806,7 +806,7 @@ exports.examples = [ title: 'Touchable delay for events', description: (' components also accept delayPressIn, ' + 'delayPressOut, and delayLongPress as props. These props impact the ' + - 'timing of feedback events.': string), + 'timing of feedback events.') as string, render(): React.MixedElement { return ; }, @@ -825,7 +825,7 @@ exports.examples = [ name: 'hit-slop', description: (' components accept hitSlop prop which extends the touch area ' + - 'without changing the view bounds.': string), + 'without changing the view bounds.') as string, render(): React.MixedElement { return ; }, @@ -833,7 +833,7 @@ exports.examples = [ { title: 'Touchable Native Methods', description: - ('Some components expose native methods like `measure`.': string), + 'Some components expose native methods like `measure`.' as string, render(): React.MixedElement { return ; }, @@ -841,7 +841,7 @@ exports.examples = [ { title: 'Custom Ripple Radius (Android-only)', description: - ('Ripple radius on TouchableNativeFeedback can be controlled': string), + 'Ripple radius on TouchableNativeFeedback can be controlled' as string, render(): React.MixedElement { return ; }, @@ -850,7 +850,7 @@ exports.examples = [ title: 'Disabled Touchable*', description: (' components accept disabled prop which prevents ' + - 'any interaction with component': string), + 'any interaction with component') as string, render(): React.MixedElement { return ; }, diff --git a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js index a7d6ec9c892..5f8900a759f 100644 --- a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js @@ -871,12 +871,12 @@ function FocusBlurExample(): React.Node { ); } -export default ({ +export default { title: 'View', documentationURL: 'https://reactnative.dev/docs/view', category: 'Basic', description: ('Basic building block of all UI, examples that ' + - 'demonstrate some of the many styles available.': string), + 'demonstrate some of the many styles available.') as string, displayName: 'ViewExample', examples: [ { @@ -1643,4 +1643,4 @@ export default ({ }, // ]TODO(macOS ISS#2323203) // Windows] ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js index 7be5fd18342..29ebd09239f 100644 --- a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js +++ b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js @@ -230,217 +230,218 @@ const Components: Array = [ ...RNTesterListFbInternal.Components, ]; -const APIs: Array = ([ - { - key: 'KeyboardFocusExample', - category: 'Basic', - module: require('../examples-win/Keyboard/KeyboardFocusExample'), - }, - { - key: 'AccessibilityExample', - category: 'Basic', - module: require('../examples/Accessibility/AccessibilityExample'), - }, - { - key: 'AccessibilityExampleWindows', - category: 'Basic', - module: require('../examples-win/Accessibility/AccessibilityExampleWindows'), - }, - { - key: 'AccessibilityInfo', - category: 'Basic', - module: require('../examples-win/Accessibility/AccessibilityInfoExample'), - }, - { - key: 'AlertExample', - category: 'UI', - module: require('../examples/Alert/AlertExample').default, - }, - { - key: 'AnimatedIndex', - category: 'UI', - module: require('../examples/Animated/AnimatedIndex').default, - }, - { - key: 'AnimationBackendIndex', - category: 'UI', - module: require('../examples/AnimationBackend/AnimationBackendIndex') - .default, - }, - { - key: 'Animation - GratuitousAnimation', - category: 'UI', - module: require('../examples/AnimatedGratuitousApp/AnExApp'), - }, - { - key: 'AppearanceExample', - category: 'UI', - module: require('../examples/Appearance/AppearanceExample'), - }, - { - key: 'AppStateExample', - category: 'Basic', - module: require('../examples/AppState/AppStateExample'), - }, - { - key: 'ContentURLAndroid', - category: 'Android', - module: require('../examples/ContentURLAndroid/ContentURLAndroid'), - }, - { - key: 'URLExample', - category: 'Basic', - module: require('../examples/Urls/UrlExample'), - }, - { - key: 'BorderExample', - category: 'UI', - module: require('../examples/Border/BorderExample').default, - }, - { - key: 'CrashExample', - category: 'Basic', - module: require('../examples/Crash/CrashExample'), - }, - { - key: 'DevSettings', - category: 'Basic', - module: require('../examples/DevSettings/DevSettingsExample'), - }, - { - key: 'Dimensions', - category: 'UI', - module: require('../examples/Dimensions/DimensionsExample'), - }, - { - key: 'DisplayContentsExample', - category: 'UI', - module: require('../examples/DisplayContents/DisplayContentsExample') - .default, - }, - /*{ +const APIs: Array = ( + [ + { + key: 'KeyboardFocusExample', + category: 'Basic', + module: require('../examples-win/Keyboard/KeyboardFocusExample'), + }, + { + key: 'AccessibilityExample', + category: 'Basic', + module: require('../examples/Accessibility/AccessibilityExample'), + }, + { + key: 'AccessibilityExampleWindows', + category: 'Basic', + module: require('../examples-win/Accessibility/AccessibilityExampleWindows'), + }, + { + key: 'AccessibilityInfo', + category: 'Basic', + module: require('../examples-win/Accessibility/AccessibilityInfoExample'), + }, + { + key: 'AlertExample', + category: 'UI', + module: require('../examples/Alert/AlertExample').default, + }, + { + key: 'AnimatedIndex', + category: 'UI', + module: require('../examples/Animated/AnimatedIndex').default, + }, + { + key: 'AnimationBackendIndex', + category: 'UI', + module: require('../examples/AnimationBackend/AnimationBackendIndex') + .default, + }, + { + key: 'Animation - GratuitousAnimation', + category: 'UI', + module: require('../examples/AnimatedGratuitousApp/AnExApp'), + }, + { + key: 'AppearanceExample', + category: 'UI', + module: require('../examples/Appearance/AppearanceExample'), + }, + { + key: 'AppStateExample', + category: 'Basic', + module: require('../examples/AppState/AppStateExample'), + }, + { + key: 'ContentURLAndroid', + category: 'Android', + module: require('../examples/ContentURLAndroid/ContentURLAndroid'), + }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, + { + key: 'BorderExample', + category: 'UI', + module: require('../examples/Border/BorderExample').default, + }, + { + key: 'CrashExample', + category: 'Basic', + module: require('../examples/Crash/CrashExample'), + }, + { + key: 'DevSettings', + category: 'Basic', + module: require('../examples/DevSettings/DevSettingsExample'), + }, + { + key: 'Dimensions', + category: 'UI', + module: require('../examples/Dimensions/DimensionsExample'), + }, + { + key: 'DisplayContentsExample', + category: 'UI', + module: require('../examples/DisplayContents/DisplayContentsExample') + .default, + }, + /*{ key: 'FocusEventsExample', module: require('../examples/FocusEventsExample/FocusEventsExample') .default, },*/ - // Only show the link for the example if the API is available. - // E2E Tests failing when this test is enabled - // { - // key: 'InvalidPropsExample', - // module: require('../examples/InvalidProps/InvalidPropsExample'), - // }, - { - key: 'Keyboard', - category: 'Basic', - module: require('../examples/Keyboard/KeyboardExample').default, - }, - { - key: 'KeyboardExample', - module: require('../examples-win/Keyboard/KeyboardExample'), - }, - { - key: 'LayoutEventsExample', - category: 'UI', - module: require('../examples/Layout/LayoutEventsExample'), - }, - { - key: 'LinkingExample', - category: 'Basic', - module: require('../examples/Linking/LinkingExample'), - }, - // { - // key: 'LayoutAnimationExample', - // category: 'UI', - // module: require('../examples/Layout/LayoutAnimationExample'), - // }, - { - key: 'LayoutExample', - category: 'UI', - module: require('../examples/Layout/LayoutExample'), - }, - { - key: 'MouseExample', - category: 'Basic', - module: require('../examples-win/Mouse/MouseExample'), - }, - { - key: 'MouseClickExample', - category: 'Basic', - module: require('../examples-win/Mouse/MouseClickExample'), - }, - { - key: 'NativeAnimationsExample', - category: 'UI', - module: require('../examples/NativeAnimation/NativeAnimationsExample'), - }, - { - key: 'CompositionBugsExample', - category: 'UI', - module: require('../examples-win/NativeAnimation/CompositionBugsExample'), - }, - { - key: 'PanResponderExample', - category: 'Basic', - module: require('../examples/PanResponder/PanResponderExample'), - }, - { - key: 'PixelRatio', - category: 'UI', - module: require('../examples/PixelRatio/PixelRatioExample'), - }, - /* + // Only show the link for the example if the API is available. + // E2E Tests failing when this test is enabled + // { + // key: 'InvalidPropsExample', + // module: require('../examples/InvalidProps/InvalidPropsExample'), + // }, + { + key: 'Keyboard', + category: 'Basic', + module: require('../examples/Keyboard/KeyboardExample').default, + }, + { + key: 'KeyboardExample', + module: require('../examples-win/Keyboard/KeyboardExample'), + }, + { + key: 'LayoutEventsExample', + category: 'UI', + module: require('../examples/Layout/LayoutEventsExample'), + }, + { + key: 'LinkingExample', + category: 'Basic', + module: require('../examples/Linking/LinkingExample'), + }, + // { + // key: 'LayoutAnimationExample', + // category: 'UI', + // module: require('../examples/Layout/LayoutAnimationExample'), + // }, + { + key: 'LayoutExample', + category: 'UI', + module: require('../examples/Layout/LayoutExample'), + }, + { + key: 'MouseExample', + category: 'Basic', + module: require('../examples-win/Mouse/MouseExample'), + }, + { + key: 'MouseClickExample', + category: 'Basic', + module: require('../examples-win/Mouse/MouseClickExample'), + }, + { + key: 'NativeAnimationsExample', + category: 'UI', + module: require('../examples/NativeAnimation/NativeAnimationsExample'), + }, + { + key: 'CompositionBugsExample', + category: 'UI', + module: require('../examples-win/NativeAnimation/CompositionBugsExample'), + }, + { + key: 'PanResponderExample', + category: 'Basic', + module: require('../examples/PanResponder/PanResponderExample'), + }, + { + key: 'PixelRatio', + category: 'UI', + module: require('../examples/PixelRatio/PixelRatioExample'), + }, + /* { key: 'PermissionsExampleAndroid', category: 'Android', module: require('../examples/PermissionsAndroid/PermissionsExample'), }, */ - { - key: 'PlatformColorExample', - category: 'UI', - module: require('../examples/PlatformColor/PlatformColorExample'), - }, - { - key: 'PointerEventsExample', - category: 'Basic', - module: require('../examples/PointerEvents/PointerEventsExample'), - }, - { - key: 'PointerClickEventsExample', - category: 'Basic', - module: require('../examples-win/Pointer/PointerClickEventsExample'), - }, - { - key: 'PointerButtonExample', - category: 'Basic', - module: require('../examples-win/Pointer/PointerButtonExample'), - }, - { - key: 'RTLExample', - category: 'Basic', - module: require('../examples/RTL/RTLExample'), - }, - { - key: 'ShareExample', - category: 'Basic', - module: require('../examples/Share/ShareExample'), - }, - { - key: 'TimerExample', - category: 'UI', - module: require('../examples/Timer/TimerExample'), - }, - { - key: 'TransformExample', - category: 'UI', - module: require('../examples/Transform/TransformExample'), - }, - { - key: 'FilterExample', - category: 'UI', - module: require('../examples/Filter/FilterExample'), - }, - /* + { + key: 'PlatformColorExample', + category: 'UI', + module: require('../examples/PlatformColor/PlatformColorExample'), + }, + { + key: 'PointerEventsExample', + category: 'Basic', + module: require('../examples/PointerEvents/PointerEventsExample'), + }, + { + key: 'PointerClickEventsExample', + category: 'Basic', + module: require('../examples-win/Pointer/PointerClickEventsExample'), + }, + { + key: 'PointerButtonExample', + category: 'Basic', + module: require('../examples-win/Pointer/PointerButtonExample'), + }, + { + key: 'RTLExample', + category: 'Basic', + module: require('../examples/RTL/RTLExample'), + }, + { + key: 'ShareExample', + category: 'Basic', + module: require('../examples/Share/ShareExample'), + }, + { + key: 'TimerExample', + category: 'UI', + module: require('../examples/Timer/TimerExample'), + }, + { + key: 'TransformExample', + category: 'UI', + module: require('../examples/Transform/TransformExample'), + }, + { + key: 'FilterExample', + category: 'UI', + module: require('../examples/Filter/FilterExample'), + }, + /* { key: 'LinearGradientExample', category: 'UI', @@ -467,54 +468,55 @@ const APIs: Array = ([ module: require('../examples/Vibration/VibrationExample'), }, */ - { - key: 'WebSocketExample', - category: 'Basic', - module: require('../examples/WebSocket/WebSocketExample'), - }, - /* TODO: ? XHRExample requires CameraRoll access + { + key: 'WebSocketExample', + category: 'Basic', + module: require('../examples/WebSocket/WebSocketExample'), + }, + /* TODO: ? XHRExample requires CameraRoll access { key: 'XHRExample', category: 'Basic', module: require('../examples/XHR/XHRExample'), }, */ - { - key: 'TurboModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboModuleExample'), - }, - { - key: 'LegacyModuleExample', - module: require('../examples/TurboModule/LegacyModuleExample'), - }, - { - key: 'TurboCxxModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboCxxModuleExample'), - }, - // Basic check to detect the availability of the IntersectionObserver API. - // $FlowExpectedError[cannot-resolve-name] - ...(typeof IntersectionObserver === 'function' - ? [ - { - key: 'IntersectionObserver', - category: 'UI', - module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), - }, - ] - : []), - // Basic check to detect the availability of the modern Performance API. - ...(typeof performance.getEntries === 'function' - ? [ - { - key: 'PerformanceApiExample', - category: 'Basic', - module: require('../examples/Performance/PerformanceApiExample'), - }, - ] - : []), - ...RNTesterListFbInternal.APIs, -]: Array).filter(Boolean); + { + key: 'TurboModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboModuleExample'), + }, + { + key: 'LegacyModuleExample', + module: require('../examples/TurboModule/LegacyModuleExample'), + }, + { + key: 'TurboCxxModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboCxxModuleExample'), + }, + // Basic check to detect the availability of the IntersectionObserver API. + // $FlowExpectedError[cannot-resolve-name] + ...(typeof IntersectionObserver === 'function' + ? [ + { + key: 'IntersectionObserver', + category: 'UI', + module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), + }, + ] + : []), + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), + ...RNTesterListFbInternal.APIs, + ] as Array +).filter(Boolean); const Playgrounds: Array = [ { diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index 26937e88a71..015321619a4 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "44f87283efecefa7bdd486c5eb50a2b583ff1a13" + "baseHash": "a9460d8ac4e6277707413dabbef5534eeac4a93c" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index 3cd89d4e174..a2eee40f951 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -10,7 +10,7 @@ "clang-format": "clang-format -i --glob=*/**/*.{h,cpp,m,mm}", "clean": "node ./scripts/build/clean.js", "cxx-api-build": "python -m scripts.cxx-api.parser", - "cxx-api-validate": "python -m scripts.cxx-api.parser --check", + "cxx-api-validate": "python -m scripts.cxx-api.parser --validate", "flow-check": "flow check", "flow": "flow", "format-check": "prettier --list-different \"./**/*.{js,md,yml,ts,tsx}\"", @@ -53,8 +53,8 @@ "@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.86.0-nightly-20260325-d1809f0aa", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-babel-transformer": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@tsconfig/node22": "22.0.2", "@types/react": "^19.2.3", "@typescript-eslint/parser": "^8.36.0", @@ -81,7 +81,7 @@ "eslint-plugin-relay": "^1.8.3", "fb-dotslash": "0.5.8", "flow-api-translator": "0.34.0", - "flow-bin": "^0.306.1", + "flow-bin": "^0.308.0", "hermes-eslint": "0.34.0", "hermes-transform": "0.34.0", "ini": "^5.0.0", diff --git a/packages/@react-native/tester/NativeComponentExample/js/MyNativeViewNativeComponent.js b/packages/@react-native/tester/NativeComponentExample/js/MyNativeViewNativeComponent.js index 093b8d80af7..b5fbf11f8e4 100644 --- a/packages/@react-native/tester/NativeComponentExample/js/MyNativeViewNativeComponent.js +++ b/packages/@react-native/tester/NativeComponentExample/js/MyNativeViewNativeComponent.js @@ -70,6 +70,6 @@ export const Commands: NativeCommands = codegenNativeCommands({ ], }); -export default (codegenNativeComponent( +export default codegenNativeComponent( 'RNTMyNativeView', -): MyNativeViewType); +) as MyNativeViewType; diff --git a/packages/@react-native/tester/NativeCxxModuleExample/NativeCxxModuleExample.js b/packages/@react-native/tester/NativeCxxModuleExample/NativeCxxModuleExample.js index ad01c754904..589360363a3 100644 --- a/packages/@react-native/tester/NativeCxxModuleExample/NativeCxxModuleExample.js +++ b/packages/@react-native/tester/NativeCxxModuleExample/NativeCxxModuleExample.js @@ -116,6 +116,6 @@ export interface Spec extends TurboModule { +promiseAssert: () => Promise; } -export default (TurboModuleRegistry.get( +export default TurboModuleRegistry.get( 'NativeCxxModuleExampleCxx', -): ?Spec); +) as ?Spec; diff --git a/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js index 05069d6089c..68fb3b9d1d6 100644 --- a/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js +++ b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js @@ -19,6 +19,6 @@ type NativeProps = Readonly<{ export type ReportFullyDrawnViewType = HostComponent; -export default (codegenNativeComponent( +export default codegenNativeComponent( 'RNTReportFullyDrawnView', -): ReportFullyDrawnViewType); +) as ReportFullyDrawnViewType; diff --git a/packages/@react-native/tester/js/RNTesterApp.ios.js b/packages/@react-native/tester/js/RNTesterApp.ios.js index 6c7155dc2e4..7e587ebbaec 100644 --- a/packages/@react-native/tester/js/RNTesterApp.ios.js +++ b/packages/@react-native/tester/js/RNTesterApp.ios.js @@ -15,7 +15,7 @@ import RNTesterModuleContainer from './components/RNTesterModuleContainer'; import SnapshotViewIOS from './examples/Snapshot/SnapshotViewIOS.ios'; import RNTesterApp from './RNTesterAppShared'; import RNTesterList from './utils/RNTesterList'; -import React from 'react'; +import * as React from 'react'; import {AppRegistry} from 'react-native'; AppRegistry.registerComponent('SetPropertiesExampleApp', () => diff --git a/packages/@react-native/tester/js/components/ListExampleShared.js b/packages/@react-native/tester/js/components/ListExampleShared.js index e1dad999b27..e1cf4dad65c 100644 --- a/packages/@react-native/tester/js/components/ListExampleShared.js +++ b/packages/@react-native/tester/js/components/ListExampleShared.js @@ -11,7 +11,7 @@ 'use strict'; import RNTesterText from './RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {memo} from 'react'; import { ActivityIndicator, diff --git a/packages/@react-native/tester/js/components/RNTesterButton.js b/packages/@react-native/tester/js/components/RNTesterButton.js index 92eaebe40d4..7c0b1dd3ac5 100644 --- a/packages/@react-native/tester/js/components/RNTesterButton.js +++ b/packages/@react-native/tester/js/components/RNTesterButton.js @@ -12,7 +12,7 @@ import type {GestureResponderEvent} from 'react-native'; -import React from 'react'; +import * as React from 'react'; import {Pressable, StyleSheet, Text} from 'react-native'; type Props = Readonly<{ diff --git a/packages/@react-native/tester/js/components/RNTesterText.js b/packages/@react-native/tester/js/components/RNTesterText.js index caa732f9ec5..5fc8b11fdfa 100644 --- a/packages/@react-native/tester/js/components/RNTesterText.js +++ b/packages/@react-native/tester/js/components/RNTesterText.js @@ -11,7 +11,8 @@ import type {TextProps} from 'react-native'; import {RNTesterThemeContext} from './RNTesterTheme'; -import React, {useContext, useMemo} from 'react'; +import * as React from 'react'; +import {useContext, useMemo} from 'react'; import {Text} from 'react-native'; type Props = Readonly<{ diff --git a/packages/@react-native/tester/js/components/RNTesterTitle.js b/packages/@react-native/tester/js/components/RNTesterTitle.js index f8c110e6df7..c6db0521da4 100644 --- a/packages/@react-native/tester/js/components/RNTesterTitle.js +++ b/packages/@react-native/tester/js/components/RNTesterTitle.js @@ -9,7 +9,7 @@ */ import {RNTesterThemeContext} from './RNTesterTheme'; -import React from 'react'; +import * as React from 'react'; import {StyleSheet, Text, View} from 'react-native'; type Props = Readonly<{ diff --git a/packages/@react-native/tester/js/components/TextInlineView.js b/packages/@react-native/tester/js/components/TextInlineView.js index 4164dfad8ca..4f87cc5df97 100644 --- a/packages/@react-native/tester/js/components/TextInlineView.js +++ b/packages/@react-native/tester/js/components/TextInlineView.js @@ -11,7 +11,7 @@ 'use strict'; import RNTesterText from '../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {Image, TouchableHighlight, View} from 'react-native'; diff --git a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityAndroidExample.js b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityAndroidExample.js index accc8b3ff3a..8ba3cc653d1 100644 --- a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityAndroidExample.js +++ b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityAndroidExample.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterBlock from '../../components/RNTesterBlock'; import RNTesterPage from '../../components/RNTesterPage'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Alert, StyleSheet, TouchableWithoutFeedback, View} from 'react-native'; const importantForAccessibilityValues = [ diff --git a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js index e4e869964d2..efe3baf936b 100644 --- a/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js +++ b/packages/@react-native/tester/js/examples/Accessibility/AccessibilityExample.js @@ -18,7 +18,8 @@ import RNTesterText from '../../components/RNTesterText'; import checkImageSource from './check.png'; import mixedCheckboxImageSource from './mixed.png'; import uncheckImageSource from './uncheck.png'; -import React, {createRef, useEffect, useRef, useState} from 'react'; +import * as React from 'react'; +import {createRef, useEffect, useRef, useState} from 'react'; import { AccessibilityInfo, Alert, diff --git a/packages/@react-native/tester/js/examples/ActivityIndicator/ActivityIndicatorExample.js b/packages/@react-native/tester/js/examples/ActivityIndicator/ActivityIndicatorExample.js index cdf3072cddd..e6905716626 100644 --- a/packages/@react-native/tester/js/examples/ActivityIndicator/ActivityIndicatorExample.js +++ b/packages/@react-native/tester/js/examples/ActivityIndicator/ActivityIndicatorExample.js @@ -11,7 +11,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {Node} from 'react'; -import React, {useCallback, useEffect, useRef, useState} from 'react'; +import * as React from 'react'; +import {useCallback, useEffect, useRef, useState} from 'react'; import {ActivityIndicator, StyleSheet, View} from 'react-native'; function ToggleAnimatingActivityIndicator() { @@ -59,7 +60,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.category = 'UI'; exports.framework = 'React'; exports.title = 'ActivityIndicator'; diff --git a/packages/@react-native/tester/js/examples/Alert/AlertExample.js b/packages/@react-native/tester/js/examples/Alert/AlertExample.js index 70c5ccf86a8..e394dc85b5b 100644 --- a/packages/@react-native/tester/js/examples/Alert/AlertExample.js +++ b/packages/@react-native/tester/js/examples/Alert/AlertExample.js @@ -452,7 +452,7 @@ export const examples = [ }, ]; -export default ({ +export default { framework: 'React', title: 'Alerts', category: 'UI', @@ -462,4 +462,4 @@ export default ({ /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/Animated/AnimatedIndex.js b/packages/@react-native/tester/js/examples/Animated/AnimatedIndex.js index 3fd82fc9c39..b30e8ef2919 100644 --- a/packages/@react-native/tester/js/examples/Animated/AnimatedIndex.js +++ b/packages/@react-native/tester/js/examples/Animated/AnimatedIndex.js @@ -25,7 +25,7 @@ import RotatingImagesExample from './RotatingImagesExample'; import TransformBounceExample from './TransformBounceExample'; import TransformStylesExample from './TransformStylesExample'; -export default ({ +export default { framework: 'React', title: 'Animated', category: 'UI', @@ -50,4 +50,4 @@ export default ({ PressabilityWithNativeDrivers, PanGestureExample, ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/Animated/ColorStylesExample.js b/packages/@react-native/tester/js/examples/Animated/ColorStylesExample.js index 5abcded22ea..3a7a20683d9 100644 --- a/packages/@react-native/tester/js/examples/Animated/ColorStylesExample.js +++ b/packages/@react-native/tester/js/examples/Animated/ColorStylesExample.js @@ -162,9 +162,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Color Styles', name: 'colorStyles', description: 'Animations of color styles.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/CombineExample.js b/packages/@react-native/tester/js/examples/Animated/CombineExample.js index 8ee9a812085..4ab7b016ee3 100644 --- a/packages/@react-native/tester/js/examples/Animated/CombineExample.js +++ b/packages/@react-native/tester/js/examples/Animated/CombineExample.js @@ -16,13 +16,13 @@ import * as React from 'react'; import {useState} from 'react'; import {Animated, StyleSheet, Text, TextInput, View} from 'react-native'; -export default ({ +export default { title: 'Combine Example', name: 'Combine View', description: 'Change the opacity of the view by combining different Animated.Values.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; component CombineExample() { const [aValue, setAValue] = useState('0.4'); diff --git a/packages/@react-native/tester/js/examples/Animated/ComposeAnimationsWithEasingExample.js b/packages/@react-native/tester/js/examples/Animated/ComposeAnimationsWithEasingExample.js index 6808f10382f..d3d3f270897 100644 --- a/packages/@react-native/tester/js/examples/Animated/ComposeAnimationsWithEasingExample.js +++ b/packages/@react-native/tester/js/examples/Animated/ComposeAnimationsWithEasingExample.js @@ -127,12 +127,12 @@ component CompositeAnimationsWithEasingExample() { ); } -export default ({ +export default { title: 'Composite Animations with Easing', name: 'compositeAnimationsWithEasing', description: ('Sequence, parallel, delay, and ' + - 'stagger with different easing functions.': string), + 'stagger with different easing functions.') as string, expect: 'The 3 views will animate their `left` position based on their animation configurations.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/ComposingExample.js b/packages/@react-native/tester/js/examples/Animated/ComposingExample.js index e94c5b4d3fc..a2e7431e596 100644 --- a/packages/@react-native/tester/js/examples/Animated/ComposingExample.js +++ b/packages/@react-native/tester/js/examples/Animated/ComposingExample.js @@ -255,9 +255,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Composing', name: 'composing', description: 'Combine multiple animations using composition functions', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/ContinuousInteractionsExample.js b/packages/@react-native/tester/js/examples/Animated/ContinuousInteractionsExample.js index b0e7b0e1bfe..cf6dde0e3a4 100644 --- a/packages/@react-native/tester/js/examples/Animated/ContinuousInteractionsExample.js +++ b/packages/@react-native/tester/js/examples/Animated/ContinuousInteractionsExample.js @@ -24,13 +24,13 @@ component AnimatedContinuousInteractionsExample() { ); } -export default ({ +export default { title: 'Continuous Interactions', name: 'continuousInteractions', description: ('Gesture events, chaining, 2D ' + 'values, interrupting and transitioning ' + - 'animations, etc.': string), + 'animations, etc.') as string, render() { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/EasingExample.js b/packages/@react-native/tester/js/examples/Animated/EasingExample.js index 386e12f15e4..e589e3b8fe3 100644 --- a/packages/@react-native/tester/js/examples/Animated/EasingExample.js +++ b/packages/@react-native/tester/js/examples/Animated/EasingExample.js @@ -189,10 +189,10 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Easing', name: 'easing', description: 'The Easing module implements common easing functions. This module is used by Animated.timing() to convey physically believable motion in animations.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/FadeInViewExample.js b/packages/@react-native/tester/js/examples/Animated/FadeInViewExample.js index 08bfe01d79f..16b4b27fe6b 100644 --- a/packages/@react-native/tester/js/examples/Animated/FadeInViewExample.js +++ b/packages/@react-native/tester/js/examples/Animated/FadeInViewExample.js @@ -83,13 +83,13 @@ component FadeInExample() { ); } -export default ({ +export default { title: 'FadeInView', name: 'fadeInView', description: ('Uses a simple timing animation to ' + 'bring opacity from 0 to 1 when the component ' + - 'mounts.': string), + 'mounts.') as string, expect: 'FadeInView box should animate from opacity 0 to 1. \nExpect no animation when hiding.\nHiding the view mid-animation should not affect next animation.', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/LoopingExample.js b/packages/@react-native/tester/js/examples/Animated/LoopingExample.js index 22a6acff389..4601bb67645 100644 --- a/packages/@react-native/tester/js/examples/Animated/LoopingExample.js +++ b/packages/@react-native/tester/js/examples/Animated/LoopingExample.js @@ -17,12 +17,12 @@ import * as React from 'react'; import {useEffect, useMemo, useState} from 'react'; import {Animated, StyleSheet, Text, View} from 'react-native'; -export default ({ +export default { title: 'Looping Example', name: 'loopingView', description: 'Native looping animation that shrinks and fades out a view.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; component LoopingView(useNativeDriver: boolean, running: boolean) { const opacity = useMemo(() => new Animated.Value(1), []); diff --git a/packages/@react-native/tester/js/examples/Animated/MovingBoxExample.js b/packages/@react-native/tester/js/examples/Animated/MovingBoxExample.js index c4044e8e06a..5790d105f41 100644 --- a/packages/@react-native/tester/js/examples/Animated/MovingBoxExample.js +++ b/packages/@react-native/tester/js/examples/Animated/MovingBoxExample.js @@ -124,7 +124,7 @@ component MovingBoxExample() { ); } -export default ({ +export default { title: 'Moving box example', name: 'movingView', description: @@ -132,4 +132,4 @@ export default ({ expect: 'During animation, removing box from layout will stop the animation and box will stay in its current position.\nStarting animation when box is not rendered and rendering mid-way does not affect animation.\nReset will reset the animation to its starting position.', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/PanGestureExample.js b/packages/@react-native/tester/js/examples/Animated/PanGestureExample.js index f01b2da8560..cc65d6f75f1 100644 --- a/packages/@react-native/tester/js/examples/Animated/PanGestureExample.js +++ b/packages/@react-native/tester/js/examples/Animated/PanGestureExample.js @@ -247,9 +247,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Pan Gesture', name: 'panGesture', description: 'Animations driven by pan gesture.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/PressabilityWithNativeDrivers.js b/packages/@react-native/tester/js/examples/Animated/PressabilityWithNativeDrivers.js index a16d3521161..7c6782c7983 100644 --- a/packages/@react-native/tester/js/examples/Animated/PressabilityWithNativeDrivers.js +++ b/packages/@react-native/tester/js/examples/Animated/PressabilityWithNativeDrivers.js @@ -67,9 +67,9 @@ component PressableWithNativeDriver() { ); } -export default ({ +export default { title: 'Pressability With Native Driver', name: 'pressabilityWithNativeDrivers', description: 'Pressabile animated with Native Drivers', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/RotatingImagesExample.js b/packages/@react-native/tester/js/examples/Animated/RotatingImagesExample.js index 1db3dc145ad..fadd78badcf 100644 --- a/packages/@react-native/tester/js/examples/Animated/RotatingImagesExample.js +++ b/packages/@react-native/tester/js/examples/Animated/RotatingImagesExample.js @@ -103,11 +103,11 @@ component RotatingImagesExample() { ); } -export default ({ +export default { title: 'Rotating Images', name: 'rotatingImages', description: 'Simple Animated.Image rotation.', expect: 'Transform animation on image in scale, rotation, and translation. JS driver will ignore any calls to `start` on running animation. Native driver will re-start the animation.', render: RotatingImagesExample, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/TransformBounceExample.js b/packages/@react-native/tester/js/examples/Animated/TransformBounceExample.js index 151b0ce5aa9..ed594476956 100644 --- a/packages/@react-native/tester/js/examples/Animated/TransformBounceExample.js +++ b/packages/@react-native/tester/js/examples/Animated/TransformBounceExample.js @@ -112,7 +112,7 @@ component TransformBounceExample() { ); } -export default ({ +export default { title: 'Transform Bounce', name: 'transformBounce', expect: 'Transform animation on rotation, translation, scale of View', @@ -120,6 +120,6 @@ export default ({ 'spring with custom constants and mapped to an ' + 'ordered set of transforms. Each transform has ' + 'an interpolation to convert the value into the ' + - 'right range and units.': string), + 'right range and units.') as string, render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js b/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js index 3da1dda0421..c9a4942ae7f 100644 --- a/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js +++ b/packages/@react-native/tester/js/examples/Animated/TransformStylesExample.js @@ -163,9 +163,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Transform Styles', name: 'transformStyles', description: 'Variations of transform styles.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js index a980a86a374..dbc5a7dc514 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExApp.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import AnExSet from './AnExSet'; -import React from 'react'; +import * as React from 'react'; import { Animated, LayoutAnimation, diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExBobble.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExBobble.js index 89e9604b46f..a59ad7b58b7 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExBobble.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExBobble.js @@ -10,7 +10,7 @@ 'use strict'; -import React from 'react'; +import * as React from 'react'; import {Animated, PanResponder, StyleSheet, View} from 'react-native'; const NUM_BOBBLES = 5; diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExChained.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExChained.js index ca735fe0ddf..7dd757f07bf 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExChained.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExChained.js @@ -15,7 +15,7 @@ import type { PanResponderGestureState, } from 'react-native'; -import React from 'react'; +import * as React from 'react'; import {Animated, PanResponder, StyleSheet, View} from 'react-native'; class AnExChained extends React.Component { diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExScroll.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExScroll.js index eca81dc30d7..b6b1680fd74 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExScroll.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExScroll.js @@ -10,7 +10,7 @@ 'use strict'; -import React from 'react'; +import * as React from 'react'; import { Animated, Image, diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExSet.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExSet.js index a4fec8a10c5..b2bef1f7789 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExSet.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExSet.js @@ -14,7 +14,8 @@ import AnExBobble from './AnExBobble'; import AnExChained from './AnExChained'; import AnExScroll from './AnExScroll'; import AnExTilt from './AnExTilt'; -import React, {useState} from 'react'; +import * as React from 'react'; +import {useState} from 'react'; import { Animated, PanResponder, diff --git a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExTilt.js b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExTilt.js index 80760d8fdaa..117b5f570a9 100644 --- a/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExTilt.js +++ b/packages/@react-native/tester/js/examples/AnimatedGratuitousApp/AnExTilt.js @@ -10,7 +10,8 @@ 'use strict'; -import React, {useCallback, useEffect} from 'react'; +import * as React from 'react'; +import {useCallback, useEffect} from 'react'; import { Animated, PanResponder, diff --git a/packages/@react-native/tester/js/examples/AnimationBackend/AnimationBackendIndex.js b/packages/@react-native/tester/js/examples/AnimationBackend/AnimationBackendIndex.js index f8eb3d25d77..689123b0232 100644 --- a/packages/@react-native/tester/js/examples/AnimationBackend/AnimationBackendIndex.js +++ b/packages/@react-native/tester/js/examples/AnimationBackend/AnimationBackendIndex.js @@ -19,11 +19,11 @@ const canUseBackend = ReactNativeFeatureFlags.useSharedAnimatedBackend() && ReactNativeFeatureFlags.cxxNativeAnimatedEnabled(); -export default ({ +export default { framework: 'React', title: 'Animation Backend', category: 'UI', description: `Examples demonstrating the Animation Backend for layout-updating animations. ${canUseBackend ? '' : 'You need to enable c++ Animated and the Animation Backend to see these examples.'}`, showIndividualExamples: true, examples: canUseBackend ? [PlaygroundExample, SwipeableListExample] : [], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/AnimationBackend/ChessboardExample.js b/packages/@react-native/tester/js/examples/AnimationBackend/ChessboardExample.js index 5bf011860ba..a343729e47f 100644 --- a/packages/@react-native/tester/js/examples/AnimationBackend/ChessboardExample.js +++ b/packages/@react-native/tester/js/examples/AnimationBackend/ChessboardExample.js @@ -126,9 +126,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Chessboard', name: 'chessboard', description: 'Combine animating layout with state updates', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/AnimationBackend/SwipeableListExample.js b/packages/@react-native/tester/js/examples/AnimationBackend/SwipeableListExample.js index 2ede306fa51..af0676bc2b7 100644 --- a/packages/@react-native/tester/js/examples/AnimationBackend/SwipeableListExample.js +++ b/packages/@react-native/tester/js/examples/AnimationBackend/SwipeableListExample.js @@ -37,7 +37,7 @@ type Data = { title: string, }; -const initialData: $ReadOnlyArray = [ +const initialData: ReadonlyArray = [ {id: '1', title: 'Kate Bell'}, {id: '2', title: 'John Appleseed'}, {id: '3', title: 'Mark Zuckerberg'}, @@ -62,7 +62,7 @@ const timingConfig = { }; function SwipeableListExample(): React.Node { - const [data, setData] = React.useState<$ReadOnlyArray>(initialData); + const [data, setData] = React.useState>(initialData); const handleRemove = useCallback((id: string) => { setData(currentData => currentData.filter(item => item.id !== id)); @@ -278,9 +278,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Swipeable List', name: 'swipeableList', description: 'A swipeable list with width animation', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/AppState/AppStateExample.js b/packages/@react-native/tester/js/examples/AppState/AppStateExample.js index 962df0c64ad..a8c7c598b96 100644 --- a/packages/@react-native/tester/js/examples/AppState/AppStateExample.js +++ b/packages/@react-native/tester/js/examples/AppState/AppStateExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useState} from 'react'; import {AppState, Platform} from 'react-native'; diff --git a/packages/@react-native/tester/js/examples/Border/BorderExample.js b/packages/@react-native/tester/js/examples/Border/BorderExample.js index cc4876ca748..6b36f32e443 100644 --- a/packages/@react-native/tester/js/examples/Border/BorderExample.js +++ b/packages/@react-native/tester/js/examples/Border/BorderExample.js @@ -259,7 +259,7 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Border', category: 'UI', description: 'Demonstrates some of the border styles available to Views.', @@ -623,4 +623,4 @@ export default ({ }, }, ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/Button/ButtonExample.js b/packages/@react-native/tester/js/examples/Button/ButtonExample.js index 55409a8a126..115398fa119 100644 --- a/packages/@react-native/tester/js/examples/Button/ButtonExample.js +++ b/packages/@react-native/tester/js/examples/Button/ButtonExample.js @@ -47,7 +47,7 @@ exports.examples = [ name: 'color-red', description: ('Note: On iOS, the color prop controls the color of the text. On ' + - 'Android, the color adjusts the background color of the button.': string), + 'Android, the color adjusts the background color of the button.') as string, render: function (): React.Node { return ( @@ -71,7 +71,7 @@ exports.examples = [ name: 'two-buttons-flexbox', description: ('Two buttons wrapped inside view with justifyContent: spaceBetween,' + - 'This layout strategy lets the title define the width of the button': string), + 'This layout strategy lets the title define the width of the button') as string, render: function (): React.Node { return ( @@ -163,7 +163,7 @@ exports.examples = [ { title: 'Button with accessibilityLabel="label"', description: ('Note: This prop changes the text that a screen ' + - 'reader announces (there are no visual differences).': string), + 'reader announces (there are no visual differences).') as string, render: function (): React.Node { return ( @@ -185,7 +185,7 @@ exports.examples = [ { title: 'Button with aria-label="label"', description: ('Note: This prop changes the text that a screen ' + - 'reader announces (there are no visual differences).': string), + 'reader announces (there are no visual differences).') as string, render: function (): React.Node { return ( @@ -208,7 +208,7 @@ exports.examples = [ title: 'Button with accessibilityState={{disabled: true}}', description: ('Note: This prop will announce on TalkBack that the button is disabled. ' + - 'The "disabled" prop has higher precedence on the state of the component': string), + 'The "disabled" prop has higher precedence on the state of the component') as string, render: function (): React.Node { return ( diff --git a/packages/@react-native/tester/js/examples/ContentURLAndroid/ContentURLAndroid.js b/packages/@react-native/tester/js/examples/ContentURLAndroid/ContentURLAndroid.js index 69bce4cd022..d2ad0e4aa2d 100644 --- a/packages/@react-native/tester/js/examples/ContentURLAndroid/ContentURLAndroid.js +++ b/packages/@react-native/tester/js/examples/ContentURLAndroid/ContentURLAndroid.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterBlock from '../../components/RNTesterBlock'; import RNTesterPage from '../../components/RNTesterPage'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useCallback, useState} from 'react'; import { Image, diff --git a/packages/@react-native/tester/js/examples/Crash/CrashExample.js b/packages/@react-native/tester/js/examples/Crash/CrashExample.js index 7f7deb8d8fd..b2515d16b94 100644 --- a/packages/@react-native/tester/js/examples/Crash/CrashExample.js +++ b/packages/@react-native/tester/js/examples/Crash/CrashExample.js @@ -11,10 +11,10 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {Node} from 'react'; -import React from 'react'; +import * as React from 'react'; import {Button} from 'react-native'; -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.framework = 'React'; exports.title = 'Crash'; exports.category = 'Basic'; diff --git a/packages/@react-native/tester/js/examples/Dimensions/DimensionsExample.js b/packages/@react-native/tester/js/examples/Dimensions/DimensionsExample.js index ccc067bffec..7d2b1ccf1ee 100644 --- a/packages/@react-native/tester/js/examples/Dimensions/DimensionsExample.js +++ b/packages/@react-native/tester/js/examples/Dimensions/DimensionsExample.js @@ -11,7 +11,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React, {useEffect, useState} from 'react'; +import * as React from 'react'; +import {useEffect, useState} from 'react'; import {Dimensions, useWindowDimensions} from 'react-native'; type Props = {dim: string}; diff --git a/packages/@react-native/tester/js/examples/DisplayContents/DisplayContentsExample.js b/packages/@react-native/tester/js/examples/DisplayContents/DisplayContentsExample.js index 175c71f78b4..d6f35179beb 100644 --- a/packages/@react-native/tester/js/examples/DisplayContents/DisplayContentsExample.js +++ b/packages/@react-native/tester/js/examples/DisplayContents/DisplayContentsExample.js @@ -47,7 +47,7 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Display: contents', category: 'UI', description: @@ -218,4 +218,4 @@ export default ({ }, }, ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js index 693ebd66044..5d6d1f2404b 100644 --- a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js +++ b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js @@ -14,7 +14,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {Node} from 'react'; import {RNTesterThemeContext} from '../../components/RNTesterTheme'; -import React, {useContext, useRef, useState} from 'react'; +import * as React from 'react'; +import {useContext, useRef, useState} from 'react'; import { Button, DrawerLayoutAndroid, diff --git a/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityAnimatedPointerMove.js b/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityAnimatedPointerMove.js index bb3458e48ed..8b75a69184b 100644 --- a/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityAnimatedPointerMove.js +++ b/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityAnimatedPointerMove.js @@ -67,25 +67,25 @@ function CompatibilityAnimatedPointerMove(): React.Node { { translateX: xCoord.interpolate({ inputRange: [0, WIDTH], - outputRange: ([0, WIDTH / 2]: number[]), + outputRange: [0, WIDTH / 2] as number[], }), }, { translateY: yCoord.interpolate({ inputRange: [0, HEIGHT], - outputRange: ([0, HEIGHT / 2]: number[]), + outputRange: [0, HEIGHT / 2] as number[], }), }, { scaleX: xCoord.interpolate({ inputRange: [0, WIDTH], - outputRange: ([0, WIDTH]: number[]), + outputRange: [0, WIDTH] as number[], }), }, { scaleY: yCoord.interpolate({ inputRange: [0, HEIGHT], - outputRange: ([0, HEIGHT]: number[]), + outputRange: [0, HEIGHT] as number[], }), }, ], @@ -96,7 +96,7 @@ function CompatibilityAnimatedPointerMove(): React.Node { ); } -export default ({ +export default { name: 'compatibility_animatedevent_pointer_move', description: 'An AnimatedEvent example on onPointerMove. The blue box should scale to pointer event offset values within black box', @@ -104,4 +104,4 @@ export default ({ render(): React.Node { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityNativeGestureHandling.js b/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityNativeGestureHandling.js index c5fc10ad0fa..fd328299833 100644 --- a/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityNativeGestureHandling.js +++ b/packages/@react-native/tester/js/examples/Experimental/Compatibility/CompatibilityNativeGestureHandling.js @@ -54,7 +54,7 @@ function CompatibilityNativeGestureHandling(): React.Node { ); } -export default ({ +export default { name: 'compatibility_native_gesture', title: 'Native Gesture Handling Example', description: @@ -62,4 +62,4 @@ export default ({ render(): React.Node { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js b/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js index edda7691b56..baab2e15277 100644 --- a/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js +++ b/packages/@react-native/tester/js/examples/Experimental/Compatibility/ManyPointersPropertiesExample.js @@ -84,11 +84,11 @@ function ManyPointersPropertiesExample(): React.Node { ); } -export default ({ +export default { name: 'many_pointers_properties_example', description: 'Display of properties for multiple pointers', title: 'Display Properties of many pointers', render(): React.Node { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesHoverablePointers.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesHoverablePointers.js index b8ba306ff90..29fe99f1e3a 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesHoverablePointers.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesHoverablePointers.js @@ -32,8 +32,8 @@ function PointerEventAttributesHoverablePointersTestCase( ) { const {harness} = props; - const detected_pointertypesRef = useRef(({}: {[string]: boolean})); - const detected_eventTypesRef = useRef(({}: {[string]: boolean})); + const detected_pointertypesRef = useRef({} as {[string]: boolean}); + const detected_eventTypesRef = useRef({} as {[string]: boolean}); const expectedPointerIdRef = useRef(NaN); const [square1Visible, setSquare1Visible] = useState(true); @@ -188,7 +188,7 @@ function PointerEventAttributesHoverablePointersTestCase( eventList.length ) { setSquare1Visible(false); - detected_eventTypesRef.current = ({}: {[string]: boolean}); + detected_eventTypesRef.current = {} as {[string]: boolean}; setSquare2Visible(true); expectedPointerIdRef.current = NaN; } diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesNoHoverPointers.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesNoHoverPointers.js index 4aec343c301..c51870c1f1e 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesNoHoverPointers.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventAttributesNoHoverPointers.js @@ -31,8 +31,8 @@ function PointerEventAttributesNoHoverPointersTestCase( ) { const {harness} = props; - const detected_pointertypesRef = useRef(({}: {[string]: boolean})); - const detected_eventTypesRef = useRef(({}: {[string]: boolean})); + const detected_pointertypesRef = useRef({} as {[string]: boolean}); + const detected_eventTypesRef = useRef({} as {[string]: boolean}); const expectedPointerIdRef = useRef(NaN); const [square1Visible, setSquare1Visible] = useState(true); @@ -156,7 +156,7 @@ function PointerEventAttributesNoHoverPointersTestCase( eventList.length ) { setSquare1Visible(false); - detected_eventTypesRef.current = ({}: {[string]: boolean}); + detected_eventTypesRef.current = {} as {[string]: boolean}; setSquare2Visible(true); expectedPointerIdRef.current = NaN; } diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerMove.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerMove.js index e45a7defda7..9981088303e 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerMove.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPointerMove.js @@ -24,7 +24,7 @@ function PointerEventPointerMoveTestCase( ) { const {harness} = props; - const detectedPointerTypesRef = useRef(({}: {[string]: boolean})); + const detectedPointerTypesRef = useRef({} as {[string]: boolean}); const testPointerMove = harness.useAsyncTest('pointermove event received'); const handlers = useTestEventHandler( diff --git a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPrimaryTouchPointer.js b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPrimaryTouchPointer.js index 6e7448a3643..69ea788cc88 100644 --- a/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPrimaryTouchPointer.js +++ b/packages/@react-native/tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventPrimaryTouchPointer.js @@ -45,7 +45,7 @@ function PointerEventPrimaryTouchPointerTestCase( ) { const {harness} = props; - const detected_eventsRef = useRef(({}: {[string]: boolean})); + const detected_eventsRef = useRef({} as {[string]: boolean}); const handleIncomingPointerEvent = useCallback( (boxLabel: string, eventType: string, isPrimary: boolean) => { diff --git a/packages/@react-native/tester/js/examples/Filter/FilterExample.js b/packages/@react-native/tester/js/examples/Filter/FilterExample.js index eaf79412199..4b1919aa79c 100644 --- a/packages/@react-native/tester/js/examples/Filter/FilterExample.js +++ b/packages/@react-native/tester/js/examples/Filter/FilterExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import { Animated, 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 9ac07d70b63..cdcef788d21 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-basic.js @@ -444,9 +444,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Basic', name: 'basic', description: 'Simple list of items', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-contentInset.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-contentInset.js index f7189237240..d5a1c8280f4 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-contentInset.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-contentInset.js @@ -77,10 +77,10 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Content Inset', name: 'contentInset', description: 'The amount by which the scroll view content is inset from the edges of the scroll view.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-inverted.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-inverted.js index d0596d8de44..1ffcfafa32f 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-inverted.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-inverted.js @@ -37,9 +37,9 @@ export component FlatList_inverted() { ); } -export default ({ +export default { title: 'Inverted', name: 'inverted', description: 'Test inverted prop on FlatList', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-maintainVisibleContentPosition.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-maintainVisibleContentPosition.js index f674b5aec42..f46ee0cd8ea 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-maintainVisibleContentPosition.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-maintainVisibleContentPosition.js @@ -91,9 +91,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'maintainVisibleContentPosition', name: 'maintainVisibleContentPosition', description: 'Test maintainVisibleContentPosition prop on FlatList', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; 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 a0b043de57f..4b54ba987c8 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-multiColumn.js @@ -196,9 +196,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'MultiColumn', name: 'multicolumn', description: 'Performant, scrollable grid of data', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-nested.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-nested.js index 3abbe4d80fd..d48f005c1c3 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-nested.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-nested.js @@ -329,9 +329,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Nested', description: 'Nested FlatLists of same and opposite orientation', name: 'nested', render: NestedListExample, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onEndReached.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onEndReached.js index 9354ecc9ad5..132778d07b8 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onEndReached.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onEndReached.js @@ -42,7 +42,7 @@ export component FlatList_onEndReached() { ); } -export default ({ +export default { title: 'onEndReached', name: 'onEndReached', description: @@ -50,4 +50,4 @@ export default ({ render: function () { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onStartReached.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onStartReached.js index 0424dc43db0..0e5e6d5ef9c 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onStartReached.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onStartReached.js @@ -46,7 +46,7 @@ export component FlatList_onStartReached() { ); } -export default ({ +export default { title: 'onStartReached', name: 'onStartReached', description: @@ -54,4 +54,4 @@ export default ({ render: function () { return ; }, -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-noWaitForInteraction.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-noWaitForInteraction.js index d21359ac139..d5744dbbfc3 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-noWaitForInteraction.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-noWaitForInteraction.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged horizontal', name: 'onViewableItemsChanged-horizontal-noWaitForInteraction', description: @@ -27,4 +27,4 @@ export default ({ waitForInteraction={false} /> ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-offScreen.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-offScreen.js index 94f0ec5c31b..7711d7b1742 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-offScreen.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-offScreen.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged horizontal', name: 'onViewableItemsChanged-horizontal-offScreen', description: 'E2E Test:\nonViewableItemsChanged-horizontal-offScreen', @@ -26,4 +26,4 @@ export default ({ waitForInteraction={true} /> ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-waitForInteraction.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-waitForInteraction.js index f0a25e3aff9..41e297e3136 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-waitForInteraction.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-horizontal-waitForInteraction.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged horizontal', name: 'onViewableItemsChanged-horizontal-waitForInteraction', description: @@ -27,4 +27,4 @@ export default ({ waitForInteraction={true} /> ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-noWaitForInteraction.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-noWaitForInteraction.js index 50dd25f6938..401b136ddce 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-noWaitForInteraction.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-noWaitForInteraction.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged', name: 'onViewableItemsChanged_noWaitForInteraction', description: 'E2E Test:\nonViewableItemsChanged-noWaitForInteraction', @@ -23,4 +23,4 @@ export default ({ render: () => ( ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-offScreen.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-offScreen.js index 7accf7f4f46..0165714a38d 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-offScreen.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-offScreen.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged offScreen', name: 'onViewableItemsChanged-offScreen', description: 'E2E Test:\nonViewableItemsChanged-offScreen', @@ -26,4 +26,4 @@ export default ({ waitForInteraction={true} /> ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-waitForInteraction.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-waitForInteraction.js index d8c203ea7ea..fa7c4d457db 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-waitForInteraction.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged-waitForInteraction.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'onViewableItemsChanged', name: 'onViewableItemsChanged-waitForInteraction', description: 'E2E Test:\nonViewableItemsChanged-waitForInteraction', @@ -23,4 +23,4 @@ export default ({ render: () => ( ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged.js index 60f6ddad19f..750a9026e22 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-onViewableItemsChanged.js @@ -15,11 +15,11 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import {FlatList_BaseOnViewableItemsChanged} from './FlatList-BaseOnViewableItemsChanged'; import * as React from 'react'; -export default ({ +export default { title: 'FlatList onViewableItemsChanged', name: 'onViewableItemsChanged', description: 'Test onViewableItemsChanged behavior', render: () => ( ), -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-stickyHeaders.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-stickyHeaders.js index e3f1f1feda8..7154d702048 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-stickyHeaders.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-stickyHeaders.js @@ -64,9 +64,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Sticky Headers', name: 'stickyHeaders', description: 'Test sticky headers on FlatList', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatList-withSeparators.js b/packages/@react-native/tester/js/examples/FlatList/FlatList-withSeparators.js index dd04d4505fd..548be0dea48 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatList-withSeparators.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatList-withSeparators.js @@ -60,9 +60,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'FlatList with Separators', name: 'separators', description: 'Tap to see pressed states for separator components.', render: () => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/FlatList/FlatListExampleIndex.js b/packages/@react-native/tester/js/examples/FlatList/FlatListExampleIndex.js index d4ab2f7ae92..58071eeef0d 100644 --- a/packages/@react-native/tester/js/examples/FlatList/FlatListExampleIndex.js +++ b/packages/@react-native/tester/js/examples/FlatList/FlatListExampleIndex.js @@ -28,7 +28,7 @@ import onViewableItemsChanged_waitForInteractionExample from './FlatList-onViewa import StickyHeadersExample from './FlatList-stickyHeaders'; import WithSeparatorsExample from './FlatList-withSeparators'; -export default ({ +export default { framework: 'React', title: 'FlatList', category: 'ListView', @@ -54,4 +54,4 @@ export default ({ onViewableItemsChanged_offScreen, onViewableItemsChanged_horizontal_offScreen, ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/Image/ImageExample.js b/packages/@react-native/tester/js/examples/Image/ImageExample.js index 95ae98417e1..28fb0505cc4 100644 --- a/packages/@react-native/tester/js/examples/Image/ImageExample.js +++ b/packages/@react-native/tester/js/examples/Image/ImageExample.js @@ -16,7 +16,7 @@ import type {ImageProps, LayoutChangeEvent} from 'react-native'; import RNTesterButton from '../../components/RNTesterButton'; import RNTesterText from '../../components/RNTesterText'; import ImageCapInsetsExample from './ImageCapInsetsExample'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useState} from 'react'; import {Image, ImageBackground, StyleSheet, Text, View} from 'react-native'; @@ -909,7 +909,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.framework = 'React'; exports.title = 'Image'; exports.category = 'Basic'; @@ -920,7 +920,7 @@ exports.examples = [ { title: 'Plain Network Image with `source` prop.', description: ('If the `source` prop `uri` property is prefixed with ' + - '"http", then it will be downloaded from the network.': string), + '"http", then it will be downloaded from the network.') as string, render: function (): React.Node { return ; }, @@ -928,7 +928,7 @@ exports.examples = [ { title: 'Plain Network Image with `src` prop.', description: ('If the `src` prop is defined with ' + - '"http", then it will be downloaded from the network.': string), + '"http", then it will be downloaded from the network.') as string, render: function (): React.Node { return ; }, @@ -937,7 +937,7 @@ exports.examples = [ title: 'Multiple Image Source using the `srcSet` prop.', description: ('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), + 'An appropriate value will be used based on the scale of the device.') as string, render: function (): React.Node { return ( ; }, @@ -962,7 +962,7 @@ exports.examples = [ name: 'static-image', description: ('Static assets should be placed in the source code tree, and ' + - 'required in the same way as JavaScript modules.': string), + 'required in the same way as JavaScript modules.') as string, render: function (): React.Node { return ( @@ -1218,7 +1218,7 @@ exports.examples = [ title: 'Tint Color', name: 'tint-color', description: ('The `tintColor` prop changes all the non-alpha ' + - 'pixels to the tint color.': string), + 'pixels to the tint color.') as string, render: function (): React.Node { return ( @@ -1370,7 +1370,7 @@ exports.examples = [ { title: 'Object Fit', description: ('The `objectFit` style prop controls how the image is ' + - 'rendered within the frame.': string), + 'rendered within the frame.') as string, render: function (): React.Node { return ( @@ -1438,7 +1438,7 @@ exports.examples = [ { title: 'Resize Mode', description: ('The `resizeMode` style prop controls how the image is ' + - 'rendered within the frame.': string), + 'rendered within the frame.') as string, render: function (): React.Node { return ( @@ -1552,7 +1552,7 @@ exports.examples = [ ('When the image is resized, the corners of the size specified ' + 'by capInsets will stay a fixed size, but the center content and ' + 'borders of the image will be stretched. This is useful for creating ' + - 'resizable rounded buttons, shadows, and other resizable assets.': string), + 'resizable rounded buttons, shadows, and other resizable assets.') as string, render: function (): React.Node { return ; }, @@ -1568,7 +1568,7 @@ exports.examples = [ title: 'MultipleSourcesExample', description: ('The `source` prop allows passing in an array of uris, so that native to choose which image ' + - 'to diplay based on the size of the of the target image': string), + 'to diplay based on the size of the of the target image') as string, render: function (): React.Node { return ; }, @@ -1576,7 +1576,7 @@ exports.examples = [ { title: 'Legacy local image', description: ('Images shipped with the native bundle, but not managed ' + - 'by the JS packager': string), + 'by the JS packager') as string, render: function (): React.Node { return ; }, @@ -1629,7 +1629,7 @@ exports.examples = [ { title: 'Accessibility', description: - ('If the `accessible` (boolean) prop is set to True, the image will be indicated as an accessbility element.': string), + 'If the `accessible` (boolean) prop is set to True, the image will be indicated as an accessbility element.' as string, render: function (): React.Node { return ; }, @@ -1637,7 +1637,7 @@ exports.examples = [ { title: 'Accessibility Label', description: - ('When an element is marked as accessibile (using the accessibility prop), it is good practice to set an accessibilityLabel on the image to provide a description of the element to people who use VoiceOver. VoiceOver will read this string when people select this element.': string), + 'When an element is marked as accessibile (using the accessibility prop), it is good practice to set an accessibilityLabel on the image to provide a description of the element to people who use VoiceOver. VoiceOver will read this string when people select this element.' as string, render: function (): React.Node { return ( ; }, @@ -1675,7 +1675,7 @@ exports.examples = [ { title: 'Loading Indicator Source', description: - ('This prop is used to set the resource that will be used as the loading indicator for the image (displayed until the image is ready to be displayed).': string), + 'This prop is used to set the resource that will be used as the loading indicator for the image (displayed until the image is ready to be displayed).' as string, render: function (): React.Node { return ; }, @@ -1683,7 +1683,7 @@ exports.examples = [ { title: 'On Layout', description: - ('This prop is used to set the handler function to be called when the image is mounted or its layout changes. The function receives an event with `{nativeEvent: {layout: {x, y, width, height}}}`': string), + 'This prop is used to set the handler function to be called when the image is mounted or its layout changes. The function receives an event with `{nativeEvent: {layout: {x, y, width, height}}}`' as string, render: function (): React.Node { return ; }, @@ -1691,7 +1691,7 @@ exports.examples = [ { title: 'On Partial Load', description: - ('This prop is used to set the handler function to be called when the partial load of the image is complete. This is meant for progressive JPEG loads.': string), + 'This prop is used to set the handler function to be called when the partial load of the image is complete. This is meant for progressive JPEG loads.' as string, render: function (): React.Node { return ; }, diff --git a/packages/@react-native/tester/js/examples/InvalidProps/InvalidPropsExample.js b/packages/@react-native/tester/js/examples/InvalidProps/InvalidPropsExample.js index bff02276eb2..3c620dc3db2 100644 --- a/packages/@react-native/tester/js/examples/InvalidProps/InvalidPropsExample.js +++ b/packages/@react-native/tester/js/examples/InvalidProps/InvalidPropsExample.js @@ -123,7 +123,7 @@ export const examples: Array = [ render(): React.Node { return ( )}} + actual={{resource_paths: [] as Array}} expected={undefined}> {backgroundColor => ( diff --git a/packages/@react-native/tester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js b/packages/@react-native/tester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js index 01968efb3e2..c7c0b892277 100644 --- a/packages/@react-native/tester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js +++ b/packages/@react-native/tester/js/examples/JSResponderHandlerExample/JSResponderHandlerExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {PanResponder, ScrollView, StyleSheet, View} from 'react-native'; exports.displayName = 'JSResponderHandlerExample'; @@ -33,7 +33,7 @@ exports.examples = [ ('This example tests the native JSResponderHandler: when the user ' + 'scrolls on the right side of the ScrollView (white area located on the' + ' right side of the gray area), the touch event is managed by native ' + - 'which blocks the scroll event.': string), + 'which blocks the scroll event.') as string, render: function (): React.Node { const views = []; diff --git a/packages/@react-native/tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js b/packages/@react-native/tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js index 610ec9588d4..4ee3377ff31 100644 --- a/packages/@react-native/tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js +++ b/packages/@react-native/tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js @@ -12,7 +12,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; -import React, {useState} from 'react'; +import * as React from 'react'; +import {useState} from 'react'; import { Alert, Button, @@ -252,7 +253,7 @@ exports.examples = [ title: 'Keyboard Avoiding View with different behaviors', description: ('Specify how to react to the presence of the keyboard. Android and iOS both interact' + - 'with this prop differently. On both iOS and Android, setting behavior is recommended.': string), + 'with this prop differently. On both iOS and Android, setting behavior is recommended.') as string, render(): React.Node { return ; }, @@ -261,7 +262,7 @@ exports.examples = [ title: 'Keyboard Avoiding View with keyboardVerticalOffset={distance}', description: ('This is the distance between the top of the user screen and the react native' + - 'view, may be non-zero in some use cases. Defaults to 0.': string), + 'view, may be non-zero in some use cases. Defaults to 0.') as string, render(): React.Node { return ; }, diff --git a/packages/@react-native/tester/js/examples/Layout/LayoutAnimationExample.js b/packages/@react-native/tester/js/examples/Layout/LayoutAnimationExample.js index a83d552799d..4e7b16b988a 100644 --- a/packages/@react-native/tester/js/examples/Layout/LayoutAnimationExample.js +++ b/packages/@react-native/tester/js/examples/Layout/LayoutAnimationExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { LayoutAnimation, StyleSheet, diff --git a/packages/@react-native/tester/js/examples/Layout/LayoutEventsExample.js b/packages/@react-native/tester/js/examples/Layout/LayoutEventsExample.js index 90a544eef86..0c457df9a0b 100644 --- a/packages/@react-native/tester/js/examples/Layout/LayoutEventsExample.js +++ b/packages/@react-native/tester/js/examples/Layout/LayoutEventsExample.js @@ -17,7 +17,7 @@ import type { } from 'react-native/Libraries/Components/View/ViewPropTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Image, LayoutAnimation, StyleSheet, View} from 'react-native'; type Props = Readonly<{}>; @@ -156,7 +156,7 @@ const styles = StyleSheet.create({ exports.title = 'Layout Events'; exports.category = 'UI'; exports.description = ('Examples that show how Layout events can be used to ' + - 'measure view size and position.': string); + 'measure view size and position.') as string; exports.examples = [ { title: 'LayoutEventExample', diff --git a/packages/@react-native/tester/js/examples/Layout/LayoutExample.js b/packages/@react-native/tester/js/examples/Layout/LayoutExample.js index 0d6b4b8eda2..28fb13b6cc9 100644 --- a/packages/@react-native/tester/js/examples/Layout/LayoutExample.js +++ b/packages/@react-native/tester/js/examples/Layout/LayoutExample.js @@ -16,7 +16,7 @@ import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet'; import RNTesterBlock from '../../components/RNTesterBlock'; import RNTesterPage from '../../components/RNTesterPage'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {StyleSheet, View} from 'react-native'; type CicleProps = Readonly<{ diff --git a/packages/@react-native/tester/js/examples/LinearGradient/LinearGradientExample.js b/packages/@react-native/tester/js/examples/LinearGradient/LinearGradientExample.js index ed99f2bf1b8..391b680d07c 100644 --- a/packages/@react-native/tester/js/examples/LinearGradient/LinearGradientExample.js +++ b/packages/@react-native/tester/js/examples/LinearGradient/LinearGradientExample.js @@ -14,7 +14,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Platform, PlatformColor, StyleSheet, View} from 'react-native'; type Props = Readonly<{ diff --git a/packages/@react-native/tester/js/examples/Linking/LinkingExample.js b/packages/@react-native/tester/js/examples/Linking/LinkingExample.js index 9e0b64418f8..245136b3be8 100644 --- a/packages/@react-native/tester/js/examples/Linking/LinkingExample.js +++ b/packages/@react-native/tester/js/examples/Linking/LinkingExample.js @@ -12,7 +12,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterBlock from '../../components/RNTesterBlock'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import { Button, diff --git a/packages/@react-native/tester/js/examples/MixBlendMode/MixBlendModeExample.js b/packages/@react-native/tester/js/examples/MixBlendMode/MixBlendModeExample.js index e46fe8a9742..b679c791ddc 100644 --- a/packages/@react-native/tester/js/examples/MixBlendMode/MixBlendModeExample.js +++ b/packages/@react-native/tester/js/examples/MixBlendMode/MixBlendModeExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {Image, ImageBackground, StyleSheet, Text, View} from 'react-native'; @@ -131,6 +131,7 @@ const mixBlendModes = [ 'saturation', 'color', 'luminosity', + 'plus-lighter', ] as const; const examples: Array = mixBlendModes.map(mode => ({ diff --git a/packages/@react-native/tester/js/examples/Modal/ModalOnShow.js b/packages/@react-native/tester/js/examples/Modal/ModalOnShow.js index 6f043eb2cd9..3c46aff997d 100644 --- a/packages/@react-native/tester/js/examples/Modal/ModalOnShow.js +++ b/packages/@react-native/tester/js/examples/Modal/ModalOnShow.js @@ -132,10 +132,10 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: "Modal's onShow/onDismiss", name: 'onShow', description: 'onShow and onDismiss (iOS only) callbacks are called when a modal is shown/dismissed', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js index 39cf3e97130..cabf3b5f648 100644 --- a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js +++ b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js @@ -381,9 +381,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { description: 'Modals can be presented with or without animation', name: 'basic', render: (): React.Node => , title: 'Modal Presentation', -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/NativeAnimation/NativeAnimationsExample.js b/packages/@react-native/tester/js/examples/NativeAnimation/NativeAnimationsExample.js index 9ada17831a7..b8ed90f85e5 100644 --- a/packages/@react-native/tester/js/examples/NativeAnimation/NativeAnimationsExample.js +++ b/packages/@react-native/tester/js/examples/NativeAnimation/NativeAnimationsExample.js @@ -16,7 +16,7 @@ import type AnimatedValue from 'react-native/Libraries/Animated/nodes/AnimatedVa import RNTesterSettingSwitchRow from '../../components/RNTesterSettingSwitchRow'; import RNTesterText from '../../components/RNTesterText'; import useJsStalls from '../../utils/useJsStalls'; -import React from 'react'; +import * as React from 'react'; import { Animated, StyleSheet, diff --git a/packages/@react-native/tester/js/examples/OrientationChange/OrientationChangeExample.js b/packages/@react-native/tester/js/examples/OrientationChange/OrientationChangeExample.js index bcf6e345b09..db4aea18a17 100644 --- a/packages/@react-native/tester/js/examples/OrientationChange/OrientationChangeExample.js +++ b/packages/@react-native/tester/js/examples/OrientationChange/OrientationChangeExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useState} from 'react'; import {DeviceEventEmitter, View} from 'react-native'; diff --git a/packages/@react-native/tester/js/examples/Performance/PerformanceApiExample.js b/packages/@react-native/tester/js/examples/Performance/PerformanceApiExample.js index 09fea74bd42..442f6a73611 100644 --- a/packages/@react-native/tester/js/examples/Performance/PerformanceApiExample.js +++ b/packages/@react-native/tester/js/examples/Performance/PerformanceApiExample.js @@ -228,37 +228,39 @@ const styles = StyleSheet.create({ export const title = 'Performance API Examples'; export const category = 'Basic'; export const description = 'Shows the performance API provided in React Native'; -export const examples: Array = ([ - { - title: 'performance.memory', - render: (): React.Node => { - return ; +export const examples: Array = ( + [ + { + title: 'performance.memory', + render: (): React.Node => { + return ; + }, }, - }, - { - title: 'performance.reactNativeStartupTiming', - render: (): React.Node => { - return ; + { + title: 'performance.reactNativeStartupTiming', + render: (): React.Node => { + return ; + }, }, - }, - { - title: 'PerformanceObserver (marks and measures)', - render: (): React.Node => { - return ; + { + title: 'PerformanceObserver (marks and measures)', + render: (): React.Node => { + return ; + }, }, - }, - { - title: 'PerformanceObserver (events)', - render: (): React.Node => { - return ; + { + title: 'PerformanceObserver (events)', + render: (): React.Node => { + return ; + }, }, - }, - PerformanceObserver.supportedEntryTypes.includes('longtask') - ? { - title: 'PerformanceObserver (long tasks)', - render: (): React.Node => { - return ; - }, - } - : null, -]: Array).filter(Boolean); + PerformanceObserver.supportedEntryTypes.includes('longtask') + ? { + title: 'PerformanceObserver (long tasks)', + render: (): React.Node => { + return ; + }, + } + : null, + ] as Array +).filter(Boolean); diff --git a/packages/@react-native/tester/js/examples/PermissionsAndroid/PermissionsExample.js b/packages/@react-native/tester/js/examples/PermissionsAndroid/PermissionsExample.js index 94f9eedbadb..96a643b9bdf 100644 --- a/packages/@react-native/tester/js/examples/PermissionsAndroid/PermissionsExample.js +++ b/packages/@react-native/tester/js/examples/PermissionsAndroid/PermissionsExample.js @@ -147,7 +147,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.framework = 'React'; exports.title = 'PermissionsAndroid'; exports.category = 'Android'; diff --git a/packages/@react-native/tester/js/examples/PlatformColor/PlatformColorExample.js b/packages/@react-native/tester/js/examples/PlatformColor/PlatformColorExample.js index 6cb4a94567d..bdebddb14c4 100644 --- a/packages/@react-native/tester/js/examples/PlatformColor/PlatformColorExample.js +++ b/packages/@react-native/tester/js/examples/PlatformColor/PlatformColorExample.js @@ -12,7 +12,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import type {ColorValue} from 'react-native'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { Appearance, Button, diff --git a/packages/@react-native/tester/js/examples/Playground/RNTesterPlayground.js b/packages/@react-native/tester/js/examples/Playground/RNTesterPlayground.js index d37d0d4a915..8e6b10479de 100644 --- a/packages/@react-native/tester/js/examples/Playground/RNTesterPlayground.js +++ b/packages/@react-native/tester/js/examples/Playground/RNTesterPlayground.js @@ -30,9 +30,9 @@ const styles = StyleSheet.create({ }, }); -export default ({ +export default { title: 'Playground', name: 'playground', description: 'Test out new features and ideas.', render: (): React.Node => , -}: RNTesterModuleExample); +} as RNTesterModuleExample; diff --git a/packages/@react-native/tester/js/examples/PointerEvents/PointerEventsExample.js b/packages/@react-native/tester/js/examples/PointerEvents/PointerEventsExample.js index a88dac42909..28bf3ec27c5 100644 --- a/packages/@react-native/tester/js/examples/PointerEvents/PointerEventsExample.js +++ b/packages/@react-native/tester/js/examples/PointerEvents/PointerEventsExample.js @@ -463,5 +463,5 @@ exports.framework = 'React'; exports.title = 'Pointer Events'; exports.category = 'Basic'; exports.description = ('Demonstrates the use of the pointerEvents prop of a ' + - 'View to control how touches should be handled.': string); -exports.examples = (exampleClasses.map(infoToExample): Array); + 'View to control how touches should be handled.') as string; +exports.examples = exampleClasses.map(infoToExample) as Array; diff --git a/packages/@react-native/tester/js/examples/Pressable/PressableExample.js b/packages/@react-native/tester/js/examples/Pressable/PressableExample.js index a6cae01d85a..58696ccb722 100644 --- a/packages/@react-native/tester/js/examples/Pressable/PressableExample.js +++ b/packages/@react-native/tester/js/examples/Pressable/PressableExample.js @@ -374,7 +374,7 @@ const examples = [ { title: 'Change child based on Press', description: - ('You should be able to press the button, move your finger while pressing, and release it with the proper status updates.': string), + 'You should be able to press the button, move your finger while pressing, and release it with the proper status updates.' as string, render(): React.Node { return ( @@ -402,7 +402,7 @@ const examples = [ title: 'Pressable feedback events', name: 'feedback-events', description: (' components accept onPress, onPressIn, ' + - 'onPressOut, and onLongPress as props.': string), + 'onPressOut, and onLongPress as props.') as string, render: function (): React.Node { return ; }, @@ -410,7 +410,7 @@ const examples = [ { title: 'Pressable with Ripple and Animated child', description: - ('Pressable can have an AnimatedComponent as a direct child.': string), + 'Pressable can have an AnimatedComponent as a direct child.' as string, platform: 'android', render: function (): React.Node { const mScale = new Animated.Value(1); @@ -437,7 +437,7 @@ const examples = [ { title: 'Pressable with custom Ripple', description: - ("Pressable can specify ripple's radius, color and borderless params": string), + "Pressable can specify ripple's radius, color and borderless params" as string, platform: 'android', render: function (): React.Node { const nativeFeedbackButton = { @@ -523,7 +523,7 @@ const examples = [ title: 'Pressable delay for events', description: (' also accept delayPressIn, ' + 'delayPressOut, and delayLongPress as props. These props impact the ' + - 'timing of feedback events.': string), + 'timing of feedback events.') as string, render: function (): React.Node { return ; }, @@ -542,7 +542,7 @@ const examples = [ name: 'hit-slop', description: (' components accept hitSlop prop which extends the touch area ' + - 'without changing the view bounds.': string), + 'without changing the view bounds.') as string, render: function (): React.Node { return ; }, @@ -550,7 +550,7 @@ const examples = [ { title: 'Pressable Native Methods', description: - (' components expose native methods like `measure`.': string), + ' components expose native methods like `measure`.' as string, render: function (): React.Node { return ; }, @@ -559,7 +559,7 @@ const examples = [ title: 'Disabled Pressable', description: (' components accept disabled prop which prevents ' + - 'any interaction with component': string), + 'any interaction with component') as string, render: function (): React.Node { return ; }, @@ -567,14 +567,14 @@ const examples = [ { title: 'Pressable with aria-label="label"', description: ('Note: This prop changes the text that a screen ' + - 'reader announces (there are no visual differences).': string), + 'reader announces (there are no visual differences).') as string, render: function (): React.Node { return ; }, }, { title: 'Pressable with box-shadow', - description: ('Pressables with box-shadow': string), + description: 'Pressables with box-shadow' as string, render: function PressableWithBoxShadow(): React.Node { const [parentColor, setParentColor] = useState('red'); const [childColor, setChildColor] = useState('blue'); @@ -612,7 +612,7 @@ const examples = [ ...PressableExampleFbInternal.examples, ]; -module.exports = ({ +module.exports = { title: 'Pressable', documentationURL: 'https://reactnative.dev/docs/pressable', category: 'UI', @@ -621,4 +621,4 @@ module.exports = ({ /* $FlowFixMe[incompatible-type] Natural Inference rollout. See * https://fburl.com/workplace/6291gfvu */ examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/RTL/RTLExample.js b/packages/@react-native/tester/js/examples/RTL/RTLExample.js index 608fd35c8a5..c8fa0a915a1 100644 --- a/packages/@react-native/tester/js/examples/RTL/RTLExample.js +++ b/packages/@react-native/tester/js/examples/RTL/RTLExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTexterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { Alert, Animated, @@ -735,7 +735,7 @@ exports.examples = [ { title: 'Default Text Alignment', description: ('In iOS, it depends on active language. ' + - 'In Android, it depends on the text content.': string), + 'In Android, it depends on the text content.') as string, render: function (): React.MixedElement { return ; }, @@ -743,7 +743,7 @@ exports.examples = [ { title: "Using textAlign: 'left'", description: ('In iOS/Android, text alignment flips regardless of ' + - 'languages or text content.': string), + 'languages or text content.') as string, render: function (): React.MixedElement { return ( ; }, diff --git a/packages/@react-native/tester/js/examples/RefreshControl/RefreshControlExample.js b/packages/@react-native/tester/js/examples/RefreshControl/RefreshControlExample.js index c05b3062f20..ec5a03270f7 100644 --- a/packages/@react-native/tester/js/examples/RefreshControl/RefreshControlExample.js +++ b/packages/@react-native/tester/js/examples/RefreshControl/RefreshControlExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { RefreshControl, ScrollView, diff --git a/packages/@react-native/tester/js/examples/SafeAreaView/SafeAreaViewExample.js b/packages/@react-native/tester/js/examples/SafeAreaView/SafeAreaViewExample.js index 5502214f175..0acfd577696 100644 --- a/packages/@react-native/tester/js/examples/SafeAreaView/SafeAreaViewExample.js +++ b/packages/@react-native/tester/js/examples/SafeAreaView/SafeAreaViewExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {Button, DeviceInfo, Modal, StyleSheet, View} from 'react-native'; @@ -77,7 +77,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.framework = 'React'; exports.title = 'SafeAreaView'; exports.category = 'UI'; @@ -97,7 +97,7 @@ exports.examples = [ ('`DeviceInfo.isIPhoneX_deprecated` returns true only on iPhone X. ' + 'Note: This prop is deprecated and will be removed in a future ' + 'release. Please use this only for a quick and temporary solution. ' + - 'Use instead.': string), + 'Use instead.') as string, render: (): React.Node => , }, ] as Array; diff --git a/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js b/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js index 829af773636..e9db925ecf7 100644 --- a/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js +++ b/packages/@react-native/tester/js/examples/SectionList/SectionList-scrollable.js @@ -27,7 +27,7 @@ import { } from '../../components/ListExampleShared'; import RNTesterPage from '../../components/RNTesterPage'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useRef, useState} from 'react'; import { Alert, diff --git a/packages/@react-native/tester/js/examples/Share/ShareExample.js b/packages/@react-native/tester/js/examples/Share/ShareExample.js index 8c06c4f01be..8a654c0cccd 100644 --- a/packages/@react-native/tester/js/examples/Share/ShareExample.js +++ b/packages/@react-native/tester/js/examples/Share/ShareExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {Button, Share, StyleSheet, View} from 'react-native'; @@ -22,7 +22,7 @@ const shareMessage = () => { Share.share({ message: ('Our top priority for React Native is to match the expectations people have for each platform. This is why React Native renders to platform primitives. We value native look-and-feel over cross-platform consistency.' + - 'For example, the TextInput in React Native renders to a UITextField on iOS. This ensures that integration with password managers and keyboard controls work out of the box. By using platform primitives, React Native apps are also able to stay up-to-date with design and behavior changes from new releases of Android and iOS.': string), + 'For example, the TextInput in React Native renders to a UITextField on iOS. This ensures that integration with password managers and keyboard controls work out of the box. By using platform primitives, React Native apps are also able to stay up-to-date with design and behavior changes from new releases of Android and iOS.') as string, }); }; @@ -33,7 +33,7 @@ const shareText = () => { title: 'Massive Scale', message: ('Hundreds of screens in the Facebook app are implemented with React Native. The Facebook app is used by billions of people on a huge range of devices. This is why we invest in the most challenging problems at scale.' + - 'Deploying React Native in our apps lets us identify problems that we wouldn’t see at a smaller scale. For example, Facebook focuses on improving performance across a broad spectrum of devices from the newest iPhone to many older generations of Android devices. This focus informs our architecture projects such as Hermes, Fabric, and TurboModules.': string), + 'Deploying React Native in our apps lets us identify problems that we wouldn’t see at a smaller scale. For example, Facebook focuses on improving performance across a broad spectrum of devices from the newest iPhone to many older generations of Android devices. This focus informs our architecture projects such as Hermes, Fabric, and TurboModules.') as string, url: 'https://reactnative.dev/blog/2020/07/17/react-native-principles', }, { @@ -92,7 +92,7 @@ const SharedAction = () => { { title: 'Create native apps', message: - ('React Native combines the best parts of native development with React, a best-in-class JavaScript library for building user interfaces.': string), + 'React Native combines the best parts of native development with React, a best-in-class JavaScript library for building user interfaces.' as string, url: 'https://reactnative.dev/', }, { diff --git a/packages/@react-native/tester/js/examples/StatusBar/StatusBarExample.js b/packages/@react-native/tester/js/examples/StatusBar/StatusBarExample.js index 79d04085b7e..eed932fdc8c 100644 --- a/packages/@react-native/tester/js/examples/StatusBar/StatusBarExample.js +++ b/packages/@react-native/tester/js/examples/StatusBar/StatusBarExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { Modal, StatusBar, diff --git a/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js b/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js index 7df3686e543..7c303802e27 100644 --- a/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js +++ b/packages/@react-native/tester/js/examples/SwipeableCardExample/SwipeableCardExample.js @@ -35,7 +35,7 @@ module.exports = { title: 'SwipeableCardExample', description: ('This example creates a swipeable card using PanResponder. ' + - 'Under the hood, JSResponderHandler should prevent scroll when the card is being swiped.': string), + 'Under the hood, JSResponderHandler should prevent scroll when the card is being swiped.') as string, render: function (): React.Node { return ; }, diff --git a/packages/@react-native/tester/js/examples/Switch/SwitchExample.js b/packages/@react-native/tester/js/examples/Switch/SwitchExample.js index b520820cb5b..bfc76fea03e 100644 --- a/packages/@react-native/tester/js/examples/Switch/SwitchExample.js +++ b/packages/@react-native/tester/js/examples/Switch/SwitchExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Platform, Switch, View} from 'react-native'; type OnOffIndicatorProps = Readonly<{on: boolean, testID: string}>; diff --git a/packages/@react-native/tester/js/examples/Text/TextExample.android.js b/packages/@react-native/tester/js/examples/Text/TextExample.android.js index b46af771747..f0896eae608 100644 --- a/packages/@react-native/tester/js/examples/Text/TextExample.android.js +++ b/packages/@react-native/tester/js/examples/Text/TextExample.android.js @@ -1768,11 +1768,11 @@ const styles = StyleSheet.create({ }, }); -module.exports = ({ +module.exports = { title: 'Text', documentationURL: 'https://reactnative.dev/docs/text', category: 'Basic', description: 'Base component for rendering styled text.', displayName: 'TextExample', examples, -}: RNTesterModule); +} as RNTesterModule; 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 a377e4ac077..68b4a103a87 100644 --- a/packages/@react-native/tester/js/examples/Text/TextExample.ios.js +++ b/packages/@react-native/tester/js/examples/Text/TextExample.ios.js @@ -575,7 +575,7 @@ const examples = [ title: 'iOS System Font Families (iOS only)', name: 'iOSSystemFontFamilies', description: - ('Shows system font families including system-ui/ui-sans-serif, ui-serif, ui-monospace, and ui-rounded': string), + 'Shows system font families including system-ui/ui-sans-serif, ui-serif, ui-monospace, and ui-rounded' as string, render: function (): React.Node { const baseTextStyle = {fontSize: 20}; return ( @@ -925,7 +925,7 @@ const examples = [ name: 'nested', description: ('Nested text components will inherit the styles of their ' + 'parents (only backgroundColor is inherited from non-Text parents). ' + - ' only supports other and raw text (strings) as children.': string), + ' only supports other and raw text (strings) as children.') as string, render: function (): React.Node { return ( @@ -1601,11 +1601,11 @@ const examples = [ ...TextSharedExamples, ]; -module.exports = ({ +module.exports = { title: 'Text', documentationURL: 'https://reactnative.dev/docs/text', category: 'Basic', description: 'Base component for rendering styled text.', displayName: 'TextExample', examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/TextInput/ExampleTextInput.js b/packages/@react-native/tester/js/examples/TextInput/ExampleTextInput.js index 1c3a6aa0026..39873af45f3 100644 --- a/packages/@react-native/tester/js/examples/TextInput/ExampleTextInput.js +++ b/packages/@react-native/tester/js/examples/TextInput/ExampleTextInput.js @@ -9,7 +9,8 @@ */ import {RNTesterThemeContext} from '../../components/RNTesterTheme'; -import React, {useContext} from 'react'; +import * as React from 'react'; +import {useContext} from 'react'; import {StyleSheet, TextInput} from 'react-native'; const ExampleTextInput: component( diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js index 3ab12ec76bc..b74ac5e8f15 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.android.js @@ -17,7 +17,7 @@ import type { import ExampleTextInput from './ExampleTextInput'; import TextInputSharedExamples from './TextInputSharedExamples'; -import React from 'react'; +import * as React from 'react'; import {useState} from 'react'; import {StyleSheet, Text, View} from 'react-native'; @@ -508,11 +508,11 @@ const examples: Array = [ }, ]; -module.exports = ({ - displayName: (undefined: ?string), +module.exports = { + displayName: undefined as ?string, title: 'TextInput', documentationURL: 'https://reactnative.dev/docs/textinput', category: 'Basic', description: 'Single and multi-line text inputs.', examples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js index f90d8db69c4..a3e0621e8bf 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputExample.ios.js @@ -19,7 +19,7 @@ import type {KeyboardTypeOptions} from 'react-native'; import RNTesterText from '../../components/RNTesterText'; import ExampleTextInput from './ExampleTextInput'; import TextInputSharedExamples from './TextInputSharedExamples'; -import React from 'react'; +import * as React from 'react'; import {useRef} from 'react'; import { Alert, @@ -1053,11 +1053,11 @@ const textInputExamples: Array = [ }, ]; -module.exports = ({ - displayName: (undefined: ?string), +module.exports = { + displayName: undefined as ?string, title: 'TextInput', documentationURL: 'https://reactnative.dev/docs/TextInput', category: 'Basic', description: 'Single and multi-line text inputs.', examples: textInputExamples, -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js b/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js index 3e25d843dbd..6c5e8bfde40 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputKeyProp.js @@ -12,7 +12,8 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; -import React, {useEffect, useState} from 'react'; +import * as React from 'react'; +import {useEffect, useState} from 'react'; import {TextInput, View} from 'react-native'; function TextInputKeyProp() { diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js index 324c13e3171..3aa30acc36a 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js @@ -921,7 +921,7 @@ function AutogrowingTextInputExample({ ); } -module.exports = ([ +module.exports = [ { title: 'Auto-focus & select text on focus', render: function (): React.Node { @@ -1288,4 +1288,4 @@ module.exports = ([ ); }, }, -]: Array); +] as Array; diff --git a/packages/@react-native/tester/js/examples/Timer/TimerExample.js b/packages/@react-native/tester/js/examples/Timer/TimerExample.js index 0e36bcd2bb7..a80bdbac9f6 100644 --- a/packages/@react-native/tester/js/examples/Timer/TimerExample.js +++ b/packages/@react-native/tester/js/examples/Timer/TimerExample.js @@ -14,7 +14,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterButton from '../../components/RNTesterButton'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Alert, Platform, ToastAndroid, View} from 'react-native'; function burnCPU(milliseconds: number) { @@ -324,7 +324,7 @@ exports.examples = [ title: 'this.setTimeout(fn, t)', description: ('Execute function fn t milliseconds in the future. If ' + 't === 0, it will be enqueued immediately in the next event loop. ' + - 'Larger values will fire on the closest frame.': string), + 'Larger values will fire on the closest frame.') as string, render: function (): React.Node { return ( @@ -373,7 +373,7 @@ exports.examples = [ { title: 'this.setInterval(fn, t)', description: ('Execute function fn every t milliseconds until cancelled ' + - 'or component is unmounted.': string), + 'or component is unmounted.') as string, render: function (): React.Node { return ; }, diff --git a/packages/@react-native/tester/js/examples/ToastAndroid/ToastAndroidExample.js b/packages/@react-native/tester/js/examples/ToastAndroid/ToastAndroidExample.js index 3d992bcabe5..e6c29a4cd18 100644 --- a/packages/@react-native/tester/js/examples/ToastAndroid/ToastAndroidExample.js +++ b/packages/@react-native/tester/js/examples/ToastAndroid/ToastAndroidExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {Pressable, StyleSheet, ToastAndroid} from 'react-native'; const ToastWithShortDuration = () => { diff --git a/packages/@react-native/tester/js/examples/Touchable/TouchableExample.js b/packages/@react-native/tester/js/examples/Touchable/TouchableExample.js index e3ceeee1e29..78306bd1d65 100644 --- a/packages/@react-native/tester/js/examples/Touchable/TouchableExample.js +++ b/packages/@react-native/tester/js/examples/Touchable/TouchableExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {useEffect, useRef, useState} from 'react'; import { Animated, @@ -664,7 +664,7 @@ const styles = StyleSheet.create({ }, }); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.description = 'Touchable and onPress examples.'; exports.title = 'Touchable* and onPress'; exports.category = 'UI'; @@ -677,7 +677,7 @@ exports.examples = [ 'black background under the single child view. This works best when the ' + 'child view is fully opaque, although it can be made to work as a simple ' + 'background color change as well with the activeOpacity and ' + - 'underlayColor props.': string), + 'underlayColor props.') as string, render(): React.Node { return ; }, @@ -692,7 +692,7 @@ exports.examples = [ { title: 'TouchableNativeFeedback with Animated child', description: ('TouchableNativeFeedback can have an AnimatedComponent as a' + - 'direct child.': string), + 'direct child.') as string, platform: 'android', render(): React.Node { const mScale = new Animated.Value(1); @@ -746,7 +746,7 @@ exports.examples = [ title: 'Touchable feedback events', name: 'feedback-events', description: (' components accept onPress, onPressIn, ' + - 'onPressOut, and onLongPress as props.': string), + 'onPressOut, and onLongPress as props.') as string, render(): React.MixedElement { return ; }, @@ -755,7 +755,7 @@ exports.examples = [ title: 'Touchable delay for events', description: (' components also accept delayPressIn, ' + 'delayPressOut, and delayLongPress as props. These props impact the ' + - 'timing of feedback events.': string), + 'timing of feedback events.') as string, render(): React.MixedElement { return ; }, @@ -774,7 +774,7 @@ exports.examples = [ name: 'hit-slop', description: (' components accept hitSlop prop which extends the touch area ' + - 'without changing the view bounds.': string), + 'without changing the view bounds.') as string, render(): React.MixedElement { return ; }, @@ -782,7 +782,7 @@ exports.examples = [ { title: 'Touchable Native Methods', description: - ('Some components expose native methods like `measure`.': string), + 'Some components expose native methods like `measure`.' as string, render(): React.MixedElement { return ; }, @@ -790,7 +790,7 @@ exports.examples = [ { title: 'Custom Ripple Radius (Android-only)', description: - ('Ripple radius on TouchableNativeFeedback can be controlled': string), + 'Ripple radius on TouchableNativeFeedback can be controlled' as string, render(): React.MixedElement { return ; }, @@ -799,7 +799,7 @@ exports.examples = [ title: 'Disabled Touchable*', description: (' components accept disabled prop which prevents ' + - 'any interaction with component': string), + 'any interaction with component') as string, render(): React.MixedElement { return ; }, diff --git a/packages/@react-native/tester/js/examples/TurboModule/LegacyModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/LegacyModuleExample.js index 1bd83920c29..286eccb76c9 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/LegacyModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/LegacyModuleExample.js @@ -17,7 +17,7 @@ const { } = require('./SampleLegacyModuleExample'); const React = require('react'); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.title = 'Legacy Native Module'; exports.category = 'Basic'; exports.description = 'Usage of legacy Native Module'; diff --git a/packages/@react-native/tester/js/examples/TurboModule/TurboCxxModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/TurboCxxModuleExample.js index 65771081a17..439a3e07168 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/TurboCxxModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/TurboCxxModuleExample.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; const NativeCxxModuleExampleExample = require('./NativeCxxModuleExampleExample'); const React = require('react'); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.title = 'Cxx TurboModule'; exports.category = 'Basic'; exports.description = 'Usage of Cxx TurboModule'; diff --git a/packages/@react-native/tester/js/examples/TurboModule/TurboModuleExample.js b/packages/@react-native/tester/js/examples/TurboModule/TurboModuleExample.js index b3174fa7212..25236453d54 100644 --- a/packages/@react-native/tester/js/examples/TurboModule/TurboModuleExample.js +++ b/packages/@react-native/tester/js/examples/TurboModule/TurboModuleExample.js @@ -15,7 +15,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; const SampleTurboModuleExample = require('./SampleTurboModuleExample'); const React = require('react'); -exports.displayName = (undefined: ?string); +exports.displayName = undefined as ?string; exports.title = 'TurboModule'; exports.category = 'Basic'; exports.description = 'Usage of TurboModule'; diff --git a/packages/@react-native/tester/js/examples/Urls/UrlExample.js b/packages/@react-native/tester/js/examples/Urls/UrlExample.js index df6953718f7..ca850e77f35 100644 --- a/packages/@react-native/tester/js/examples/Urls/UrlExample.js +++ b/packages/@react-native/tester/js/examples/Urls/UrlExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {StyleSheet, View} from 'react-native'; type Props = { diff --git a/packages/@react-native/tester/js/examples/Vibration/VibrationExample.js b/packages/@react-native/tester/js/examples/Vibration/VibrationExample.js index 0592b4913b3..b5d7f286da1 100644 --- a/packages/@react-native/tester/js/examples/Vibration/VibrationExample.js +++ b/packages/@react-native/tester/js/examples/Vibration/VibrationExample.js @@ -13,7 +13,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { Platform, StyleSheet, diff --git a/packages/@react-native/tester/js/examples/View/ViewExample.js b/packages/@react-native/tester/js/examples/View/ViewExample.js index 773dda2440f..6069a64a955 100644 --- a/packages/@react-native/tester/js/examples/View/ViewExample.js +++ b/packages/@react-native/tester/js/examples/View/ViewExample.js @@ -768,12 +768,12 @@ function FocusBlurExample(): React.Node { ); } -export default ({ +export default { title: 'View', documentationURL: 'https://reactnative.dev/docs/view', category: 'Basic', description: ('Basic building block of all UI, examples that ' + - 'demonstrate some of the many styles available.': string), + 'demonstrate some of the many styles available.') as string, displayName: 'ViewExample', examples: [ { @@ -1438,4 +1438,4 @@ export default ({ render: FocusBlurExample, }, ], -}: RNTesterModule); +} as RNTesterModule; diff --git a/packages/@react-native/tester/js/examples/WebSocket/WebSocketExample.js b/packages/@react-native/tester/js/examples/WebSocket/WebSocketExample.js index 10bec024a59..58f568fa074 100644 --- a/packages/@react-native/tester/js/examples/WebSocket/WebSocketExample.js +++ b/packages/@react-native/tester/js/examples/WebSocket/WebSocketExample.js @@ -11,7 +11,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import { Image, PixelRatio, diff --git a/packages/@react-native/tester/js/examples/XHR/XHRExample.js b/packages/@react-native/tester/js/examples/XHR/XHRExample.js index 99a29291344..98b5a1ea6ee 100644 --- a/packages/@react-native/tester/js/examples/XHR/XHRExample.js +++ b/packages/@react-native/tester/js/examples/XHR/XHRExample.js @@ -24,7 +24,7 @@ exports.framework = 'React'; exports.title = 'XMLHttpRequest'; exports.category = 'Basic'; exports.description = ('Example that demonstrates upload and download ' + - 'requests using XMLHttpRequest.': string); + 'requests using XMLHttpRequest.') as string; exports.examples = [ { title: 'File Download', diff --git a/packages/@react-native/tester/js/examples/XHR/XHRExampleBinaryUpload.js b/packages/@react-native/tester/js/examples/XHR/XHRExampleBinaryUpload.js index 2d00402f38a..7e77617af61 100644 --- a/packages/@react-native/tester/js/examples/XHR/XHRExampleBinaryUpload.js +++ b/packages/@react-native/tester/js/examples/XHR/XHRExampleBinaryUpload.js @@ -12,7 +12,7 @@ import RNTesterText from '../../components/RNTesterText'; import RNTOption from '../../components/RNTOption'; -import React from 'react'; +import * as React from 'react'; import {Alert, StyleSheet, Text, TouchableHighlight, View} from 'react-native'; const BINARY_TYPES = { diff --git a/packages/@react-native/tester/js/examples/XHR/XHRExampleFetch.js b/packages/@react-native/tester/js/examples/XHR/XHRExampleFetch.js index 2fecacc9800..a5bfa047f1d 100644 --- a/packages/@react-native/tester/js/examples/XHR/XHRExampleFetch.js +++ b/packages/@react-native/tester/js/examples/XHR/XHRExampleFetch.js @@ -11,7 +11,7 @@ 'use strict'; import {RNTesterThemeContext} from '../../components/RNTesterTheme'; -import React from 'react'; +import * as React from 'react'; import { Button, Platform, diff --git a/packages/@react-native/tester/js/examples/XHR/XHRExampleHeaders.js b/packages/@react-native/tester/js/examples/XHR/XHRExampleHeaders.js index 20be94bc1e1..eaa431dfa19 100644 --- a/packages/@react-native/tester/js/examples/XHR/XHRExampleHeaders.js +++ b/packages/@react-native/tester/js/examples/XHR/XHRExampleHeaders.js @@ -11,7 +11,7 @@ 'use strict'; import RNTesterText from '../../components/RNTesterText'; -import React from 'react'; +import * as React from 'react'; import {StyleSheet, Text, TouchableHighlight, View} from 'react-native'; class XHRExampleHeaders extends React.Component { diff --git a/packages/@react-native/tester/js/utils/RNTesterList.android.js b/packages/@react-native/tester/js/utils/RNTesterList.android.js index be56f596a0d..468bdcfa0f3 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.android.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.android.js @@ -153,255 +153,257 @@ const Components: Array = [ ...RNTesterListFbInternal.Components, ]; -const APIs: Array = ([ - { - key: 'AccessibilityExample', - category: 'Basic', - module: require('../examples/Accessibility/AccessibilityExample'), - }, - { - key: 'AccessibilityAndroidExample', - category: 'Android', - module: require('../examples/Accessibility/AccessibilityAndroidExample'), - }, - { - key: 'AlertExample', - category: 'UI', - module: require('../examples/Alert/AlertExample').default, - }, - { - key: 'AnimatedIndex', - category: 'UI', - module: require('../examples/Animated/AnimatedIndex').default, - }, - { - key: 'AnimationBackendIndex', - category: 'UI', - module: require('../examples/AnimationBackend/AnimationBackendIndex') - .default, - }, - { - key: 'Animation - GratuitousAnimation', - category: 'UI', - module: require('../examples/AnimatedGratuitousApp/AnExApp'), - }, - { - key: 'AppearanceExample', - category: 'UI', - module: require('../examples/Appearance/AppearanceExample'), - }, - { - key: 'AppStateExample', - category: 'Basic', - module: require('../examples/AppState/AppStateExample'), - }, - { - key: 'ContentURLAndroid', - category: 'Android', - module: require('../examples/ContentURLAndroid/ContentURLAndroid'), - }, - { - key: 'URLExample', - category: 'Basic', - module: require('../examples/Urls/UrlExample'), - }, - { - key: 'BorderExample', - category: 'UI', - module: require('../examples/Border/BorderExample').default, - }, - { - key: 'CrashExample', - category: 'Basic', - module: require('../examples/Crash/CrashExample'), - }, - { - key: 'DevSettings', - category: 'Basic', - module: require('../examples/DevSettings/DevSettingsExample'), - }, - { - key: 'Dimensions', - category: 'UI', - module: require('../examples/Dimensions/DimensionsExample'), - }, - { - key: 'DisplayContentsExample', - category: 'UI', - module: require('../examples/DisplayContents/DisplayContentsExample') - .default, - }, - { - key: 'FocusEventsExample', - module: require('../examples/FocusEventsExample/FocusEventsExample') - .default, - }, - { - key: 'InvalidPropsExample', - module: require('../examples/InvalidProps/InvalidPropsExample'), - }, - { - key: 'Keyboard', - category: 'Basic', - module: require('../examples/Keyboard/KeyboardExample').default, - }, - { - key: 'LayoutEventsExample', - category: 'UI', - module: require('../examples/Layout/LayoutEventsExample'), - }, - { - key: 'LinkingExample', - category: 'Basic', - module: require('../examples/Linking/LinkingExample'), - }, - { - key: 'LayoutAnimationExample', - category: 'UI', - module: require('../examples/Layout/LayoutAnimationExample'), - }, - { - key: 'LayoutExample', - category: 'UI', - module: require('../examples/Layout/LayoutExample'), - }, - { - key: 'NativeAnimationsExample', - category: 'UI', - module: require('../examples/NativeAnimation/NativeAnimationsExample'), - }, - { - key: 'OrientationChangeExample', - category: 'UI', - module: require('../examples/OrientationChange/OrientationChangeExample'), - }, - { - key: 'PanResponderExample', - category: 'Basic', - module: require('../examples/PanResponder/PanResponderExample'), - }, - { - key: 'PixelRatio', - category: 'UI', - module: require('../examples/PixelRatio/PixelRatioExample'), - }, - { - key: 'PermissionsExampleAndroid', - category: 'Android', - module: require('../examples/PermissionsAndroid/PermissionsExample'), - }, - { - key: 'PlatformColorExample', - category: 'UI', - module: require('../examples/PlatformColor/PlatformColorExample'), - }, - { - key: 'PointerEventsExample', - category: 'Basic', - module: require('../examples/PointerEvents/PointerEventsExample'), - }, - { - key: 'RTLExample', - category: 'Basic', - module: require('../examples/RTL/RTLExample'), - }, - { - key: 'ShareExample', - category: 'Basic', - module: require('../examples/Share/ShareExample'), - }, - { - key: 'TimerExample', - category: 'UI', - module: require('../examples/Timer/TimerExample'), - }, - { - key: 'ToastAndroidExample', - category: 'Android', - module: require('../examples/ToastAndroid/ToastAndroidExample'), - }, - { - key: 'TransformExample', - category: 'UI', - module: require('../examples/Transform/TransformExample'), - }, - { - key: 'FilterExample', - category: 'UI', - module: require('../examples/Filter/FilterExample'), - }, - { - key: 'LinearGradientExample', - category: 'UI', - module: require('../examples/LinearGradient/LinearGradientExample'), - }, - { - key: 'RadialGradientExample', - category: 'UI', - module: require('../examples/RadialGradient/RadialGradientExample'), - }, - { - key: 'BackgroundImageExample', - category: 'UI', - module: require('../examples/BackgroundImage/BackgroundImageExample'), - }, - { - key: 'MixBlendModeExample', - category: 'UI', - module: require('../examples/MixBlendMode/MixBlendModeExample'), - }, - { - key: 'VibrationExample', - category: 'Basic', - module: require('../examples/Vibration/VibrationExample'), - }, - { - key: 'WebSocketExample', - category: 'Basic', - module: require('../examples/WebSocket/WebSocketExample'), - }, - { - key: 'XHRExample', - category: 'Basic', - module: require('../examples/XHR/XHRExample'), - }, - { - key: 'TurboModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboModuleExample'), - }, - { - key: 'LegacyModuleExample', - module: require('../examples/TurboModule/LegacyModuleExample'), - }, - { - key: 'TurboCxxModuleExample', - category: 'Basic', - module: require('../examples/TurboModule/TurboCxxModuleExample'), - }, - // Basic check to detect the availability of the IntersectionObserver API. - // $FlowExpectedError[cannot-resolve-name] - ...(typeof IntersectionObserver === 'function' - ? [ - { - key: 'IntersectionObserver', - category: 'UI', - module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), - }, - ] - : []), - // Basic check to detect the availability of the modern Performance API. - ...(typeof performance.getEntries === 'function' - ? [ - { - key: 'PerformanceApiExample', - category: 'Basic', - module: require('../examples/Performance/PerformanceApiExample'), - }, - ] - : []), - ...RNTesterListFbInternal.APIs, -]: Array).filter(Boolean); +const APIs: Array = ( + [ + { + key: 'AccessibilityExample', + category: 'Basic', + module: require('../examples/Accessibility/AccessibilityExample'), + }, + { + key: 'AccessibilityAndroidExample', + category: 'Android', + module: require('../examples/Accessibility/AccessibilityAndroidExample'), + }, + { + key: 'AlertExample', + category: 'UI', + module: require('../examples/Alert/AlertExample').default, + }, + { + key: 'AnimatedIndex', + category: 'UI', + module: require('../examples/Animated/AnimatedIndex').default, + }, + { + key: 'AnimationBackendIndex', + category: 'UI', + module: require('../examples/AnimationBackend/AnimationBackendIndex') + .default, + }, + { + key: 'Animation - GratuitousAnimation', + category: 'UI', + module: require('../examples/AnimatedGratuitousApp/AnExApp'), + }, + { + key: 'AppearanceExample', + category: 'UI', + module: require('../examples/Appearance/AppearanceExample'), + }, + { + key: 'AppStateExample', + category: 'Basic', + module: require('../examples/AppState/AppStateExample'), + }, + { + key: 'ContentURLAndroid', + category: 'Android', + module: require('../examples/ContentURLAndroid/ContentURLAndroid'), + }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, + { + key: 'BorderExample', + category: 'UI', + module: require('../examples/Border/BorderExample').default, + }, + { + key: 'CrashExample', + category: 'Basic', + module: require('../examples/Crash/CrashExample'), + }, + { + key: 'DevSettings', + category: 'Basic', + module: require('../examples/DevSettings/DevSettingsExample'), + }, + { + key: 'Dimensions', + category: 'UI', + module: require('../examples/Dimensions/DimensionsExample'), + }, + { + key: 'DisplayContentsExample', + category: 'UI', + module: require('../examples/DisplayContents/DisplayContentsExample') + .default, + }, + { + key: 'FocusEventsExample', + module: require('../examples/FocusEventsExample/FocusEventsExample') + .default, + }, + { + key: 'InvalidPropsExample', + module: require('../examples/InvalidProps/InvalidPropsExample'), + }, + { + key: 'Keyboard', + category: 'Basic', + module: require('../examples/Keyboard/KeyboardExample').default, + }, + { + key: 'LayoutEventsExample', + category: 'UI', + module: require('../examples/Layout/LayoutEventsExample'), + }, + { + key: 'LinkingExample', + category: 'Basic', + module: require('../examples/Linking/LinkingExample'), + }, + { + key: 'LayoutAnimationExample', + category: 'UI', + module: require('../examples/Layout/LayoutAnimationExample'), + }, + { + key: 'LayoutExample', + category: 'UI', + module: require('../examples/Layout/LayoutExample'), + }, + { + key: 'NativeAnimationsExample', + category: 'UI', + module: require('../examples/NativeAnimation/NativeAnimationsExample'), + }, + { + key: 'OrientationChangeExample', + category: 'UI', + module: require('../examples/OrientationChange/OrientationChangeExample'), + }, + { + key: 'PanResponderExample', + category: 'Basic', + module: require('../examples/PanResponder/PanResponderExample'), + }, + { + key: 'PixelRatio', + category: 'UI', + module: require('../examples/PixelRatio/PixelRatioExample'), + }, + { + key: 'PermissionsExampleAndroid', + category: 'Android', + module: require('../examples/PermissionsAndroid/PermissionsExample'), + }, + { + key: 'PlatformColorExample', + category: 'UI', + module: require('../examples/PlatformColor/PlatformColorExample'), + }, + { + key: 'PointerEventsExample', + category: 'Basic', + module: require('../examples/PointerEvents/PointerEventsExample'), + }, + { + key: 'RTLExample', + category: 'Basic', + module: require('../examples/RTL/RTLExample'), + }, + { + key: 'ShareExample', + category: 'Basic', + module: require('../examples/Share/ShareExample'), + }, + { + key: 'TimerExample', + category: 'UI', + module: require('../examples/Timer/TimerExample'), + }, + { + key: 'ToastAndroidExample', + category: 'Android', + module: require('../examples/ToastAndroid/ToastAndroidExample'), + }, + { + key: 'TransformExample', + category: 'UI', + module: require('../examples/Transform/TransformExample'), + }, + { + key: 'FilterExample', + category: 'UI', + module: require('../examples/Filter/FilterExample'), + }, + { + key: 'LinearGradientExample', + category: 'UI', + module: require('../examples/LinearGradient/LinearGradientExample'), + }, + { + key: 'RadialGradientExample', + category: 'UI', + module: require('../examples/RadialGradient/RadialGradientExample'), + }, + { + key: 'BackgroundImageExample', + category: 'UI', + module: require('../examples/BackgroundImage/BackgroundImageExample'), + }, + { + key: 'MixBlendModeExample', + category: 'UI', + module: require('../examples/MixBlendMode/MixBlendModeExample'), + }, + { + key: 'VibrationExample', + category: 'Basic', + module: require('../examples/Vibration/VibrationExample'), + }, + { + key: 'WebSocketExample', + category: 'Basic', + module: require('../examples/WebSocket/WebSocketExample'), + }, + { + key: 'XHRExample', + category: 'Basic', + module: require('../examples/XHR/XHRExample'), + }, + { + key: 'TurboModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboModuleExample'), + }, + { + key: 'LegacyModuleExample', + module: require('../examples/TurboModule/LegacyModuleExample'), + }, + { + key: 'TurboCxxModuleExample', + category: 'Basic', + module: require('../examples/TurboModule/TurboCxxModuleExample'), + }, + // Basic check to detect the availability of the IntersectionObserver API. + // $FlowExpectedError[cannot-resolve-name] + ...(typeof IntersectionObserver === 'function' + ? [ + { + key: 'IntersectionObserver', + category: 'UI', + module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), + }, + ] + : []), + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), + ...RNTesterListFbInternal.APIs, + ] as Array +).filter(Boolean); const Playgrounds: Array = [ { diff --git a/packages/@react-native/tester/js/utils/RNTesterList.ios.js b/packages/@react-native/tester/js/utils/RNTesterList.ios.js index afe569acd4f..18fdc72e7df 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.ios.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.ios.js @@ -156,220 +156,222 @@ const Components: Array = [ ...RNTesterListFbInternal.Components, ]; -const APIs: Array = ([ - { - key: 'AccessibilityExample', - module: require('../examples/Accessibility/AccessibilityExample'), - }, - { - key: 'AccessibilityIOSExample', - module: require('../examples/Accessibility/AccessibilityIOSExample'), - category: 'iOS', - }, - { - key: 'ActionSheetIOSExample', - module: require('../examples/ActionSheetIOS/ActionSheetIOSExample'), - category: 'iOS', - }, - { - key: 'AlertExample', - module: require('../examples/Alert/AlertExample').default, - category: 'UI', - }, - { - key: 'AnimatedIndex', - module: require('../examples/Animated/AnimatedIndex').default, - }, - { - key: 'AnimationBackendIndex', - module: require('../examples/AnimationBackend/AnimationBackendIndex') - .default, - }, - { - key: 'AnExApp', - module: require('../examples/AnimatedGratuitousApp/AnExApp'), - }, - { - key: 'AppearanceExample', - module: require('../examples/Appearance/AppearanceExample'), - }, - { - key: 'AppStateExample', - module: require('../examples/AppState/AppStateExample'), - }, - { - key: 'URLExample', - category: 'Basic', - module: require('../examples/Urls/UrlExample'), - }, - { - key: 'BorderExample', - module: require('../examples/Border/BorderExample').default, - }, - { - key: 'BoxShadowExample', - module: require('../examples/BoxShadow/BoxShadowExample'), - }, - { - key: 'CrashExample', - module: require('../examples/Crash/CrashExample'), - }, - { - key: 'CursorExample', - module: require('../examples/Cursor/CursorExample'), - }, - { - key: 'DevSettings', - module: require('../examples/DevSettings/DevSettingsExample'), - }, - { - key: 'Dimensions', - module: require('../examples/Dimensions/DimensionsExample'), - }, - { - key: 'DisplayContentsExample', - category: 'UI', - module: require('../examples/DisplayContents/DisplayContentsExample') - .default, - }, - { - key: 'InvalidPropsExample', - module: require('../examples/InvalidProps/InvalidPropsExample'), - }, - { - key: 'Keyboard', - module: require('../examples/Keyboard/KeyboardExample').default, - }, - { - key: 'LayoutAnimationExample', - module: require('../examples/Layout/LayoutAnimationExample'), - }, - { - key: 'LayoutExample', - module: require('../examples/Layout/LayoutExample'), - }, - { - key: 'LinkingExample', - module: require('../examples/Linking/LinkingExample'), - }, - { - key: 'NativeAnimationsExample', - module: require('../examples/NativeAnimation/NativeAnimationsExample'), - }, - { - key: 'OrientationChangeExample', - module: require('../examples/OrientationChange/OrientationChangeExample'), - }, - { - key: 'PanResponderExample', - module: require('../examples/PanResponder/PanResponderExample'), - }, - { - key: 'PlatformColorExample', - module: require('../examples/PlatformColor/PlatformColorExample'), - }, - { - key: 'PixelRatio', - module: require('../examples/PixelRatio/PixelRatioExample'), - }, - { - key: 'PointerEventsExample', - module: require('../examples/PointerEvents/PointerEventsExample'), - }, - { - key: 'RCTRootViewIOSExample', - module: require('../examples/RCTRootView/RCTRootViewIOSExample'), - }, - { - key: 'RTLExample', - module: require('../examples/RTL/RTLExample'), - }, - { - key: 'ShareExample', - module: require('../examples/Share/ShareExample'), - }, - { - key: 'SnapshotExample', - module: require('../examples/Snapshot/SnapshotExample'), - }, - { - key: 'TimerExample', - module: require('../examples/Timer/TimerExample'), - }, - { - key: 'TransformExample', - module: require('../examples/Transform/TransformExample'), - }, - { - key: 'FilterExample', - module: require('../examples/Filter/FilterExample'), - }, - { - key: 'LinearGradientExample', - category: 'UI', - module: require('../examples/LinearGradient/LinearGradientExample'), - }, - { - key: 'RadialGradientExample', - category: 'UI', - module: require('../examples/RadialGradient/RadialGradientExample'), - }, - { - key: 'BackgroundImageExample', - category: 'UI', - module: require('../examples/BackgroundImage/BackgroundImageExample'), - }, - { - key: 'MixBlendModeExample', - module: require('../examples/MixBlendMode/MixBlendModeExample'), - }, - { - key: 'TurboModuleExample', - module: require('../examples/TurboModule/TurboModuleExample'), - }, - { - key: 'LegacyModuleExample', - module: require('../examples/TurboModule/LegacyModuleExample'), - }, - { - key: 'TurboCxxModuleExample', - module: require('../examples/TurboModule/TurboCxxModuleExample'), - }, - { - key: 'VibrationExample', - module: require('../examples/Vibration/VibrationExample'), - }, - { - key: 'WebSocketExample', - module: require('../examples/WebSocket/WebSocketExample'), - }, - { - key: 'XHRExample', - module: require('../examples/XHR/XHRExample'), - }, - // Basic check to detect the availability of the IntersectionObserver API. - // $FlowExpectedError[cannot-resolve-name] - ...(typeof IntersectionObserver === 'function' - ? [ - { - key: 'IntersectionObserver', - category: 'UI', - module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), - }, - ] - : []), - // Basic check to detect the availability of the modern Performance API. - ...(typeof performance.getEntries === 'function' - ? [ - { - key: 'PerformanceApiExample', - category: 'Basic', - module: require('../examples/Performance/PerformanceApiExample'), - }, - ] - : []), - ...RNTesterListFbInternal.APIs, -]: Array).filter(Boolean); +const APIs: Array = ( + [ + { + key: 'AccessibilityExample', + module: require('../examples/Accessibility/AccessibilityExample'), + }, + { + key: 'AccessibilityIOSExample', + module: require('../examples/Accessibility/AccessibilityIOSExample'), + category: 'iOS', + }, + { + key: 'ActionSheetIOSExample', + module: require('../examples/ActionSheetIOS/ActionSheetIOSExample'), + category: 'iOS', + }, + { + key: 'AlertExample', + module: require('../examples/Alert/AlertExample').default, + category: 'UI', + }, + { + key: 'AnimatedIndex', + module: require('../examples/Animated/AnimatedIndex').default, + }, + { + key: 'AnimationBackendIndex', + module: require('../examples/AnimationBackend/AnimationBackendIndex') + .default, + }, + { + key: 'AnExApp', + module: require('../examples/AnimatedGratuitousApp/AnExApp'), + }, + { + key: 'AppearanceExample', + module: require('../examples/Appearance/AppearanceExample'), + }, + { + key: 'AppStateExample', + module: require('../examples/AppState/AppStateExample'), + }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, + { + key: 'BorderExample', + module: require('../examples/Border/BorderExample').default, + }, + { + key: 'BoxShadowExample', + module: require('../examples/BoxShadow/BoxShadowExample'), + }, + { + key: 'CrashExample', + module: require('../examples/Crash/CrashExample'), + }, + { + key: 'CursorExample', + module: require('../examples/Cursor/CursorExample'), + }, + { + key: 'DevSettings', + module: require('../examples/DevSettings/DevSettingsExample'), + }, + { + key: 'Dimensions', + module: require('../examples/Dimensions/DimensionsExample'), + }, + { + key: 'DisplayContentsExample', + category: 'UI', + module: require('../examples/DisplayContents/DisplayContentsExample') + .default, + }, + { + key: 'InvalidPropsExample', + module: require('../examples/InvalidProps/InvalidPropsExample'), + }, + { + key: 'Keyboard', + module: require('../examples/Keyboard/KeyboardExample').default, + }, + { + key: 'LayoutAnimationExample', + module: require('../examples/Layout/LayoutAnimationExample'), + }, + { + key: 'LayoutExample', + module: require('../examples/Layout/LayoutExample'), + }, + { + key: 'LinkingExample', + module: require('../examples/Linking/LinkingExample'), + }, + { + key: 'NativeAnimationsExample', + module: require('../examples/NativeAnimation/NativeAnimationsExample'), + }, + { + key: 'OrientationChangeExample', + module: require('../examples/OrientationChange/OrientationChangeExample'), + }, + { + key: 'PanResponderExample', + module: require('../examples/PanResponder/PanResponderExample'), + }, + { + key: 'PlatformColorExample', + module: require('../examples/PlatformColor/PlatformColorExample'), + }, + { + key: 'PixelRatio', + module: require('../examples/PixelRatio/PixelRatioExample'), + }, + { + key: 'PointerEventsExample', + module: require('../examples/PointerEvents/PointerEventsExample'), + }, + { + key: 'RCTRootViewIOSExample', + module: require('../examples/RCTRootView/RCTRootViewIOSExample'), + }, + { + key: 'RTLExample', + module: require('../examples/RTL/RTLExample'), + }, + { + key: 'ShareExample', + module: require('../examples/Share/ShareExample'), + }, + { + key: 'SnapshotExample', + module: require('../examples/Snapshot/SnapshotExample'), + }, + { + key: 'TimerExample', + module: require('../examples/Timer/TimerExample'), + }, + { + key: 'TransformExample', + module: require('../examples/Transform/TransformExample'), + }, + { + key: 'FilterExample', + module: require('../examples/Filter/FilterExample'), + }, + { + key: 'LinearGradientExample', + category: 'UI', + module: require('../examples/LinearGradient/LinearGradientExample'), + }, + { + key: 'RadialGradientExample', + category: 'UI', + module: require('../examples/RadialGradient/RadialGradientExample'), + }, + { + key: 'BackgroundImageExample', + category: 'UI', + module: require('../examples/BackgroundImage/BackgroundImageExample'), + }, + { + key: 'MixBlendModeExample', + module: require('../examples/MixBlendMode/MixBlendModeExample'), + }, + { + key: 'TurboModuleExample', + module: require('../examples/TurboModule/TurboModuleExample'), + }, + { + key: 'LegacyModuleExample', + module: require('../examples/TurboModule/LegacyModuleExample'), + }, + { + key: 'TurboCxxModuleExample', + module: require('../examples/TurboModule/TurboCxxModuleExample'), + }, + { + key: 'VibrationExample', + module: require('../examples/Vibration/VibrationExample'), + }, + { + key: 'WebSocketExample', + module: require('../examples/WebSocket/WebSocketExample'), + }, + { + key: 'XHRExample', + module: require('../examples/XHR/XHRExample'), + }, + // Basic check to detect the availability of the IntersectionObserver API. + // $FlowExpectedError[cannot-resolve-name] + ...(typeof IntersectionObserver === 'function' + ? [ + { + key: 'IntersectionObserver', + category: 'UI', + module: require('../examples/IntersectionObserver/IntersectionObserverIndex'), + }, + ] + : []), + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), + ...RNTesterListFbInternal.APIs, + ] as Array +).filter(Boolean); const Playgrounds: Array = [ { diff --git a/packages/@react-native/tester/overrides.json b/packages/@react-native/tester/overrides.json index 37d1ed80ece..77cfdfc3d67 100644 --- a/packages/@react-native/tester/overrides.json +++ b/packages/@react-native/tester/overrides.json @@ -1,5 +1,5 @@ { - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "copy", @@ -12,14 +12,14 @@ "type": "copy", "directory": "js/components", "baseDirectory": "packages/rn-tester/js/components", - "baseHash": "7146ccc87cc1717af98926b22b98abb9e6d6fad0", + "baseHash": "756e78210cc50ba52f33cce5f7deedcea914b079", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Accessibility", "baseDirectory": "packages/rn-tester/js/examples/Accessibility", - "baseHash": "326d4bb307def47ef3c069701f08af3687dfda4f", + "baseHash": "244ad98a0dea5d5403df6087eac0e99599099137", "issue": 4054 }, { @@ -33,56 +33,56 @@ "type": "copy", "directory": "js/examples/ActivityIndicator", "baseDirectory": "packages/rn-tester/js/examples/ActivityIndicator", - "baseHash": "f19362fda8ad04c20a68d26175431cb4839100fc", + "baseHash": "98a9dcad9301971bb9072a6b450b4db8ef9dab9b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Alert", "baseDirectory": "packages/rn-tester/js/examples/Alert", - "baseHash": "58721c030519e482397c158130f5ff6dea2bfdeb", + "baseHash": "00c0bbc4e71dba60763e213265205d0a420d30fa", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Animated", "baseDirectory": "packages/rn-tester/js/examples/Animated", - "baseHash": "acc7a874b67503484a247ebf8f0a1fc738e420f7", + "baseHash": "d54ce6d708c3298ad52f443293f6751021923088", "issue": 4054 }, { "type": "copy", "file": "js/examples/AnimatedGratuitousApp/AnExApp.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExApp.js", - "baseHash": "db6e5dacd001cac2ffeb16c664cc82a884f2b9e4", + "baseHash": "9da0aa5cc546cea9f8c81b8fb9d2f1feb6ef5185", "issue": 4054 }, { "type": "patch", "file": "js/examples/AnimatedGratuitousApp/AnExBobble.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExBobble.js", - "baseHash": "c56116d9b9e840a48a3e51838fb7a89e5b416385", + "baseHash": "ba8f8d4b477b18b9c44981c8829da5543c1f04dd", "issue": 4054 }, { "type": "copy", "file": "js/examples/AnimatedGratuitousApp/AnExChained.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExChained.js", - "baseHash": "37784524fde1bcdf5c428862fe082a0ca17199dd", + "baseHash": "85aea91821f1217ed5e00fa3b55e9c72a2b43652", "issue": 4054 }, { "type": "patch", "file": "js/examples/AnimatedGratuitousApp/AnExScroll.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExScroll.js", - "baseHash": "22edd2ff2d9f8af8a0c5c27cf7d62ad29b7e9f41", + "baseHash": "7ce4cb1525bdb47a2c7625ca0dfa4f223e70e6f2", "issue": 4054 }, { "type": "copy", "file": "js/examples/AnimatedGratuitousApp/AnExSet.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExSet.js", - "baseHash": "57a7fb533cd0ec058072828ff392c108e434f1ea", + "baseHash": "8d68b27d0b01d7f710a4fc85b4185defbb8ff5e1", "issue": 4054 }, { @@ -96,14 +96,14 @@ "type": "copy", "file": "js/examples/AnimatedGratuitousApp/AnExTilt.js", "baseFile": "packages/rn-tester/js/examples/AnimatedGratuitousApp/AnExTilt.js", - "baseHash": "3f96bf66e0fcdfebcc8f23041753b2a5804fb8be", + "baseHash": "588f5cbd65e852b473f7afd5ff3ab97c0133535b", "issue": 4054 }, { "type": "copy", "directory": "js/examples/AnimationBackend", "baseDirectory": "packages/rn-tester/js/examples/AnimationBackend", - "baseHash": "737428f9c93dd9b72b6433206c0a4860a50adaa3", + "baseHash": "9e29a49d159864f092c7c6f4ad0bbe40bfae45e0", "issue": 4054 }, { @@ -117,14 +117,14 @@ "type": "copy", "directory": "js/examples/AppState", "baseDirectory": "packages/rn-tester/js/examples/AppState", - "baseHash": "e207d452ff10e06bdd47b18767ce0f1dcdad5c48", + "baseHash": "1aa91ec0fb5f13a0cb877eeeed8d25204d0b692f", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Border", "baseDirectory": "packages/rn-tester/js/examples/Border", - "baseHash": "6c59e59ca987d4783d4369661cd766cc876ec3de", + "baseHash": "6621e8802f8c95d0aaeae395d4dac6dbf30af5b0", "issue": 4054 }, { @@ -138,21 +138,21 @@ "type": "copy", "directory": "js/examples/Button", "baseDirectory": "packages/rn-tester/js/examples/Button", - "baseHash": "9710f5f16c70537ae4616dc88d1aed3c4eb02a22", + "baseHash": "9159186b58ae394bc7f785f36f383eccdd1d2836", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ContentURLAndroid", "baseDirectory": "packages/rn-tester/js/examples/ContentURLAndroid", - "baseHash": "0f61e3c10482cf7847be84e53e5a2aedd89e12e2", + "baseHash": "ebbb46b7b1f9aea4226b7d7182ea9510ec3230bb", "issue": 14844 }, { "type": "copy", "directory": "js/examples/Crash", "baseDirectory": "packages/rn-tester/js/examples/Crash", - "baseHash": "d7c6e62e585ac7262e64400e98b1f488b7b5ae5e", + "baseHash": "88616eebb8c88c3a4b2ca4959560125724f8bf0d", "issue": 4054 }, { @@ -173,42 +173,42 @@ "type": "copy", "directory": "js/examples/Dimensions", "baseDirectory": "packages/rn-tester/js/examples/Dimensions", - "baseHash": "dd72316571c8d3cb1d099b193570b929dbe3aee8", + "baseHash": "db792e2b12176f9a6bd7b6cc5db9558c0c7c579f", "issue": 4054 }, { "type": "copy", "directory": "js/examples/DisplayContents", "baseDirectory": "packages/rn-tester/js/examples/DisplayContents", - "baseHash": "14cc40ae27fc9f0dab86f5eca4534c7d0d247d4c", + "baseHash": "11359d7ab0d93c7be1808c88d52cab856d1a8744", "issue": 4054 }, { "type": "copy", "directory": "js/examples/DrawerLayoutAndroid", "baseDirectory": "packages/rn-tester/js/examples/DrawerLayoutAndroid", - "baseHash": "e7b75e74ce128d84347963ab910239d585f1e4ea", + "baseHash": "cd0db9932f2d65f4d36bb562a68e194ec19c04c9", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Experimental", "baseDirectory": "packages/rn-tester/js/examples/Experimental", - "baseHash": "15c7341691cb52e024593aaa90f4c26c5faad7a9", + "baseHash": "3ed460d67f58b41fe39b8ad2cffee909f22b5d04", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Filter", "baseDirectory": "packages/rn-tester/js/examples/Filter", - "baseHash": "864458397da5ce603b97c5d6dbd65abf2733ce63", + "baseHash": "6d8fecd638721478c410a337799ce7f3e179c72f", "issue": 4054 }, { "type": "copy", "directory": "js/examples/FlatList", "baseDirectory": "packages/rn-tester/js/examples/FlatList", - "baseHash": "752e08cf741859bbb8dedd2167c5ea33879d6df4", + "baseHash": "c3b1f8d752427863404d1822ebfe71c9b588dc3c", "issue": 4054 }, { @@ -222,7 +222,7 @@ "type": "derived", "file": "js/examples/Image/ImageExample.js", "baseFile": "packages/rn-tester/js/examples/Image/ImageExample.js", - "baseHash": "885ebdd53ac7f33e1fd4d81b4d41de15e530ebe9", + "baseHash": "f69e611d660df1bb767d61e1c0fe5b5c2fae378a", "issue": 4054 }, { @@ -292,14 +292,14 @@ "type": "copy", "directory": "js/examples/InvalidProps", "baseDirectory": "packages/rn-tester/js/examples/InvalidProps", - "baseHash": "848cebed1d4f9f51217033fea4297ea9d0775f17", + "baseHash": "30085d94aba3dca12945460b6e53ac8dd1a82936", "issue": 4054 }, { "type": "copy", "directory": "js/examples/JSResponderHandlerExample", "baseDirectory": "packages/rn-tester/js/examples/JSResponderHandlerExample", - "baseHash": "94091a151a359db592357af0c7a9c3eb217df518", + "baseHash": "d6a947dbb040a556bdb5804fd7b2fd4753a927f0", "issue": 4054 }, { @@ -313,63 +313,63 @@ "type": "copy", "directory": "js/examples/KeyboardAvoidingView", "baseDirectory": "packages/rn-tester/js/examples/KeyboardAvoidingView", - "baseHash": "fe61b4f3bedda50f12e876afb55ebceba6127a8b", + "baseHash": "5dab1ccc11c3a00a035883d3747b43c9af54f32e", "issue": 4054 }, { "type": "copy", "file": "js/examples/Layout/LayoutAnimationExample.js", "baseFile": "packages/rn-tester/js/examples/Layout/LayoutAnimationExample.js", - "baseHash": "8210e366376f81b41e01768b79a693ef4134cf9e", + "baseHash": "fb0ee37b1ccf6729394754bcd7ad0d2b12012510", "issue": 4054 }, { "type": "derived", "file": "js/examples/Layout/LayoutEventsExample.js", "baseFile": "packages/rn-tester/js/examples/Layout/LayoutEventsExample.js", - "baseHash": "64af33fbeedf54b4a29497169d8df0e6a65bbc71", + "baseHash": "fe5a8faf66da0ef239702e6b80c08e6a7a1ee020", "issue": 4054 }, { "type": "copy", "file": "js/examples/Layout/LayoutExample.js", "baseFile": "packages/rn-tester/js/examples/Layout/LayoutExample.js", - "baseHash": "bf0579020e975ba35a45533efc085f4f5656979e", + "baseHash": "7f686e955889c96d2e26ee2da2e98a490cf613c6", "issue": 4054 }, { "type": "copy", "directory": "js/examples/LinearGradient", "baseDirectory": "packages/rn-tester/js/examples/LinearGradient/", - "baseHash": "c85b9f893158fb2dd7fd279ab57072bd2f65b203", + "baseHash": "61e25affe2ae877267eaaa8f3d61ca6bdbfaef06", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Linking", "baseDirectory": "packages/rn-tester/js/examples/Linking", - "baseHash": "23ce2a432b4006fb1f38348434bb5619b7ddc8af", + "baseHash": "9e19660db026759dad9ec52e5adba3fe054f84fd", "issue": 4054 }, { "type": "copy", "directory": "js/examples/MixBlendMode", "baseDirectory": "packages/rn-tester/js/examples/MixBlendMode", - "baseHash": "6fd7d20b75346531b5a9788f3c042edbe3bb2d6a", + "baseHash": "24d87fc07d1c10ee3f8f5b58999031bdcf31cdbc", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Modal", "baseDirectory": "packages/rn-tester/js/examples/Modal", - "baseHash": "1c4554cdbbedb4e005111d30027bf6151e13b790", + "baseHash": "5f2f07c8c460c4242b0e71988dc872450e2aa87a", "issue": 4054 }, { "type": "copy", "directory": "js/examples/NativeAnimation", "baseDirectory": "packages/rn-tester/js/examples/NativeAnimation", - "baseHash": "119f131f626c4baa10d4d28bc2ac4f0686d602ee", + "baseHash": "969c8e3dbb38df4e0ade137ff1692f815a7df434", "issue": 4054 }, { @@ -390,7 +390,7 @@ "type": "copy", "directory": "js/examples/OrientationChange", "baseDirectory": "packages/rn-tester/js/examples/OrientationChange", - "baseHash": "d0ecbb6e4bbbad8b41cfd3f9fecd738ba3571f4d", + "baseHash": "48b207d6c0e20a009f8ab3309368454573322f49", "issue": 4054 }, { @@ -404,13 +404,13 @@ "type": "copy", "directory": "js/examples/Performance", "baseDirectory": "packages/rn-tester/js/examples/Performance", - "baseHash": "9fd5ab235654a781d25dff55cd28366db9132053" + "baseHash": "c7ec5b78d729322113953c2ac62d410a21b6091c" }, { "type": "copy", "directory": "js/examples/PermissionsAndroid", "baseDirectory": "packages/rn-tester/js/examples/PermissionsAndroid", - "baseHash": "e7525727686b5bf71634f85afe1bb538941aac77", + "baseHash": "2469ee08f4c8ef7932e83f3edb8e8787b1566deb", "issue": 4054 }, { @@ -424,21 +424,21 @@ "type": "copy", "directory": "js/examples/PlatformColor", "baseDirectory": "packages/rn-tester/js/examples/PlatformColor", - "baseHash": "94d9ff91ec6223e9d3403b6ee5bf6b3c4022fa25", + "baseHash": "c8530d3f56a63021a2528e7ba0883e640df409d3", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Playground", "baseDirectory": "packages/rn-tester/js/examples/Playground", - "baseHash": "ff9da49530b63c580c532e403dbdd7ff8050ea4c", + "baseHash": "84f642513358043fc3d5ee28460e083fa1367799", "issue": 4054 }, { "type": "copy", "directory": "js/examples/PointerEvents", "baseDirectory": "packages/rn-tester/js/examples/PointerEvents", - "baseHash": "3ee6129b85450e35442fa4ebadf15ed419390663", + "baseHash": "38c070c8f15bedbaaec702daeb94d702837448d9", "issue": 4054 }, { @@ -452,7 +452,7 @@ "type": "derived", "file": "js/examples/Pressable/PressableExample.js", "baseFile": "packages/rn-tester/js/examples/Pressable/PressableExample.js", - "baseHash": "e80fa7c12100c3744d39be075d3a09d5ac2466af", + "baseHash": "a88dce30ae4ba4b334b903b2f85663a054b3603c", "issue": 4054 }, { @@ -473,7 +473,7 @@ "type": "copy", "directory": "js/examples/RefreshControl", "baseDirectory": "packages/rn-tester/js/examples/RefreshControl", - "baseHash": "781e6c4fbdc1fe5f618476c1cb16cc411cdca786", + "baseHash": "867ebba2e546db8881ab0507ee5e541dfd50c8c5", "issue": 4054 }, { @@ -487,14 +487,14 @@ "type": "copy", "directory": "js/examples/RTL", "baseDirectory": "packages/rn-tester/js/examples/RTL", - "baseHash": "5a7547ab97eed836f60f1b39620079041de23f25", + "baseHash": "4a62ede06cf1e2e4d80ba535a113dee4cb2d0a66", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SafeAreaView", "baseDirectory": "packages/rn-tester/js/examples/SafeAreaView", - "baseHash": "44ed255c71e6101f2f046b5749060cc1b469d590", + "baseHash": "87bb2fccdbfcfd80c5a41136addf93295f7d81a8", "issue": 4054 }, { @@ -508,7 +508,7 @@ "type": "copy", "directory": "js/examples/SectionList", "baseDirectory": "packages/rn-tester/js/examples/SectionList", - "baseHash": "fde4e3ff07f704344589cbd3b3c476fb3f361061", + "baseHash": "f64b963a1d55db4441d027fe0bc51c5feebe0437", "issue": 4054 }, { @@ -522,7 +522,7 @@ "type": "copy", "directory": "js/examples/Share", "baseDirectory": "packages/rn-tester/js/examples/Share", - "baseHash": "040ca0acbf3e8b82f25a82d77e30ee99721c2cca", + "baseHash": "3424cb0f451d1c2c0b9f77763c053fb696605303", "issue": 4054 }, { @@ -536,49 +536,49 @@ "type": "copy", "directory": "js/examples/StatusBar", "baseDirectory": "packages/rn-tester/js/examples/StatusBar", - "baseHash": "0f9966b903371a024de277e6587fe8a86c96b006", + "baseHash": "2e8d155724d9d3f2fb8664b2b2bedcd02fb3725c", "issue": 4054 }, { "type": "copy", "directory": "js/examples/SwipeableCardExample", "baseDirectory": "packages/rn-tester/js/examples/SwipeableCardExample", - "baseHash": "2dca5546c5218ea020d362764a61e3b53f038574", + "baseHash": "5d45a751f072113ccfdda0ebcc144469b8638d09", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Switch", "baseDirectory": "packages/rn-tester/js/examples/Switch", - "baseHash": "e24be9c84a6f7d78b39c73e60eda0db724001a4a", + "baseHash": "f96551245f06500e689ef20bb25be8134f04a014", "issue": 4054 }, { "type": "copy", "directory": "js/examples/Text", "baseDirectory": "packages/rn-tester/js/examples/Text", - "baseHash": "9ed7ac5f4d6291e6d083aca513b204924b795a27", + "baseHash": "fdd48aba5b6427ee63198221830678a7b6cf4ebb", "issue": 4054 }, { "type": "copy", "file": "js/examples/TextInput/ExampleTextInput.js", "baseFile": "packages/rn-tester/js/examples/TextInput/ExampleTextInput.js", - "baseHash": "7e15e918ad54e3b40aee926f1414ff7b12f2c383", + "baseHash": "1f448f83e38bc8edae2dcbe60b8a6f2483131302", "issue": 14292 }, { "type": "copy", "file": "js/examples/TextInput/TextInputExample.android.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.android.js", - "baseHash": "b6ab9814dd71d6411856a445839a07c3c34e369d", + "baseHash": "3cc8ea65c4cd7b5fb2c0c96a1352ea2dab43b732", "issue": 14292 }, { "type": "copy", "file": "js/examples/TextInput/TextInputExample.ios.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputExample.ios.js", - "baseHash": "4ef1c58c8f62e6d5faf4b9c06e6d6bcae835afa7", + "baseHash": "b1b512b5f81dedf582a289e7c6a2716874bbdff5", "issue": 14292 }, { @@ -592,35 +592,35 @@ "type": "copy", "file": "js/examples/TextInput/TextInputKeyProp.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputKeyProp.js", - "baseHash": "27f94be6a2fa8acf7f47835220e638a7c5bea7de", + "baseHash": "9c7dfd948988a62484bcf568f76bdeaa78e03ebc", "issue": 14292 }, { "type": "copy", "file": "js/examples/TextInput/TextInputSharedExamples.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js", - "baseHash": "cbe35008a352f65e23beddcaebc319147dc6b6fc", + "baseHash": "0fccb8d05c8c1963022a5b1e05598543639cd1cd", "issue": 14291 }, { "type": "copy", "directory": "js/examples/Timer", "baseDirectory": "packages/rn-tester/js/examples/Timer", - "baseHash": "40a4df473e104257cb71e8770af4c2be2bbbc7df", + "baseHash": "7004e1952b2e6027abb37ec32a685ffaf1140488", "issue": 4054 }, { "type": "copy", "directory": "js/examples/ToastAndroid", "baseDirectory": "packages/rn-tester/js/examples/ToastAndroid", - "baseHash": "f9be84cfa0da537f5e7963bde61ce206b9b2b63c", + "baseHash": "ff2fd2e10741da62ccd9c78721353c66f5004b2d", "issue": 4054 }, { "type": "derived", "file": "js/examples/Touchable/TouchableExample.js", "baseFile": "packages/rn-tester/js/examples/Touchable/TouchableExample.js", - "baseHash": "d56cdb355fd6edfcec3ce22eef7ef50223f709ff", + "baseHash": "fe9d2a6d6340dd18639b97a46b3757d71fc52ffe", "issue": 4054 }, { @@ -641,41 +641,41 @@ "type": "copy", "directory": "js/examples/TurboModule", "baseDirectory": "packages/rn-tester/js/examples/TurboModule", - "baseHash": "6a8c781e0f1e9fde942c62edb6698b493ad04cb6", + "baseHash": "efc05879738a3ad59a96487c2aa3005951ac72d4", "issue": 4054 }, { "type": "copy", "file": "js/examples/Urls/UrlExample.js", "baseFile": "packages/rn-tester/js/examples/Urls/UrlExample.js", - "baseHash": "da210c7b8e59587c58acde5c9f68181ad51bdb1e" + "baseHash": "1e61cd38b3e4d6f317532ce914a4276399bae0be" }, { "type": "copy", "directory": "js/examples/Vibration", "baseDirectory": "packages/rn-tester/js/examples/Vibration", - "baseHash": "e92a8f36178e17ed3ff691b8965a7cdb6346a544", + "baseHash": "b7bf82b3a55cb89676f880c3efe2639b195bbab4", "issue": 4054 }, { "type": "copy", "directory": "js/examples/View", "baseDirectory": "packages/rn-tester/js/examples/View", - "baseHash": "58d50e241a3be5abea4332e0d3a586b97cd88592", + "baseHash": "ae969e916630051e6abbd23316f8d34390c60f65", "issue": 4054 }, { "type": "copy", "directory": "js/examples/WebSocket", "baseDirectory": "packages/rn-tester/js/examples/WebSocket", - "baseHash": "8b3db0dcd61cebcb6d3ec855741309c2952cd592", + "baseHash": "5db86d28a9a57665a2699531e60498474b3c84cd", "issue": 4054 }, { "type": "copy", "directory": "js/examples/XHR", "baseDirectory": "packages/rn-tester/js/examples/XHR", - "baseHash": "3bc3448654df72f5813b2d256210cb00f1a0ce8f", + "baseHash": "a3cff32fc4c747e67e18220e5c109d6c85c5ba72", "issue": 4054 }, { @@ -689,7 +689,7 @@ "type": "copy", "file": "js/RNTesterApp.ios.js", "baseFile": "packages/rn-tester/js/RNTesterApp.ios.js", - "baseHash": "cde4e2f48f0e8d12f42f75bf56ae09265e17a984", + "baseHash": "33d6f18302490edca4315d28150519229f6a8204", "issue": 4054 }, { @@ -717,14 +717,14 @@ "type": "copy", "file": "js/utils/RNTesterList.android.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "6c9c1b36ee77323fa1b76235eaab9907ee7c733c", + "baseHash": "31a3c185ebce41969fc8af059b997a3c8442617c", "issue": 13228 }, { "type": "copy", "file": "js/utils/RNTesterList.ios.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.ios.js", - "baseHash": "d8d86ed8234063e23237786213ccd00cfda1e2dc", + "baseHash": "1a0053cf4822ffb96bec7f0674ee0323693a03ec", "issue": 13228 }, { @@ -773,14 +773,14 @@ "type": "copy", "file": "NativeComponentExample/js/MyNativeViewNativeComponent.js", "baseFile": "packages/rn-tester/NativeComponentExample/js/MyNativeViewNativeComponent.js", - "baseHash": "7c811f32320d228eff8cabdd76fa8c07484ab3d9", + "baseHash": "b5f9e271ec21857cb6a6b07f9df412561cca2561", "issue": 4054 }, { "type": "copy", "file": "NativeCxxModuleExample/NativeCxxModuleExample.js", "baseFile": "packages/rn-tester/NativeCxxModuleExample/NativeCxxModuleExample.js", - "baseHash": "8b4856759b92abaa3793aa58679507c2827c343c", + "baseHash": "fc6b78efdd2f5a316d4d4a8b1b59181ef266d19f", "issue": 4054 }, { @@ -807,7 +807,7 @@ "type": "copy", "file": "ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js", "baseFile": "packages/rn-tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js", - "baseHash": "7935456448098bc2e73cb8e75b4a1532a9162d26" + "baseHash": "e2d1bfcbbdeb964dc88eb88d7c98144f3a0e5f0d" } ] } \ No newline at end of file diff --git a/packages/@react-native/tester/package.json b/packages/@react-native/tester/package.json index ab7018d6abd..c8622ed9894 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.86.0-nightly-20260325-d1809f0aa", + "version": "0.86.0-nightly-20260408-8bac1df5a", "private": true, "description": "React Native tester app.", "license": "MIT", @@ -25,8 +25,8 @@ "e2e-test-ios": "./scripts/maestro-test-ios.sh" }, "dependencies": { - "@react-native/new-app-screen": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/popup-menu-android": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/new-app-screen": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/popup-menu-android": "0.86.0-nightly-20260408-8bac1df5a", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "nullthrows": "^1.1.1" @@ -62,7 +62,7 @@ "commander": "^12.0.0", "listr2": "^6.4.1", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "rxjs": "npm:@react-native-community/rxjs@6.5.4-custom" } } diff --git a/packages/@rnw-scripts/babel-react-native-config/package.json b/packages/@rnw-scripts/babel-react-native-config/package.json index 4b1b5e429c5..8a62eec8395 100644 --- a/packages/@rnw-scripts/babel-react-native-config/package.json +++ b/packages/@rnw-scripts/babel-react-native-config/package.json @@ -11,12 +11,12 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/babel-preset": "0.86.0-nightly-20260408-8bac1df5a", "babel-plugin-transform-flow-enums": "^0.0.2" }, "devDependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/babel-preset": "0.86.0-nightly-20260408-8bac1df5a", "eslint": "^8.19.0", "prettier": "^3.6.2" }, diff --git a/packages/@rnw-scripts/eslint-config/package.json b/packages/@rnw-scripts/eslint-config/package.json index a081149476f..3a6bdf9da9e 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.86.0-nightly-20260325-d1809f0aa", + "@react-native/eslint-config": "0.86.0-nightly-20260408-8bac1df5a", "eslint-config-prettier": "^8.5.0", "eslint-plugin-ft-flow": "^2.0.1", "hermes-eslint": "0.23.1" diff --git a/packages/@rnw-scripts/integrate-rn/package.json b/packages/@rnw-scripts/integrate-rn/package.json index 1c939e91d9e..1e9348b69b0 100644 --- a/packages/@rnw-scripts/integrate-rn/package.json +++ b/packages/@rnw-scripts/integrate-rn/package.json @@ -52,7 +52,7 @@ "jest": "^29.7.0", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "typescript": "5.0.4" }, "files": [ diff --git a/packages/@rnw-scripts/metro-dev-config/package.json b/packages/@rnw-scripts/metro-dev-config/package.json index 3dff1b6903c..ebb4662ce96 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.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@rnx-kit/metro-config": "^2.2.3", "@rnx-kit/metro-plugin-duplicates-checker": "^3.0.2", "@rnx-kit/metro-serializer": "^2.0.3", @@ -30,7 +30,7 @@ "eslint": "^8.19.0", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "typescript": "5.0.4" }, "peerDependencies": { diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index 4bcc78a4c1f..f52484d8a26 100644 --- a/packages/e2e-test-app-fabric/package.json +++ b/packages/e2e-test-app-fabric/package.json @@ -27,12 +27,12 @@ "dependencies": { "@react-native-windows/automation-channel": "0.0.0-canary.1060", "@react-native-windows/tester": "0.0.1", - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060" }, "devDependencies": { @@ -46,7 +46,7 @@ "@react-native-windows/automation-commands": "0.0.0-canary.1061", "@react-native-windows/fs": "^0.0.0-canary.72", "@react-native-windows/perf-testing": "0.0.0-canary.1039", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", diff --git a/packages/playground/package.json b/packages/playground/package.json index 43ffdd570d7..b8ea75d7b99 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -11,19 +11,19 @@ "dependencies": { "@react-native-picker/picker": "2.11.0", "@react-native-windows/tester": "0.0.1", - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/just-task": "2.3.58", diff --git a/packages/react-native-windows-init/package.json b/packages/react-native-windows-init/package.json index 3506d386328..8fa5e314e37 100644 --- a/packages/react-native-windows-init/package.json +++ b/packages/react-native-windows-init/package.json @@ -53,7 +53,7 @@ "jest": "^29.7.0", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "typescript": "5.0.4" }, "files": [ diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index 5a225c36cd5..09b60ed45c7 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -12,13 +12,13 @@ "bundle": "rnw-scripts prepareBundle && npx @react-native-community/cli bundle --platform windows --entry-file App.tsx --bundle-output windows/SampleAppFabric/Bundle/app.windows.bundle --assets-dest windows/SampleAppFabric/Bundle" }, "dependencies": { - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@react-native/new-app-screen": "0.82.0-nightly-20250821-0ef21bf8a", "@types/react": "^19.1.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060" }, "devDependencies": { @@ -29,7 +29,7 @@ "@babel/runtime": "^7.20.0", "@jest/globals": "^29.7.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index 43d6819aa2b..7ab6b7e0ba3 100644 --- a/packages/sample-custom-component/package.json +++ b/packages/sample-custom-component/package.json @@ -20,11 +20,11 @@ } }, "dependencies": { - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "minimatch": "^10.0.3", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-windows": "^0.0.0-canary.1060" }, "devDependencies": { @@ -34,7 +34,7 @@ "@babel/preset-typescript": "^7.8.3", "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", diff --git a/vnext/.flowconfig b/vnext/.flowconfig index b13f3c0977a..b7fc957f9e1 100644 --- a/vnext/.flowconfig +++ b/vnext/.flowconfig @@ -117,8 +117,6 @@ experimental.pattern_matching=true casting_syntax=both component_syntax=true -check_is_status=true - emoji=true exact_by_default=true @@ -171,4 +169,4 @@ untyped-import untyped-type-import [version] -^0.306.1 +^0.308.0 diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp index 45790b06117..03db2c9a8c8 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp @@ -539,6 +539,9 @@ void packMixBlendMode( case BlendMode::Luminosity: blendModeStr = "luminosity"; break; + case BlendMode::PlusLighter: + blendModeStr = "plus-lighter"; + break; default: throw std::runtime_error("Unknown blend mode"); } diff --git a/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js b/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js index cb2b54dd23b..c1f9cf2c760 100644 --- a/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js +++ b/vnext/ReactCopies/IntegrationTests/IntegrationTestsApp.js @@ -50,7 +50,7 @@ type Test = any; class IntegrationTestsApp extends React.Component<{...}, $FlowFixMe> { state: {test: ?Test} = { - test: (null: ?Test), + test: null as ?Test, }; render(): React.Node { diff --git a/vnext/Scripts/Warm-RnwFeedCache.ps1 b/vnext/Scripts/Warm-RnwFeedCache.ps1 index bc019b93b42..17298507816 100644 --- a/vnext/Scripts/Warm-RnwFeedCache.ps1 +++ b/vnext/Scripts/Warm-RnwFeedCache.ps1 @@ -75,7 +75,7 @@ .EXAMPLE # Warm against explicit versions and keep the generated projects to inspect: - ./Warm-RnwFeedCache.ps1 -ReactNativeVersion 0.86.0-nightly-20260325-d1809f0aa -KeepWorkDir + ./Warm-RnwFeedCache.ps1 -ReactNativeVersion 0.86.0-nightly-20260408-8bac1df5a -KeepWorkDir #> [CmdletBinding()] param( diff --git a/vnext/overrides.json b/vnext/overrides.json index c3766a50702..e2013233601 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -8,13 +8,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.86.0-nightly-20260325-d1809f0aa", + "baseVersion": "0.86.0-nightly-20260408-8bac1df5a", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "c0ccac81466faa8097c8ec9341c3ffe788c242da" + "baseHash": "6432378bd921ccd4ddb48296f710ec593c82d6e4" }, { "type": "derived", @@ -133,7 +133,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/animationbackend/AnimatedPropSerializer.cpp", "baseFile": "packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp", - "baseHash": "2161919b3f0d40ea8e711698dbc77b4fdccfd8de", + "baseHash": "f596cfc65fb69f4adeb1d517be294a9606a0e749", "issue": 16262 }, { @@ -231,20 +231,20 @@ "type": "copy", "directory": "ReactCopies/IntegrationTests", "baseDirectory": "packages/rn-tester/IntegrationTests", - "baseHash": "bb1c73af49d8355a86ef5ef5100373d8878402c6", + "baseHash": "2372217b8a47d09b3440ec5d29cc2b37eb7ebb74", "issue": 4054 }, { "type": "derived", "file": "src-win/index.windows.js", "baseFile": "packages/react-native/index.js", - "baseHash": "36c619cbe063dcd12ab4003886209d00e80ab249" + "baseHash": "5b9aa9de98ceb1bc54698f1a6889148d51c73790" }, { "type": "derived", "file": "src-win/index.windows.js.flow", "baseFile": "packages/react-native/index.js.flow", - "baseHash": "d1e1f6a15bd8659d03fb763a86a4de0c855f05c1" + "baseHash": "7e36d1b2b90a74e30b63a14dab2d97ccbb46e579" }, { "type": "platform", @@ -389,7 +389,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Pressable/Pressable.windows.js", "baseFile": "packages/react-native/Libraries/Components/Pressable/Pressable.js", - "baseHash": "5ff66c1735078860d360204d9e4471c05cf0fb1e" + "baseHash": "cf86b53a53968ee3140f5aba8f07ec90c961f2ea" }, { "type": "patch", @@ -401,7 +401,7 @@ "type": "derived", "file": "src-win/Libraries/Components/ScrollView/ScrollView.windows.js", "baseFile": "packages/react-native/Libraries/Components/ScrollView/ScrollView.js", - "baseHash": "4b7d2e86ea939ebf05d9b7f14e7726497d931e78" + "baseHash": "2877f7545839bae6bdb6998220676175eedf4b5a" }, { "type": "derived", @@ -413,7 +413,7 @@ "type": "derived", "file": "src-win/Libraries/Components/Switch/Switch.windows.js", "baseFile": "packages/react-native/Libraries/Components/Switch/Switch.js", - "baseHash": "ef4780115069491fc62455e34c9863629748f734" + "baseHash": "6b1a4780f2412e8f2893eab43cc0a3080b4a1e5e" }, { "type": "derived", @@ -425,7 +425,7 @@ "type": "patch", "file": "src-win/Libraries/Components/TextInput/TextInput.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "cedca6e0b5e98b29759cc1ca806313ffa7937eb2" + "baseHash": "63cc3972f4d9d1c369e616dd1a93348595e67a20" }, { "type": "patch", @@ -437,13 +437,13 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js", - "baseHash": "1911445d723432fbe15b787a50f19af472c83c35" + "baseHash": "5197e8d6a35507e186c8e0c998ee6af6d8d9ef75" }, { "type": "patch", "file": "src-win/Libraries/Components/Touchable/Touchable.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/Touchable.js", - "baseHash": "a9e38223753e718c5410a8ca9973064e699c1ab4" + "baseHash": "bb64188fc7f7c760c960de6a66d74048658d2fe5" }, { "type": "derived", @@ -611,7 +611,7 @@ "type": "patch", "file": "src-win/Libraries/Pressability/Pressability.windows.js", "baseFile": "packages/react-native/Libraries/Pressability/Pressability.js", - "baseHash": "623bd2db2402499786aa79161ec7bfa10577a404", + "baseHash": "65f7013eb707b42f787520de552571102b249fb5", "issue": 4379 }, { @@ -641,7 +641,7 @@ "type": "derived", "file": "src-win/Libraries/Text/Text.windows.js", "baseFile": "packages/react-native/Libraries/Text/Text.js", - "baseHash": "9e33c80b41f230349924379625a39c9cf68b9d3b" + "baseHash": "c7a8fd756a79aee901d60cf731d3be71199bd3b3" }, { "type": "derived", @@ -659,7 +659,7 @@ "type": "copy", "file": "src-win/Libraries/Utilities/BackHandler.windows.js", "baseFile": "packages/react-native/Libraries/Utilities/BackHandler.android.js", - "baseHash": "dfaab027e0fe3a2d7b6dccd92c1de2a558a5d36c", + "baseHash": "9fa1579308fcafa2d919b6f428e1ef2bdbfb83fc", "issue": 4629 }, { @@ -697,13 +697,13 @@ "type": "patch", "file": "src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js", - "baseHash": "76fceaf292d4c0d533cca4428e13cf3896b46845" + "baseHash": "76d93f7b85eb5d4755f7bf115f9cdf9bd19b9eb6" }, { "type": "patch", "file": "src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js", - "baseHash": "1fbf4cca23f0687d0c0ebeacce674ca79cbebce9", + "baseHash": "7f5f26c2303365f2b7cff5eeaf1fad1b9233284e", "issue": 15582 }, { @@ -714,13 +714,13 @@ "type": "derived", "file": "src-win/src/private/specs_DEPRECATED/modules/NativeDialogManagerWindows.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js", - "baseHash": "0aff9f1f951580ae27eca18c83bc8ee016b51e2c" + "baseHash": "192c088657630dd03d1de00f2b224fb4e870d0dc" }, { "type": "derived", "file": "src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js", - "baseHash": "365c5df75b38b129d364af3f6700cb206ce5bd2a" + "baseHash": "809b3807bafb9b73c95fd5ecf30f2d398f993847" } ] } \ No newline at end of file diff --git a/vnext/package.json b/vnext/package.json index 5aac18a572c..75c229c4470 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -28,15 +28,15 @@ "@react-native-community/cli-platform-ios": "20.0.0", "@react-native-windows/cli": "0.0.0-canary.293", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/codegen": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/community-cli-plugin": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/gradle-plugin": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/js-polyfills": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/new-app-screen": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/normalize-colors": "0.86.0-nightly-20260325-d1809f0aa", - "@react-native/virtualized-lists": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/assets-registry": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/codegen": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/community-cli-plugin": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/gradle-plugin": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/js-polyfills": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/new-app-screen": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/normalize-colors": "0.86.0-nightly-20260408-8bac1df5a", + "@react-native/virtualized-lists": "0.86.0-nightly-20260408-8bac1df5a", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -75,7 +75,7 @@ "@babel/preset-env": "^7.25.3", "@react-native-windows/codegen": "0.0.0-canary.133", "@react-native-windows/find-dotnet-tools": "0.0.0-canary.2", - "@react-native/metro-config": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/metro-config": "0.86.0-nightly-20260408-8bac1df5a", "@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", @@ -85,21 +85,21 @@ "@types/node": "^22.14.0", "@types/react": "^19.2.3", "eslint": "^8.19.0", - "flow-bin": "^0.306.1", + "flow-bin": "^0.308.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "^3.6.2", "react": "19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa", + "react-native": "0.86.0-nightly-20260408-8bac1df5a", "react-native-platform-override": "0.0.0-canary.1023", "react-refresh": "^0.14.0", "typescript": "5.0.4" }, "peerDependencies": { - "@react-native/jest-preset": "0.86.0-nightly-20260325-d1809f0aa", + "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "react": "^19.2.3", - "react-native": "0.86.0-nightly-20260325-d1809f0aa" + "react-native": "0.86.0-nightly-20260408-8bac1df5a" }, "beachball": { "defaultNpmTag": "canary", diff --git a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js index 8cb33f7ac18..c95abfc2ed7 100644 --- a/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js +++ b/vnext/src-win/Libraries/Components/Pressable/Pressable.windows.js @@ -435,7 +435,7 @@ function usePressState(forcePressed: boolean): [boolean, (boolean) => void] { const MemoedPressable = memo(Pressable); MemoedPressable.displayName = 'Pressable'; -export default (MemoedPressable: component( +export default MemoedPressable as component( ref?: React.RefSetter>, ...props: PressableProps -)); +); diff --git a/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js index c145f8c2618..ad3878e8fa3 100644 --- a/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js +++ b/vnext/src-win/Libraries/Components/ScrollView/ScrollView.windows.js @@ -856,7 +856,7 @@ class ScrollView extends React.Component { getScrollResponder: ScrollViewImperativeMethods['getScrollResponder'] = () => { // $FlowFixMe[unclear-type] - return ((this: any): ScrollResponderType); + return this as any as ScrollResponderType; }; getScrollableNode: ScrollViewImperativeMethods['getScrollableNode'] = () => { @@ -1961,5 +1961,5 @@ ScrollViewWrapper.displayName = 'ScrollView'; // $FlowExpectedError[prop-missing] ScrollViewWrapper.Context = ScrollViewContext; -export default ((ScrollViewWrapper: $FlowFixMe): typeof ScrollViewWrapper & - ScrollViewComponentStatics); +export default ScrollViewWrapper as $FlowFixMe as typeof ScrollViewWrapper & + ScrollViewComponentStatics; diff --git a/vnext/src-win/Libraries/Components/Switch/Switch.windows.js b/vnext/src-win/Libraries/Components/Switch/Switch.windows.js index 35076b508cc..85bdba6cd17 100644 --- a/vnext/src-win/Libraries/Components/Switch/Switch.windows.js +++ b/vnext/src-win/Libraries/Components/Switch/Switch.windows.js @@ -204,7 +204,7 @@ const Switch: component( // We wrap the native state in an object to force the layout-effect // below to re-run whenever we get an update from native, even if it's // not different from the previous native state. - const [native, setNative] = useState({value: (null: ?boolean)}); + const [native, setNative] = useState({value: null as ?boolean}); const handleChange = (event: SwitchChangeEvent) => { // $FlowFixMe[unused-promise] diff --git a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js index c0c3cca8c85..e535b213c9e 100644 --- a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js +++ b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js @@ -776,14 +776,14 @@ function InternalTextInput(props: TextInputProps): React.Node { if (flattenedStyle != null) { let overrides: ?{...TextStyleInternal} = null; if (typeof flattenedStyle?.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.fontWeight = // $FlowFixMe[incompatible-type] - (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']); + flattenedStyle.fontWeight.toString() as TextStyleInternal['fontWeight']; } if (flattenedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign]; overrides.verticalAlign = undefined; @@ -814,7 +814,7 @@ function InternalTextInput(props: TextInputProps): React.Node { textInput = ( ( ); // flowlint-next-line unclear-type:off -export default ((WindowsTextInputNativeComponent: any): HostComponent); +export default WindowsTextInputNativeComponent as any as HostComponent; diff --git a/vnext/src-win/Libraries/Components/Touchable/Touchable.windows.js b/vnext/src-win/Libraries/Components/Touchable/Touchable.windows.js index a0dbcadb3dc..f9400844bf5 100644 --- a/vnext/src-win/Libraries/Components/Touchable/Touchable.windows.js +++ b/vnext/src-win/Libraries/Components/Touchable/Touchable.windows.js @@ -952,7 +952,7 @@ const TouchableMixinImpl = { } }, - withoutDefaultFocusAndBlur: ({}: {...}), + withoutDefaultFocusAndBlur: {} as {...}, }; /** diff --git a/vnext/src-win/Libraries/Pressability/Pressability.windows.js b/vnext/src-win/Libraries/Pressability/Pressability.windows.js index 838613b212d..b983d04a5d1 100644 --- a/vnext/src-win/Libraries/Pressability/Pressability.windows.js +++ b/vnext/src-win/Libraries/Pressability/Pressability.windows.js @@ -636,8 +636,8 @@ export default class Pressability { ReactNativeFeatureFlags.shouldPressibilityUseW3CPointerEventsForHover() ) { const hoverPointerEvents = { - onPointerEnter: (undefined: void | (PointerEvent => void)), - onPointerLeave: (undefined: void | (PointerEvent => void)), + onPointerEnter: undefined as void | (PointerEvent => void), + onPointerLeave: undefined as void | (PointerEvent => void), }; const {onHoverIn, onHoverOut} = this._config; if (onHoverIn != null) { diff --git a/vnext/src-win/Libraries/Text/Text.windows.js b/vnext/src-win/Libraries/Text/Text.windows.js index 5c0d76c66fe..a431fe9e7ed 100644 --- a/vnext/src-win/Libraries/Text/Text.windows.js +++ b/vnext/src-win/Libraries/Text/Text.windows.js @@ -226,20 +226,20 @@ const TextImpl: component( if (processedStyle != null) { let overrides: ?{...TextStyleInternal} = null; if (typeof processedStyle.fontWeight === 'number') { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.fontWeight = // $FlowFixMe[incompatible-type] - (String(processedStyle.fontWeight): TextStyleInternal['fontWeight']); + String(processedStyle.fontWeight) as TextStyleInternal['fontWeight']; } if (processedStyle.userSelect != null) { _selectable = userSelectToSelectableMap[processedStyle.userSelect]; - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.userSelect = undefined; } if (processedStyle.verticalAlign != null) { - overrides = overrides || ({}: {...TextStyleInternal}); + overrides = overrides || ({} as {...TextStyleInternal}); overrides.textAlignVertical = verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign]; overrides.verticalAlign = undefined; diff --git a/vnext/src-win/Libraries/Utilities/BackHandler.windows.js b/vnext/src-win/Libraries/Utilities/BackHandler.windows.js index ff468f6500f..d29e71fa07b 100644 --- a/vnext/src-win/Libraries/Utilities/BackHandler.windows.js +++ b/vnext/src-win/Libraries/Utilities/BackHandler.windows.js @@ -9,18 +9,26 @@ */ import NativeDeviceEventManager from '../../Libraries/NativeModules/specs/NativeDeviceEventManager'; +import {setEventInitTimeStamp} from '../../src/private/webapis/dom/events/internals/EventInternals'; import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter'; +import {HardwareBackPressEvent} from './HardwareBackPressEvent'; const DEVICE_BACK_EVENT = 'hardwareBackPress'; type BackPressEventName = 'backPress' | 'hardwareBackPress'; -type BackPressHandler = () => ?boolean; +type BackPressHandler = (event: HardwareBackPressEvent) => ?boolean; const _backPressSubscriptions: Array = []; -RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function () { +RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function (nativeEvent) { + const options = {}; + const nativeTimestamp = nativeEvent?.timeStamp; + if (nativeTimestamp != null) { + setEventInitTimeStamp(options, nativeTimestamp); + } + const event = new HardwareBackPressEvent(options); for (let i = _backPressSubscriptions.length - 1; i >= 0; i--) { - if (_backPressSubscriptions[i]?.()) { + if (_backPressSubscriptions[i]?.(event)) { return; } } diff --git a/vnext/src-win/index.windows.js b/vnext/src-win/index.windows.js index d69a61eccd4..f65a2fe440c 100644 --- a/vnext/src-win/index.windows.js +++ b/vnext/src-win/index.windows.js @@ -157,6 +157,34 @@ module.exports = { get unstable_VirtualView() { return require('./src/private/components/virtualview/VirtualView').default; }, + get unstable_VirtualArray() { + return require('./src/private/components/virtualcollection/Virtual') + .VirtualArray; + }, + get unstable_createVirtualCollectionView() { + return require('./src/private/components/virtualcollection/VirtualCollectionView') + .createVirtualCollectionView; + }, + get unstable_VirtualColumn() { + return require('./src/private/components/virtualcollection/column/VirtualColumn') + .default; + }, + get unstable_VirtualColumnGenerator() { + return require('./src/private/components/virtualcollection/column/VirtualColumnGenerator') + .default; + }, + get unstable_VirtualRow() { + return require('./src/private/components/virtualcollection/row/VirtualRow') + .default; + }, + get unstable_getScrollParent() { + return require('./src/private/components/virtualcollection/dom/getScrollParent') + .default; + }, + get unstable_DEFAULT_INITIAL_NUM_TO_RENDER() { + return require('./src/private/components/virtualcollection/FlingConstants') + .DEFAULT_INITIAL_NUM_TO_RENDER; + }, // #endregion // #region APIs get AccessibilityInfo() { diff --git a/vnext/src-win/index.windows.js.flow b/vnext/src-win/index.windows.js.flow index e61f6cc9717..92b8e78cb1d 100644 --- a/vnext/src-win/index.windows.js.flow +++ b/vnext/src-win/index.windows.js.flow @@ -476,6 +476,22 @@ export { } from './src/private/components/virtualview/VirtualView'; export type {ModeChangeEvent} from './src/private/components/virtualview/VirtualView'; +export {VirtualArray as unstable_VirtualArray} from './src/private/components/virtualcollection/Virtual'; +export type { + Item as unstable_VirtualItem, + VirtualCollection as unstable_VirtualCollection, +} from './src/private/components/virtualcollection/Virtual'; +export {createVirtualCollectionView as unstable_createVirtualCollectionView} from './src/private/components/virtualcollection/VirtualCollectionView'; +export type { + VirtualCollectionGenerator as unstable_VirtualCollectionGenerator, + VirtualCollectionLayoutComponent as unstable_VirtualCollectionLayoutComponent, + VirtualCollectionViewComponent as unstable_VirtualCollectionViewComponent, +} from './src/private/components/virtualcollection/VirtualCollectionView'; +export {default as unstable_VirtualColumn} from './src/private/components/virtualcollection/column/VirtualColumn'; +export {default as unstable_VirtualColumnGenerator} from './src/private/components/virtualcollection/column/VirtualColumnGenerator'; +export {default as unstable_VirtualRow} from './src/private/components/virtualcollection/row/VirtualRow'; +export {default as unstable_getScrollParent} from './src/private/components/virtualcollection/dom/getScrollParent'; +export {DEFAULT_INITIAL_NUM_TO_RENDER as unstable_DEFAULT_INITIAL_NUM_TO_RENDER} from './src/private/components/virtualcollection/FlingConstants'; // Windows Specific exports /* $FlowFixMe[untyped-import] Flyout defined in TS not flow*/ export {Flyout} from './Libraries/Components/Flyout/Flyout'; @@ -485,8 +501,8 @@ export {Popup} from './Libraries/Components/Popup/Popup'; /* $FlowFixMe[untyped-import] supportKeyboard defined in TS not flow*/ export {supportKeyboard} from './Libraries/Components/Keyboard/KeyboardExt'; -export {HandledEventPhase as EventPhase} from './Libraries/Components/View/ViewPropTypes' -export {HandledEventPhase } from './Libraries/Components/View/ViewPropTypes' +export {HandledEventPhase as EventPhase} from './Libraries/Components/View/ViewPropTypes'; +export {HandledEventPhase} from './Libraries/Components/View/ViewPropTypes'; export {default as ViewWindows} from './Libraries/Components/View/View'; export {AppTheme} from './Libraries/AppTheme/AppTheme'; diff --git a/vnext/src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js b/vnext/src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js index 1c3a270e817..023bf68cc70 100644 --- a/vnext/src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +++ b/vnext/src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js @@ -159,10 +159,10 @@ type RCTModalHostViewNativeProps = Readonly<{| // Windows] |}>; -export default (codegenNativeComponent( +export default codegenNativeComponent( 'ModalHostView', { interfaceOnly: true, paperComponentName: 'RCTModalHostView', }, -): HostComponent); +) as HostComponent; diff --git a/vnext/src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js b/vnext/src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js index 3a95f0e28c7..d7593ef7fd4 100644 --- a/vnext/src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +++ b/vnext/src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js @@ -55,8 +55,8 @@ export const Commands: NativeCommands = codegenNativeCommands({ supportedCommands: ['setValue'], }); -export default (codegenNativeComponent('Switch', { +export default codegenNativeComponent('Switch', { paperComponentName: 'RCTSwitch', excludedPlatforms: ['android'], //#Windows->15582 interfaceOnly: true, -}): ComponentType); +}) as ComponentType; diff --git a/vnext/src-win/src/private/specs_DEPRECATED/modules/NativeDialogManagerWindows.js b/vnext/src-win/src/private/specs_DEPRECATED/modules/NativeDialogManagerWindows.js index d1349f1f5e6..69d7b19b68a 100644 --- a/vnext/src-win/src/private/specs_DEPRECATED/modules/NativeDialogManagerWindows.js +++ b/vnext/src-win/src/private/specs_DEPRECATED/modules/NativeDialogManagerWindows.js @@ -48,4 +48,4 @@ export interface Spec extends TurboModule { ) => void; } -export default (TurboModuleRegistry.get('Alert'): ?Spec); +export default TurboModuleRegistry.get('Alert') as ?Spec; diff --git a/vnext/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js b/vnext/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js index 9be7be7e290..3f559decf4e 100644 --- a/vnext/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js +++ b/vnext/src-win/src/private/specs_DEPRECATED/modules/NativePlatformConstantsWindows.js @@ -35,6 +35,6 @@ export interface Spec extends TurboModule { +getConstants: () => PlatformConstantsWindows; } -export default (TurboModuleRegistry.getEnforcing( +export default TurboModuleRegistry.getEnforcing( 'PlatformConstants', -): Spec); +) as Spec; diff --git a/yarn.lock b/yarn.lock index 1666035c25e..b7abb9c6d57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3540,7 +3540,7 @@ __metadata: resolution: "@office-iss/react-native-win32-tester@workspace:packages/@office-iss/react-native-win32-tester" dependencies: "@office-iss/react-native-win32": "npm:^0.0.0-canary.312" - "@react-native/tester": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/tester": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" @@ -3553,13 +3553,13 @@ __metadata: just-scripts: "npm:^1.3.3" prettier: "npm:^3.6.2" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "npm:0.0.0-canary.1023" typescript: "npm:5.0.4" peerDependencies: "@office-iss/react-native-win32": ^0.0.0-canary.312 react: 19.2.3 - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a languageName: unknown linkType: soft @@ -3576,15 +3576,15 @@ __metadata: "@react-native-community/cli-platform-android": "npm:20.0.0" "@react-native-community/cli-platform-ios": "npm:20.0.0" "@react-native/assets": "npm:1.0.0" - "@react-native/assets-registry": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/codegen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/js-polyfills": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/normalize-colors": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/assets-registry": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/codegen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/js-polyfills": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/normalize-colors": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "npm:^1.1.42" @@ -3606,7 +3606,7 @@ __metadata: commander: "npm:^12.0.0" eslint: "npm:^8.19.0" event-target-shim: "npm:^5.0.1" - flow-bin: "npm:^0.306.1" + flow-bin: "npm:^0.308.0" flow-enums-runtime: "npm:^0.0.6" glob: "npm:^7.1.1" hermes-compiler: "npm:250829098.0.10" @@ -3625,7 +3625,7 @@ __metadata: react: "npm:19.2.3" react-clone-referenced-element: "npm:^1.0.1" react-devtools-core: "npm:^6.1.5" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "npm:0.0.0-canary.1023" react-refresh: "npm:^0.14.0" regenerator-runtime: "npm:^0.13.2" @@ -3638,10 +3638,10 @@ __metadata: ws: "npm:^7.5.10" yargs: "npm:^17.6.2" peerDependencies: - "@react-native/jest-preset": 0.86.0-nightly-20260325-d1809f0aa + "@react-native/jest-preset": 0.86.0-nightly-20260408-8bac1df5a "@types/react": ^19.1.1 react: ^19.2.3 - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a languageName: unknown linkType: soft @@ -4000,7 +4000,7 @@ __metadata: minimatch: "npm:^10.0.3" prettier: "npm:^3.6.2" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-windows: "npm:^0.0.0-canary.1060" typescript: "npm:5.0.4" languageName: unknown @@ -4100,7 +4100,7 @@ __metadata: prettier: "npm:^3.6.2" prompts: "npm:^2.4.1" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" semver: "npm:^7.3.2" shelljs: "npm:^0.8.4" typescript: "npm:5.0.4" @@ -4244,7 +4244,7 @@ __metadata: peerDependencies: jest: ">=29.0.3" react: ">=18.0.0" - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a react-test-renderer: ">=18.0.0" peerDependenciesMeta: react-test-renderer: @@ -4292,8 +4292,8 @@ __metadata: resolution: "@react-native-windows/tester@workspace:packages/@react-native-windows/tester" dependencies: "@react-native-picker/picker": "npm:2.11.0" - "@react-native/new-app-screen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/tester": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/new-app-screen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/tester": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" @@ -4307,14 +4307,14 @@ __metadata: just-scripts: "npm:^1.3.3" prettier: "npm:^3.6.2" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "npm:0.0.0-canary.1023" react-native-windows: "npm:^0.0.0-canary.1060" typescript: "npm:5.0.4" peerDependencies: "@react-native-picker/picker": 2.11.0 react: 19.2.3 - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a react-native-windows: ^0.0.0-canary.1060 react-native-xaml: ^0.0.80 peerDependenciesMeta: @@ -4325,10 +4325,10 @@ __metadata: languageName: unknown linkType: soft -"@react-native/assets-registry@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/assets-registry@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/7eb61c0f2621f729b1903814c98b40cde4632366d0455a831b945015049ad4de70279707afcecd7fc7773c092d437cec0bb302e85726157b74519e3791636994 +"@react-native/assets-registry@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/assets-registry@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/0bce1bc72007203f1ce4d71f9c1adefd06ad7cb05f5b5b32aa173ebd5c0474beed80d9faed78e14700d7f4e6614d7d56f61730da87b9325937a1427be8e647af languageName: node linkType: hard @@ -4339,19 +4339,19 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/babel-plugin-codegen@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/babel-plugin-codegen@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/babel-plugin-codegen@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@babel/traverse": "npm:^7.29.0" - "@react-native/codegen": "npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/1d64762cf46ff3941fc23117007b0f975fa2533bd02757db3b9fc4fe8d073c4b0dae69292cf03ec567ef2a408b68815bcb06b3015761ea56e017e22ef88a8f9c + "@react-native/codegen": "npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/39e6ab7acb418bc1209315f98c018b4f9fb7426cdb19a34e03d7bd81a177a5828fc6fc2857849a0dfcc48d5d38b313731a6df345bcd0889c47e6d10d17aa0e3c languageName: node linkType: hard -"@react-native/babel-preset@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/babel-preset@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/babel-preset@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/babel-preset@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" @@ -4382,19 +4382,19 @@ __metadata: "@babel/plugin-transform-runtime": "npm:^7.24.7" "@babel/plugin-transform-typescript": "npm:^7.25.2" "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" - "@react-native/babel-plugin-codegen": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/babel-plugin-codegen": "npm:0.86.0-nightly-20260408-8bac1df5a" babel-plugin-syntax-hermes-parser: "npm:0.34.0" babel-plugin-transform-flow-enums: "npm:^0.0.2" react-refresh: "npm:^0.14.0" peerDependencies: "@babel/core": "*" - checksum: 10c0/1032c328896e943d0d343681907e38b0c288a744ef5b844a0a70d6385b10e68b267b4fdb6e550b32125b5b01d6408c1d0fbe8e4f9d48ab42ea3d30714486f06f + checksum: 10c0/14698c1707c5773e17914123e760afeb7551a749cd6971c269edf6bc8cbabf151eee1d879c53ecf370b0310e7bbe2277ba3c2e5ae71913b866430bb3cc248fd3 languageName: node linkType: hard -"@react-native/codegen@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/codegen@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/codegen@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/codegen@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@babel/core": "npm:^7.25.2" "@babel/parser": "npm:^7.29.0" @@ -4405,15 +4405,15 @@ __metadata: yargs: "npm:^17.6.2" peerDependencies: "@babel/core": "*" - checksum: 10c0/83591a58fd930c65714556ce3a0064c0a6ff1e09874c7d31846224593e2d4169a0aaba1b110bc306e3f6ed4e1db2c0b51d5615e1866af0e2ae778d99f93a5e9b + checksum: 10c0/fa4327c15002841c78097220acd2949ca7eaede802a36db804b5621f34614a1b0c1dab2754e1c605809c20de362a89cb24273ffa2343f58438f97dc1ce9acdbc languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/community-cli-plugin@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/community-cli-plugin@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/community-cli-plugin@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: - "@react-native/dev-middleware": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/dev-middleware": "npm:0.86.0-nightly-20260408-8bac1df5a" debug: "npm:^4.4.0" invariant: "npm:^2.2.4" metro: "npm:^0.84.2" @@ -4422,41 +4422,41 @@ __metadata: semver: "npm:^7.1.3" peerDependencies: "@react-native-community/cli": "*" - "@react-native/metro-config": 0.86.0-nightly-20260325-d1809f0aa + "@react-native/metro-config": 0.86.0-nightly-20260408-8bac1df5a peerDependenciesMeta: "@react-native-community/cli": optional: true "@react-native/metro-config": optional: true - checksum: 10c0/5c8951822dedb597a81c6fc37803145146326d5a02106200ddd42fcc09ded8aa9c62fbb284ec768ae16aeb4440181e6a9efa708bffc217dc9b008719020c60d8 + checksum: 10c0/d2c0858bee1af9209f2671ae6e6b089fdec4ab7c4aafc0ea6e78f1765e140028a1999706bae23a988be4da0820851a2cee396ec25e9696a4751b594c5c09bf91 languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/debugger-frontend@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/a0e1a6f189843e2a8e70677df19599970f22605ec1ac88f2d2072443097c7de16fab0f6374d01db396ae2ef52263c8b059a62f6941303c074275d5343ca71f32 +"@react-native/debugger-frontend@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/debugger-frontend@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/d3e16094c60e2ca38f40b738281c79e93dbb6097c487231d9939851c013236cd94892c3a429a36bed5e37727f876b8b8e559df484d387a7ca8afa380b2990244 languageName: node linkType: hard -"@react-native/debugger-shell@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/debugger-shell@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/debugger-shell@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/debugger-shell@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: cross-spawn: "npm:^7.0.6" debug: "npm:^4.4.0" fb-dotslash: "npm:0.5.8" - checksum: 10c0/690317f1a21d0aee105fcc44a17bbc2c315704554983fd7cd16e1b3d64a70295c52478c2bf9d6245c8203e17dbec838d7ef1dab63158fa1cc3a5df8052896a08 + checksum: 10c0/4b9f25592d3fed2e4dd8e9a289f568c6337f70df2a447d46c97ee8e7542a8c1c82c541b0764a82f62f2ae13668caed30f23669b0cbf7ab7459ada1ab00f3a859 languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/dev-middleware@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/dev-middleware@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/dev-middleware@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@isaacs/ttlcache": "npm:^1.4.1" - "@react-native/debugger-frontend": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/debugger-shell": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/debugger-frontend": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/debugger-shell": "npm:0.86.0-nightly-20260408-8bac1df5a" chrome-launcher: "npm:^0.15.2" chromium-edge-launcher: "npm:^0.3.0" connect: "npm:^3.6.5" @@ -4466,17 +4466,17 @@ __metadata: open: "npm:^7.0.3" serve-static: "npm:^1.16.2" ws: "npm:^7.5.10" - checksum: 10c0/d46e5d388dd92bc1eee1a7072e3326c2014dd731ec4082fc5766037f05f7c96ca3276879dca67123b527abfd371ba94197e22035d35508be9ddc58e2e1020485 + checksum: 10c0/83f50f3811c5c4c1c230f2bb003e54ed2eedd4d783c1f96044fcf7a28a73320b254fcf361887de770f9b72af8f1ff9092998b6fb984673c57965fe687f5221c8 languageName: node linkType: hard -"@react-native/eslint-config@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/eslint-config@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/eslint-config@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/eslint-config@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@babel/core": "npm:^7.25.2" "@babel/eslint-parser": "npm:^7.25.1" - "@react-native/eslint-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/eslint-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" "@typescript-eslint/eslint-plugin": "npm:^8.36.0" "@typescript-eslint/parser": "npm:^8.36.0" eslint-config-prettier: "npm:^8.5.0" @@ -4489,69 +4489,69 @@ __metadata: peerDependencies: eslint: ^8.0.0 || ^9.0.0 prettier: ">=2" - checksum: 10c0/46b4273a84bbede5f451c2b50c6172ca2b047111897650f4d1d1bfbeb0e0b414d74769a1d06c2aa28431b3aab0095d06e31a264ca8d146cdd15837d58ab8ee64 + checksum: 10c0/e4e48df06916ad3ba2b918d97d2831f275e5ef16d8ec8521d4684476e49f6ee7e55f2e0672c2c517126bd02cb910396b22d23cb3577f3bd1fe779f61eb792c79 languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/eslint-plugin@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/027bcb5ce3797d4beacbd2d2656af61f421083bc8805650d6d52bc5f8534903a272adafd990ddf5a53dd9147f1124c9e6f4307f3d6de76ce476406515b4cf58f +"@react-native/eslint-plugin@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/eslint-plugin@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/9448c67a87abd02fd7192aa68552cf39b27919ed9b9f2c4b97aad720ba7bd4732b3f68c23da24fb935e53d581e6cf9b947491934eb8aa742a7faf741df11f7f5 languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/gradle-plugin@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/8bc741b99f59e4d91c0315d8d0ab71e2175adbcecff1ed78a265adae1aa1b06464bdc74c9880836ed6ff3b653e1276006751d9bb943562b1c9ea5b8a741e8e40 +"@react-native/gradle-plugin@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/gradle-plugin@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/f38af3a5722e259861f33af57189d1d66cff2dc75ecabfd6ea79eab3cc92b59d4459582b499b4fd032b20e29b6063c87cd54e195c4b451c2144249dc78a60b4b languageName: node linkType: hard -"@react-native/jest-preset@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/jest-preset@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/jest-preset@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/jest-preset@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@jest/create-cache-key-function": "npm:^29.7.0" - "@react-native/js-polyfills": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/js-polyfills": "npm:0.86.0-nightly-20260408-8bac1df5a" babel-jest: "npm:^29.7.0" jest-environment-node: "npm:^29.7.0" regenerator-runtime: "npm:^0.13.2" peerDependencies: react: ^19.2.3 - checksum: 10c0/4eb81c123817f1500514e92c0ac180951616be765b57673c511a43e5214d3ebf2f4682cc18574a2ef2c3ba625db164b48c082e1a87faa755a72e5bfb3746fc9b + checksum: 10c0/725963b93115f8a5903f440b63294ce30f54f8747b491ebdf948b1acb14314ef460f8fcce3d40eebcaf313cc366593823fcbcbe0c66d661486204128648c3ccf languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/js-polyfills@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/cb19a33fd14808b359cfaf2aca6af792d6f28e23181f06422221ebc803cc5d5cd0ab99f45fb9a7d5a754bdf0eafdc6aee8c2e11d37d832729aed20b9f0be0afe +"@react-native/js-polyfills@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/js-polyfills@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/e10a7ed4c411292a59ddff0a0e50d1eea65ea5ee46929de7f0b4f2931248542a82e7afc567145a3ad415dc979022f25b4f599fbd848932f6d90c93a2b26b20bb languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/metro-babel-transformer@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/metro-babel-transformer@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/metro-babel-transformer@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/babel-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" hermes-parser: "npm:0.34.0" nullthrows: "npm:^1.1.1" peerDependencies: "@babel/core": "*" - checksum: 10c0/3d535e7fa5815dca9390a5e61b1fec3c6ff0b55a41d5e94ab9bcd4b48a7d5a30edc87818680b21f487eb9650ebe4bf0fa773379688231c3c065c65bf7544ebb1 + checksum: 10c0/71ae7fe51b2f0efe9879e6f2e66292662c6f9b02ba4d8d4ea3fcdd473ba6604c1e39777e6aba9c1309f168d9434a14674531913871ecb1d994b2e6eaab9757e0 languageName: node linkType: hard -"@react-native/metro-config@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/metro-config@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/metro-config@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/metro-config@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: - "@react-native/js-polyfills": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-babel-transformer": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/js-polyfills": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-babel-transformer": "npm:0.86.0-nightly-20260408-8bac1df5a" metro-config: "npm:^0.84.2" metro-runtime: "npm:^0.84.2" - checksum: 10c0/a2e0b090d3fa2186c822364461827426ce8eb0fab4e8b2f00155380c4bc9c03fc83f3f72fdccbb13a0166a7d963d623bb63fe23637072b08192e36742ebe53e7 + checksum: 10c0/ccbae1bd9612e082036a4e682c7c77b14799537807306a63f68d1b1acceaea89192b20a031de19ad8dd64c31c35199e6dcbec8d6911f48b39ad1a7150d14af59 languageName: node linkType: hard @@ -4571,8 +4571,8 @@ __metadata: "@jest/create-cache-key-function": "npm:^29.7.0" "@microsoft/api-extractor": "npm:^7.52.2" "@octokit/rest": "npm:^22.0.0" - "@react-native/metro-babel-transformer": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/metro-babel-transformer": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@tsconfig/node22": "npm:22.0.2" "@types/react": "npm:^19.2.3" "@typescript-eslint/parser": "npm:^8.36.0" @@ -4599,7 +4599,7 @@ __metadata: eslint-plugin-relay: "npm:^1.8.3" fb-dotslash: "npm:0.5.8" flow-api-translator: "npm:0.34.0" - flow-bin: "npm:^0.306.1" + flow-bin: "npm:^0.308.0" hermes-eslint: "npm:0.34.0" hermes-transform: "npm:0.34.0" ini: "npm:^5.0.0" @@ -4649,59 +4649,59 @@ __metadata: languageName: node linkType: hard -"@react-native/new-app-screen@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/new-app-screen@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/new-app-screen@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/new-app-screen@npm:0.86.0-nightly-20260408-8bac1df5a" peerDependencies: "@types/react": ^19.1.0 react: "*" - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/0c1da6333816a1a1db4df60719661d15ed0f3bfc2ecdf9bea22b993703d25665608911a01a6d3a0f5052e818bb46da9a559558415fbb2a13a24c78b2b8cf7afc + checksum: 10c0/448a2e6286222f05335c97d6f8d8248c282ad1378bb69fe58a3a41317aaa4ba2a14becccbad485ee21abfbe88c3dd6bed97637ec466a962e55ba6f546f0dbf33 languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/normalize-colors@npm:0.86.0-nightly-20260325-d1809f0aa" - checksum: 10c0/7937d4fb25f36c8a7a0f8851882840c111fc51ab8d6fc802bc15e73f5f3b1b459be14500b32c9ef0b94544bd0368a10d458599e68653f82e696dc6d6530946fa +"@react-native/normalize-colors@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/normalize-colors@npm:0.86.0-nightly-20260408-8bac1df5a" + checksum: 10c0/89eda5f952502aaca775e219c039c0f768dc1efdfeefe1b46574edfe67272d7027d435fa2610b1afffeb649789c6a4ff0aa8160e8e9c860f8d6444bddce2b6dd languageName: node linkType: hard -"@react-native/popup-menu-android@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/popup-menu-android@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/popup-menu-android@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/popup-menu-android@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: nullthrows: "npm:^1.1.1" peerDependencies: "@types/react": ^19.1.0 react: "*" - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/1a727b81e68a545373f495adce7a26ca4dc2fad07c6fb61463d9730239962c794f8e502eb8147a2827dca0569375ef057ad00d7a82be909b24986f7d889757a3 + checksum: 10c0/53f419912ebf970da8dcdcb7a78146b983d0b3da29534260de6ddc943617d71ee3b94c71000aef00e3038a6749c78ef6b9c63e275549f13d97aa4b561c30d631 languageName: node linkType: hard -"@react-native/tester@npm:0.86.0-nightly-20260325-d1809f0aa, @react-native/tester@workspace:packages/@react-native/tester": +"@react-native/tester@npm:0.86.0-nightly-20260408-8bac1df5a, @react-native/tester@workspace:packages/@react-native/tester": version: 0.0.0-use.local resolution: "@react-native/tester@workspace:packages/@react-native/tester" dependencies: "@react-native-community/cli": "npm:20.0.0" "@react-native-community/cli-platform-android": "npm:20.0.0" "@react-native-community/cli-platform-ios": "npm:20.0.0" - "@react-native/new-app-screen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/popup-menu-android": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/new-app-screen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/popup-menu-android": "npm:0.86.0-nightly-20260408-8bac1df5a" commander: "npm:^12.0.0" flow-enums-runtime: "npm:^0.0.6" invariant: "npm:^2.2.4" listr2: "npm:^6.4.1" nullthrows: "npm:^1.1.1" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" rxjs: "npm:@react-native-community/rxjs@6.5.4-custom" peerDependencies: react: 19.2.3 @@ -4709,20 +4709,20 @@ __metadata: languageName: unknown linkType: soft -"@react-native/virtualized-lists@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "@react-native/virtualized-lists@npm:0.86.0-nightly-20260325-d1809f0aa" +"@react-native/virtualized-lists@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "@react-native/virtualized-lists@npm:0.86.0-nightly-20260408-8bac1df5a" dependencies: invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" peerDependencies: "@types/react": ^19.2.0 react: "*" - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/cf25ee3dd74cab1db13454bc2349258603350f31817f6400e4e514da041bc66aeb5e0aa4ecf4e276c5dceb786852e6d72eb9f91fe89094049f1b6463701f853c + checksum: 10c0/5473567d34a4a72ff6124ea7fab4010cd9d1a2fbbd0f138553e794da168b50dfc90f493c743473599266ad93ab0087f94ae0f5b4bb434bd7db0f251bbbc6ad35 languageName: node linkType: hard @@ -4752,7 +4752,7 @@ __metadata: resolution: "@rnw-scripts/babel-react-native-config@workspace:packages/@rnw-scripts/babel-react-native-config" dependencies: "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/babel-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" babel-plugin-transform-flow-enums: "npm:^0.0.2" eslint: "npm:^8.19.0" prettier: "npm:^3.6.2" @@ -4890,8 +4890,8 @@ __metadata: "@react-native-windows/fs": "npm:^0.0.0-canary.72" "@react-native-windows/perf-testing": "npm:0.0.0-canary.1039" "@react-native-windows/tester": "npm:0.0.1" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-node-config": "npm:2.3.3" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" @@ -4912,7 +4912,7 @@ __metadata: jest-image-snapshot: "npm:^6.5.2" prettier: "npm:^3.6.2" react: "npm:^19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-windows: "npm:^0.0.0-canary.1060" react-test-renderer: "npm:19.1.0" sanitize-filename: "npm:^1.6.3" @@ -4928,7 +4928,7 @@ __metadata: "@babel/eslint-parser": "npm:^7.25.1" "@jest/globals": "npm:^29.7.0" "@microsoft/eslint-plugin-sdl": "npm:^0.2.0" - "@react-native/eslint-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/eslint-config": "npm:0.86.0-nightly-20260408-8bac1df5a" eslint: "npm:^8.19.0" eslint-config-prettier: "npm:^8.5.0" eslint-plugin-ft-flow: "npm:^2.0.1" @@ -5031,7 +5031,7 @@ __metadata: ora: "npm:^3.4.0" prettier: "npm:^3.6.2" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "npm:0.0.0-canary.1023" semver: "npm:^7.6.3" source-map-support: "npm:^0.5.19" @@ -5152,7 +5152,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rnw-scripts/metro-dev-config@workspace:packages/@rnw-scripts/metro-dev-config" dependencies: - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" "@rnx-kit/metro-config": "npm:^2.2.3" @@ -5163,7 +5163,7 @@ __metadata: eslint: "npm:^8.19.0" prettier: "npm:^3.6.2" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" typescript: "npm:5.0.4" peerDependencies: react: 19.2.3 @@ -5180,8 +5180,8 @@ __metadata: "@react-native-community/cli": "npm:20.0.0" "@react-native-picker/picker": "npm:2.11.0" "@react-native-windows/tester": "npm:0.0.1" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/just-task": "npm:2.3.58" @@ -5197,7 +5197,7 @@ __metadata: just-scripts: "npm:^1.3.3" prettier: "npm:^3.6.2" react: "npm:^19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-windows: "npm:^0.0.0-canary.1060" react-test-renderer: "npm:19.1.0" typescript: "npm:5.0.4" @@ -5276,7 +5276,7 @@ __metadata: prettier: "npm:^3.6.2" prettier-plugin-hermes-parser: "npm:0.21.1" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "workspace:*" typescript: "npm:5.0.4" languageName: unknown @@ -5293,8 +5293,8 @@ __metadata: "@babel/runtime": "npm:^7.20.0" "@jest/globals": "npm:^29.7.0" "@react-native-community/cli": "npm:20.0.0" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@react-native/new-app-screen": "npm:0.82.0-nightly-20250821-0ef21bf8a" "@rnw-scripts/babel-node-config": "npm:2.3.3" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" @@ -5313,7 +5313,7 @@ __metadata: just-scripts: "npm:^1.3.3" prettier: "npm:^3.6.2" react: "npm:^19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-windows: "npm:^0.0.0-canary.1060" react-test-renderer: "npm:19.1.0" typescript: "npm:5.0.4" @@ -5330,8 +5330,8 @@ __metadata: "@babel/preset-typescript": "npm:^7.8.3" "@babel/runtime": "npm:^7.20.0" "@react-native-community/cli": "npm:20.0.0" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-node-config": "npm:2.3.3" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" @@ -5349,7 +5349,7 @@ __metadata: minimatch: "npm:^10.0.3" prettier: "npm:^3.6.2" react: "npm:^19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-windows: "npm:^0.0.0-canary.1060" typescript: "npm:5.0.4" languageName: unknown @@ -10650,12 +10650,12 @@ __metadata: languageName: node linkType: hard -"flow-bin@npm:^0.306.1": - version: 0.306.1 - resolution: "flow-bin@npm:0.306.1" +"flow-bin@npm:^0.308.0": + version: 0.308.0 + resolution: "flow-bin@npm:0.308.0" bin: flow: cli.js - checksum: 10c0/e23192c2cce2c46ff09adba66dbfdc7c0a154d1b2635e1bb3a3af9cf1ec2defd14ffc45746b3b3b540322b44f032e5ca3884d0ffcf0dfa57cbc7c0575cd5826f + checksum: 10c0/4757b93cf343a0a78ce4b43080075e3a3121ae027df4e464030d238f790167d0d694454e686c67decbf0a3b5392aa088d802cfb10bfc31bfa47e2fe094f2ef7f languageName: node linkType: hard @@ -16379,7 +16379,7 @@ __metadata: prettier: "npm:^3.6.2" prompts: "npm:^2.4.1" react: "npm:19.2.3" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" semver: "npm:^7.3.2" source-map-support: "npm:^0.5.19" typescript: "npm:5.0.4" @@ -16405,16 +16405,16 @@ __metadata: "@react-native-windows/codegen": "npm:0.0.0-canary.133" "@react-native-windows/find-dotnet-tools": "npm:0.0.0-canary.2" "@react-native/assets": "npm:1.0.0" - "@react-native/assets-registry": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/codegen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/jest-preset": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/js-polyfills": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/metro-config": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/new-app-screen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/normalize-colors": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260325-d1809f0aa" + "@react-native/assets-registry": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/codegen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/js-polyfills": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/new-app-screen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/normalize-colors": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "npm:^1.1.42" @@ -16433,7 +16433,7 @@ __metadata: commander: "npm:^12.0.0" eslint: "npm:^8.19.0" event-target-shim: "npm:^5.0.1" - flow-bin: "npm:^0.306.1" + flow-bin: "npm:^0.308.0" flow-enums-runtime: "npm:^0.0.6" glob: "npm:^7.1.1" hermes-compiler: "npm:250829098.0.10" @@ -16451,7 +16451,7 @@ __metadata: promise: "npm:^8.3.0" react: "npm:19.2.3" react-devtools-core: "npm:^6.1.5" - react-native: "npm:0.86.0-nightly-20260325-d1809f0aa" + react-native: "npm:0.86.0-nightly-20260408-8bac1df5a" react-native-platform-override: "npm:0.0.0-canary.1023" react-refresh: "npm:^0.14.0" regenerator-runtime: "npm:^0.13.2" @@ -16465,24 +16465,24 @@ __metadata: ws: "npm:^7.5.10" yargs: "npm:^17.6.2" peerDependencies: - "@react-native/jest-preset": 0.86.0-nightly-20260325-d1809f0aa + "@react-native/jest-preset": 0.86.0-nightly-20260408-8bac1df5a "@types/react": ^19.1.1 react: ^19.2.3 - react-native: 0.86.0-nightly-20260325-d1809f0aa + react-native: 0.86.0-nightly-20260408-8bac1df5a languageName: unknown linkType: soft -"react-native@npm:0.86.0-nightly-20260325-d1809f0aa": - version: 0.86.0-nightly-20260325-d1809f0aa - resolution: "react-native@npm:0.86.0-nightly-20260325-d1809f0aa" - dependencies: - "@react-native/assets-registry": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/codegen": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/js-polyfills": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/normalize-colors": "npm:0.86.0-nightly-20260325-d1809f0aa" - "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260325-d1809f0aa" +"react-native@npm:0.86.0-nightly-20260408-8bac1df5a": + version: 0.86.0-nightly-20260408-8bac1df5a + resolution: "react-native@npm:0.86.0-nightly-20260408-8bac1df5a" + dependencies: + "@react-native/assets-registry": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/codegen": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/community-cli-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/gradle-plugin": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/js-polyfills": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/normalize-colors": "npm:0.86.0-nightly-20260408-8bac1df5a" + "@react-native/virtualized-lists": "npm:0.86.0-nightly-20260408-8bac1df5a" abort-controller: "npm:^3.0.0" anser: "npm:^1.4.9" ansi-regex: "npm:^5.0.0" @@ -16509,7 +16509,7 @@ __metadata: ws: "npm:^7.5.10" yargs: "npm:^17.6.2" peerDependencies: - "@react-native/jest-preset": 0.86.0-nightly-20260325-d1809f0aa + "@react-native/jest-preset": 0.86.0-nightly-20260408-8bac1df5a "@types/react": ^19.1.1 react: ^19.2.3 peerDependenciesMeta: @@ -16519,7 +16519,7 @@ __metadata: optional: true bin: react-native: cli.js - checksum: 10c0/d1e954c00818f11ffb2beeca650f1e6c5a742a43114c511ae7bea75caac7735ddbcdd96bc60a8c9029098192ede8b03d48f6cc703ab6f9da23eeb883eba9da2b + checksum: 10c0/142e06c17dcc260c7556afcdbe2e7bc0202dc92fe598346f225613ae4a76e6669c71114ce86edd95c86db07ae2232818c24d9e4fc772b56e2e7431c3351d50af languageName: node linkType: hard From 9a2df66bc481f2028aac15f65653df92c5daeccd Mon Sep 17 00:00:00 2001 From: Anukrati Agrawal Date: Wed, 26 Aug 2026 16:52:00 -0700 Subject: [PATCH 2/3] Align Fabric sample app dependencies Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 272e5076-5e5a-4139-8412-8b4e7f59f370 --- packages/sample-app-fabric/package.json | 2 +- yarn.lock | 16 +--------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index 09b60ed45c7..2db97cb2483 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@react-native/jest-preset": "0.86.0-nightly-20260408-8bac1df5a", - "@react-native/new-app-screen": "0.82.0-nightly-20250821-0ef21bf8a", + "@react-native/new-app-screen": "0.86.0-nightly-20260408-8bac1df5a", "@types/react": "^19.1.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", diff --git a/yarn.lock b/yarn.lock index b7abb9c6d57..eb5f13625c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4635,20 +4635,6 @@ __metadata: languageName: unknown linkType: soft -"@react-native/new-app-screen@npm:0.82.0-nightly-20250821-0ef21bf8a": - version: 0.82.0-nightly-20250821-0ef21bf8a - resolution: "@react-native/new-app-screen@npm:0.82.0-nightly-20250821-0ef21bf8a" - peerDependencies: - "@types/react": ^19.1.0 - react: "*" - react-native: "*" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/eb90b84ce0138be457c1afdfc8c7d4f71386bb682c10040df3d78a15c803b671d9c2e4cd8077e554421a53b332d71b2626c68dd4bc0ae56086efc76b25965ee9 - languageName: node - linkType: hard - "@react-native/new-app-screen@npm:0.86.0-nightly-20260408-8bac1df5a": version: 0.86.0-nightly-20260408-8bac1df5a resolution: "@react-native/new-app-screen@npm:0.86.0-nightly-20260408-8bac1df5a" @@ -5295,7 +5281,7 @@ __metadata: "@react-native-community/cli": "npm:20.0.0" "@react-native/jest-preset": "npm:0.86.0-nightly-20260408-8bac1df5a" "@react-native/metro-config": "npm:0.86.0-nightly-20260408-8bac1df5a" - "@react-native/new-app-screen": "npm:0.82.0-nightly-20250821-0ef21bf8a" + "@react-native/new-app-screen": "npm:0.86.0-nightly-20260408-8bac1df5a" "@rnw-scripts/babel-node-config": "npm:2.3.3" "@rnw-scripts/babel-react-native-config": "npm:0.0.0" "@rnw-scripts/eslint-config": "npm:1.2.38" From 1c38b0c2e5e4a38450d56fdeb3e34695c37148e5 Mon Sep 17 00:00:00 2001 From: Anukrati Agrawal Date: Thu, 27 Aug 2026 15:38:04 -0700 Subject: [PATCH 3/3] Fix FlatList E2E render race Wait for the filtered FlatList to finish its asynchronous header transition before capturing the visual tree snapshot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 272e5076-5e5a-4139-8412-8b4e7f59f370 --- .../test/FlatListComponentTest.test.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/e2e-test-app-fabric/test/FlatListComponentTest.test.ts b/packages/e2e-test-app-fabric/test/FlatListComponentTest.test.ts index 9a9dff7eb50..41d27c7fbb2 100644 --- a/packages/e2e-test-app-fabric/test/FlatListComponentTest.test.ts +++ b/packages/e2e-test-app-fabric/test/FlatListComponentTest.test.ts @@ -123,7 +123,22 @@ describe('FlatList Tests', () => { await searchBoxBasic('555'); const component = await app.findElementByTestID('flatlist-basic'); await component.waitForDisplayed({timeout: 5000}); - const dump = await dumpVisualTree('flatlist-basic'); + let dump = await dumpVisualTree('flatlist-basic'); + await app.waitUntil( + async () => { + dump = await dumpVisualTree('flatlist-basic'); + const automationTree = JSON.stringify(dump['Automation Tree']); + return ( + automationTree.includes('Item 555 -') && + !automationTree.includes('LIST HEADER') + ); + }, + { + interval: 250, + timeout: 20000, + timeoutMsg: 'Filtered FlatList did not finish rendering.', + }, + ); expect(normalizeFlatListRows(dump['Visual Tree'])).toBe(1); expect(dump).toMatchSnapshot(); });