diff --git a/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json b/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json new file mode 100644 index 00000000000..07545cb0452 --- /dev/null +++ b/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "@office-iss/react-native-win32", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json b/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json new file mode 100644 index 00000000000..18d33915c17 --- /dev/null +++ b/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "@react-native-windows/automation-channel", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json b/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json new file mode 100644 index 00000000000..73890c67032 --- /dev/null +++ b/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "react-native-windows", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index cabcb17484a..7fa4e6e7910 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "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": "8cd219abae140e98f9578432954fc9ef62421308" + "baseHash": "aeb0275507e7c508cdf7c2ceec49f9e95ef4e1ec" } ] } \ 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 e55d1a91bad..ce06785812f 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -19,7 +19,7 @@ "peerDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.305", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc" + "react-native": "0.83.0-nightly-20250917-18cb4edfa" }, "devDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.305", @@ -30,11 +30,11 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "typescript": "5.0.4" }, "engines": { "node": ">= 22" } -} +} \ No newline at end of file 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 032bd9fe6d5..c951141a754 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 @@ -364,6 +364,16 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/TurboModule/TurboCxxModuleExample'), }, + // 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); diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index 1f7153bd66d..5da300893c1 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -175,4 +175,4 @@ untyped-import untyped-type-import [version] -^0.280.0 +^0.281.0 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 08a01083799..5d1ee64d783 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,19 +7,19 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "c8bd25d4aa75328a2484c5c7b0b768c188a50b52" + "baseHash": "8a6739338afdae4cbcfad614e33e66ae2948f497" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "88aa62f2d86a810631bcbc871f45c28c53fceec7" + "baseHash": "02a8ea6efd164de036681159f18135cc3393cb21" }, { "type": "platform", @@ -394,7 +394,7 @@ "type": "patch", "file": "src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js", "baseFile": "packages/react-native/Libraries/Renderer/shims/ReactNativeTypes.js", - "baseHash": "9e91759d01c9a6d459c5781b357533f4ac8727a7", + "baseHash": "333afc05f5a42a5321196f5f7a14d14c8fd5dd0f", "issue": 0 }, { @@ -431,7 +431,7 @@ "type": "derived", "file": "src-win/Libraries/Text/TextNativeComponent.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js", - "baseHash": "259a625b5f7cf3a70ecd4af6388d82d47f446e50", + "baseHash": "56a99244e10bd1833a3d048f2476c4500f59202d", "issue": 7074 }, { diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index e46eee49b9f..54b1a89b8a4 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -30,13 +30,13 @@ "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/codegen": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/community-cli-plugin": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/gradle-plugin": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/js-polyfills": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/normalize-colors": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/virtualized-lists": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/assets-registry": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/codegen": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/community-cli-plugin": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/gradle-plugin": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/js-polyfills": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/normalize-colors": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/virtualized-lists": "0.83.0-nightly-20250917-18cb4edfa", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -72,7 +72,7 @@ "devDependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/metro-config": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/metro-config": "0.83.0-nightly-20250917-18cb4edfa", "@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", @@ -83,19 +83,19 @@ "@types/prop-types": "15.7.1", "@types/react": "^19.0.0", "eslint": "^8.19.0", - "flow-bin": "^0.280.0", + "flow-bin": "^0.281.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "typescript": "5.0.4" }, "peerDependencies": { "@types/react": "^19.1.1", "react": "^19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc" + "react-native": "0.83.0-nightly-20250917-18cb4edfa" }, "beachball": { "defaultNpmTag": "canary", @@ -112,4 +112,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file 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 dcde270eca5..44b487cc854 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 @@ -646,9 +646,9 @@ function InternalTextInput(props: TextInputProps): React.Node { const {onBlur, onFocus, ...eventHandlers} = usePressability(config); const eventPhase = Object.freeze({Capturing: 1, Bubbling: 3}); const _keyDown = (event: KeyEvent) => { - if (props.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyDownEvents) { + const keyDownEvents = props.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -665,9 +665,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyUp = (event: KeyEvent) => { - if (props.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyUpEvents) { + const keyUpEvents = props.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -684,9 +684,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyDownCapture = (event: KeyEvent) => { - if (props.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyDownEvents) { + const keyDownEvents = props.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -703,9 +703,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyUpCapture = (event: KeyEvent) => { - if (props.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyUpEvents) { + const keyUpEvents = props.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js index 4907407ab30..6446a169da4 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js @@ -112,9 +112,9 @@ const View: component( : undefined; const _keyDown = (event: KeyEvent) => { - if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyDownEvents) { + const keyDownEvents = otherProps.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -131,9 +131,9 @@ const View: component( }; const _keyUp = (event: KeyEvent) => { - if (otherProps.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyUpEvents) { + const keyUpEvents = otherProps.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -150,9 +150,9 @@ const View: component( }; const _keyDownCapture = (event: KeyEvent) => { - if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyDownEvents) { + const keyDownEvents = otherProps.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -169,9 +169,9 @@ const View: component( }; const _keyUpCapture = (event: KeyEvent) => { - if (otherProps.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyUpEvents) { + const keyUpEvents = otherProps.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -188,11 +188,13 @@ const View: component( }; // [Windows - // $FlowFixMe - children typing - const childrenWithImportantForAccessibility = children => { + const childrenWithImportantForAccessibility = ( + children: React.Node, + ): React.Node => { return React.Children.map(children, child => { if (React.isValidElement(child)) { // $FlowFixMe[incompatible-use] + // $FlowFixMe[prop-missing] if (child.props.children) { // $FlowFixMe[incompatible-call] - React.Children.map types child as mixed // $FlowFixMe[incompatible-type] diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js index 12768b498b1..69e1e0dbd36 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js @@ -603,9 +603,9 @@ export default class Pressability { this._isKeyDown ) { const {onPressOut, onPress} = this._config; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressOut && onPressOut(event); - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPress && onPress(event); } // Native windows app clears the key pressed state when another key press interrupts the current @@ -623,7 +623,7 @@ export default class Pressability { ) { const {onPressIn} = this._config; this._isKeyDown = true; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressIn && onPressIn(event); } }, @@ -788,8 +788,8 @@ export default class Pressability { } // [Win32] - // $FlowFixMe - button typing - _isDefaultPressButton(button): boolean { + // $FlowFixMe[unclear-type] - button typing + _isDefaultPressButton(button: any): boolean { return !button; // Treat 0 or undefined as default press } diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js index 6e41e4fdefa..ec739cdb348 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js @@ -101,22 +101,22 @@ const UIManagerJS: UIManagerJSInterface = { for (const propName of Object.getOwnPropertyNames( Object.getPrototypeOf(NativeUIManager), )) { - // $FlowFixMe + // $FlowFixMe[incompatible-type] UIManagerJS[propName] = NativeUIManager[propName]; } // Windows] -/* $FlowFixMe(>=0.123.0 site=react_native_fb) This comment suppresses an error +/* $FlowFixMe[cannot-write] (>=0.123.0 site=react_native_fb) This comment suppresses an error * found when Flow v0.123.0 was deployed. To see the error, delete this comment * and run Flow. */ //const UIManagerJS = { // ...NativeUIManager, -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.getConstants = getConstants; // }, -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.getViewManagerConfig = getViewManagerConfig; -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.hasViewManagerConfig = (viewManagerName: string) => getViewManagerConfig(viewManagerName) != null; @@ -130,7 +130,7 @@ UIManagerJS.hasViewManagerConfig = (viewManagerName: string) => // getViewManagerConfig is implemented on the JSI object, so we don't // need to hook this unless we are running in webdebugger if (!global.nativeCallSyncHook) - // $FlowFixMe + // $FlowFixMe[prop-missing] NativeUIManager.getViewManagerConfig = UIManagerJS.getViewManagerConfig; function lazifyViewManagerConfig(viewName: string) { @@ -199,7 +199,7 @@ if (!global.nativeCallSyncHook) { `Accessing view manager configs directly off UIManager via UIManager['${viewManagerName}'] ` + `is no longer supported. Use UIManager.getViewManagerConfig('${viewManagerName}') instead.`, ); - // $FlowFixMe + // $FlowFixMe[incompatible-return] return UIManagerJS.getViewManagerConfig(viewManagerName); }, }); diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js index d17feb9416d..ee6ae134cac 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js @@ -7,7 +7,7 @@ * @noformat * @nolint * @flow strict - * @generated SignedSource<> + * @generated SignedSource<> */ import type { @@ -139,6 +139,7 @@ export type RenderRootOptions = { error: mixed, errorInfo: {+componentStack?: ?string}, ) => void, + onDefaultTransitionIndicator?: () => void | (() => void), }; /** diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js index 5ff2186fb6b..72919710df1 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 @@ -99,6 +99,16 @@ const virtualTextViewConfig = { uiViewClassName: 'RCTVirtualText', }; +/** + * `NativeText` is an internal React Native host component, and is exported to + * provide lower-level access for libraries. + * + * @warning `` provides no semver guarantees and is not + * intended to be used in app code. Please use + * [``](https://reactnative.dev/docs/text) instead. + */ +// 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', () => /* $FlowFixMe[incompatible-type] Natural Inference rollout. See diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js index 8bfa88ac68d..171b8029677 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js @@ -22,14 +22,14 @@ class FocusManager { if (ref) { if (setWindowFocus) { UIManager.dispatchViewManagerCommand( - // $FlowIgnoreMe[incompatible-call] + // $FlowFixMe[incompatible-type] findNodeHandle(ref), UIManager.getViewManagerConfig('RCTView').Commands.aggressivefocus, [], ); } else { UIManager.dispatchViewManagerCommand( - // $FlowIgnoreMe[incompatible-call] + // $FlowFixMe[incompatible-type] findNodeHandle(ref), UIManager.getViewManagerConfig('RCTView').Commands.politefocus, [], 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 a7fdd26391f..27a0dfed1aa 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 @@ -71,6 +71,8 @@ import typeof VirtualizedList from './Libraries/Lists/VirtualizedList'; import typeof VirtualizedSectionList from './Libraries/Lists/VirtualizedSectionList'; import typeof LogBox from './Libraries/LogBox/LogBox'; import typeof Modal from './Libraries/Modal/Modal'; +import typeof {NativeText as unstable_NativeText} from './Libraries/Text/TextNativeComponent'; +import typeof unstable_NativeView from './Libraries/Components/View/ViewNativeComponent'; // $FlowFixMe[invalid-exported-annotation] import typeof NativeDialogManagerAndroid from './Libraries/NativeModules/specs/NativeDialogManagerAndroid'; import typeof * as NativeComponentRegistry from './Libraries/NativeComponent/NativeComponentRegistry'; @@ -154,6 +156,12 @@ module.exports = { get Modal(): Modal { return require('./Libraries/Modal/Modal').default; }, + get unstable_NativeText(): unstable_NativeText { + return require('./Libraries/Text/TextNativeComponent').NativeText; + }, + get unstable_NativeView(): unstable_NativeView { + return require('./Libraries/Components/View/ViewNativeComponent').default; + }, get Pressable(): Pressable { return require('./Libraries/Components/Pressable/Pressable').default; }, diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index 801fa39548b..44231a507aa 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -19,6 +19,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", + "minimatch": "^10.0.3", "jsonrpc-lite": "^2.2.0" }, "devDependencies": { @@ -32,7 +33,7 @@ "just-scripts": "^1.3.2", "prettier": "2.8.8", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" }, @@ -56,4 +57,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 19a2a15dc7e..a95ec25aa84 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "copy", @@ -43,7 +43,7 @@ "type": "patch", "file": "src/js/examples/FlatList/BaseFlatListExample.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/BaseFlatListExample.js", - "baseHash": "7a516e491b4cbe22678baf899dfe855567468a6f", + "baseHash": "6a140eb7fd8961bbee46fbe6af9d592c0fcf5a2b", "issue": 12869 }, { @@ -156,7 +156,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.windows.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "8cd219abae140e98f9578432954fc9ef62421308" + "baseHash": "aeb0275507e7c508cdf7c2ceec49f9e95ef4e1ec" } ] } \ 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 51192239190..20b90133b51 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -19,12 +19,12 @@ "peerDependencies": { "@react-native-picker/picker": "2.11.0", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-windows": "^0.0.0-canary.1031", "react-native-xaml": "^0.0.80" }, "devDependencies": { - "@react-native/new-app-screen": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/new-app-screen": "0.83.0-nightly-20250917-18cb4edfa", "@react-native/tester": "0.82.0-main", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", @@ -33,7 +33,7 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" @@ -41,4 +41,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js index cc6d7ba26e4..a31cc7ca308 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js @@ -68,7 +68,7 @@ type Props = { }; const BaseFlatListExample: component( - ref: React.RefSetter>, + ref?: React.RefSetter>, ...props: Props ) = ({ref, ...props}: {ref: React.RefSetter>, ...Props}) => { return ( @@ -114,41 +114,23 @@ const ITEM_MARGIN = 8; export const ITEM_HEIGHT: number = ITEM_INNER_HEIGHT + ITEM_MARGIN * 2; const styles = StyleSheet.create({ + container: {flex: 1}, + header: { + backgroundColor: 'white', + fontSize: 32, + }, item: { backgroundColor: 'pink', - paddingHorizontal: 20, height: ITEM_INNER_HEIGHT, - marginVertical: ITEM_MARGIN, justifyContent: 'center', + marginVertical: ITEM_MARGIN, + paddingHorizontal: 20, }, - header: { - fontSize: 32, - backgroundColor: 'white', - }, - title: { - fontSize: 24, - }, - titleContainer: { - position: 'absolute', - top: 45, - left: 0, - right: 0, - justifyContent: 'flex-end', - alignItems: 'center', - backgroundColor: 'gray', - zIndex: 1, - }, - titleText: { - fontSize: 24, - lineHeight: 44, - fontWeight: 'bold', + list: { + flex: 1, }, - testContainer: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - backgroundColor: '#f2f2f7ff', - height: 40, + offScreen: { + height: 1000, }, output: { fontSize: 12, @@ -159,11 +141,29 @@ const styles = StyleSheet.create({ separatorText: { fontSize: 10, }, - list: { - flex: 1, + testContainer: { + alignItems: 'center', + backgroundColor: '#f2f2f7ff', + flexDirection: 'row', + height: 40, + justifyContent: 'space-between', }, - container: {flex: 1}, - offScreen: { - height: 1000, + title: { + fontSize: 24, + }, + titleContainer: { + alignItems: 'center', + backgroundColor: 'gray', + justifyContent: 'flex-end', + left: 0, + position: 'absolute', + right: 0, + top: 45, + zIndex: 1, + }, + titleText: { + fontSize: 24, + fontWeight: 'bold', + lineHeight: 44, }, }); 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 6095f578d71..b7f6b88df51 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 @@ -456,6 +456,16 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/TurboModule/TurboCxxModuleExample'), }, + // 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); diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index be46ac1fa01..d8de4765538 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "8b94d93c1a98029715186bcb5286ea56beae0ed0" + "baseHash": "2f4eded3ff0e23b55edcbcebb60857803796f5a4" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index b0cd6bf5291..acbb0c4fe8b 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -46,13 +46,17 @@ "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/preset-env": "^7.25.3", "@babel/preset-flow": "^7.24.7", + "@electron/packager": "^18.3.6", + "@expo/spawn-async": "^1.7.2", "@jest/create-cache-key-function": "^29.7.0", "@microsoft/api-extractor": "^7.52.2", - "@react-native/metro-babel-transformer": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/metro-config": "0.82.0-nightly-20250902-9731e8ebc", + "@octokit/rest": "^22.0.0", + "@react-native/metro-babel-transformer": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/metro-config": "0.83.0-nightly-20250917-18cb4edfa", "@tsconfig/node22": "22.0.2", "@types/react": "^19.1.0", "@typescript-eslint/parser": "^8.36.0", + "ansi-regex": "^5.0.0", "ansi-styles": "^4.2.1", "babel-plugin-minify-dead-code-elimination": "^0.5.2", "babel-plugin-syntax-hermes-parser": "0.32.0", @@ -73,8 +77,9 @@ "eslint-plugin-react-native": "^4.0.0", "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", + "fb-dotslash": "0.5.8", "flow-api-translator": "0.32.0", - "flow-bin": "^0.280.0", + "flow-bin": "^0.281.0", "glob": "^7.1.1", "hermes-eslint": "0.32.0", "hermes-transform": "0.32.0", @@ -85,9 +90,10 @@ "jest-diff": "^29.7.0", "jest-junit": "^16.0.0", "jest-snapshot": "^29.7.0", + "jsonc-parser": "2.2.1", "markdownlint-cli2": "^0.17.2", "markdownlint-rule-relative-links": "^3.0.0", - "memfs": "^4.7.7", + "memfs": "^4.38.2", "metro-babel-register": "^0.83.1", "metro-memory-fs": "^0.82.4", "metro-transform-plugins": "^0.83.1", @@ -100,12 +106,12 @@ "react-test-renderer": "19.1.1", "rimraf": "^3.0.2", "shelljs": "^0.8.5", - "signedsource": "^1.0.0", + "signedsource": "^2.0.0", "supports-color": "^7.1.0", "temp-dir": "^2.0.0", "tinybench": "^4.1.0", "typescript": "5.8.3", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "resolutions": { "eslint-plugin-react-hooks": "6.1.0-canary-12bc60f5-20250613", diff --git a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js index 5e70b342aa4..693ebd66044 100644 --- a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js +++ b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js @@ -48,7 +48,6 @@ const Drawer = () => { return (