Skip to content

feat: merge 0.83-merge into main#2949

Merged
Saadnajmi merged 1400 commits into
mainfrom
0.83-merge
Jul 13, 2026
Merged

feat: merge 0.83-merge into main#2949
Saadnajmi merged 1400 commits into
mainfrom
0.83-merge

Conversation

@Saadnajmi

@Saadnajmi Saadnajmi commented Apr 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Merge up to the merge base of 0.83-stable (the first commit on the upstream 0.83-stable branch, a034841fd68), prepping this branch for the 0.83 release. For the cross-platform 0.83 changes (React 19.2, DevTools, Web Performance APIs, etc.), see the RN 0.83 release notes.

New for react-native-macos since 0.81:

Build & distribution

SwiftUI & RCTUIKit

Fabric / New Architecture on macOS

Hermes, autolinking & CI

Test Plan

CI green: JavaScript Tests (Jest/Flow/ESLint/Prettier), RNTester static builds (iOS/macOS/visionOS), and Prebuild macOS Core. Full RNTester-macOS static build also verified locally (BUILD SUCCEEDED).

rozele and others added 30 commits October 2, 2025 21:20
Summary:
Pull Request resolved: react#54044

In rare cases, there may be a vertical ScrollView nested inside another vertical ScrollView. In these cases, when the requestChildFocus method is called, we may attempt to bring the entire focused child into view. However, we really only want to bring the entire nested ScrollView into view.

## Changelog

[Android][Fixed] Focused scroll into view behaviors for nested vertical scroll views

Reviewed By: bvanderhoof

Differential Revision: D83804043

fbshipit-source-id: 8df8f637e7f908cc283f55c0d78ee03ed3bb9117
Summary:
Pull Request resolved: react#54039

Adding toDynamic conversion to `ColorStop` and `ValueUnit` structs which are being used by the linear and radial gradient data structures.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D83788006

fbshipit-source-id: 1ec0300ac4f17b65b6896d4d2c131eb05a059a22
Summary:
Pull Request resolved: react#54040

Implement toDynamic conversion of the LinearGradient following the parse logic as described here: https://www.internalfb.com/code/fbsource/[5fa7eb2b733a]/xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/LinearGradient.kt?lines=24-76

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D83788005

fbshipit-source-id: 9114451b12e31ad86abde54dbe2c8819a304e777
Summary:
Pull Request resolved: react#54041

Implement toDynamic conversion of the RadialGradient following the parse logic as described here: https://www.internalfb.com/code/fbsource/[28de0c66daab]/xplat/js/react-native-github/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/RadialGradient.kt?lines=33-129

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D83788007

fbshipit-source-id: 305e6f5011f16103a559132e61b6d4eae24cc137
Summary:
Pull Request resolved: react#54042

Update the View component props to diff the `backgroundImage` property and assign the value to `experimental_backgroundImage` which maps to the `backgroundImage` property on the Android `ReactViewManager`.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D83788008

fbshipit-source-id: 5f9d93403af483c9494d2782aedad604cbb7cbbc
…renderer/components/progressbar/android/react/renderer/components/progressbar/AndroidProgressBarShadowNode.cpp (react#54054)

Summary: Pull Request resolved: react#54054

Reviewed By: rshest

Differential Revision: D83735540

fbshipit-source-id: e4284fdb76344584a983cfd242c2463912f3a6bf
Summary:
Pull Request resolved: react#54047

TSIA

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D83825727

fbshipit-source-id: a4a8ffc38571596985ae2687142dbc8a974be39c
Summary:
Pull Request resolved: react#54049

Changelog: [Internal]

Adds `JsiIntegrationTest`-based tests for the C++ layer responsible for handling the CDP `Network` domain. The tests use `NetworkReporter` to mimic the behaviour of a React Native platform that is generating network events.

NOTE: There are **significant problems** with the `NetworkReporter` / `NetworkHandler` singleton design: cross-Host and cross-Instance data pollution/corruption, inability to inspect multiple Hosts at once, inconsistency between the singleton's state and the CDP session's state, etc. The singletons similarly lack any kind of mechanism for test isolation (e.g. methods for clearing state between tests). As we iteratively fix these problems, the tests will require updating (and we'll be able to write stricter tests to cover the fixes).

Reviewed By: huntie

Differential Revision: D83746505

fbshipit-source-id: 7ee3c68e67f0d29587cbfafa98cf107d27065ffc
Summary:
Pull Request resolved: react#54036

We are migrating away from the older V1 macros to the V2 macros, which have better code-stripped functionality and less business logic embedded in the API.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D83760301

fbshipit-source-id: b6c9ea155ebe22d6d4ce023a1dbb2cfd52fb8394
Summary:
Pull Request resolved: react#53983

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D83525759

fbshipit-source-id: 0a223a54339496e4e85ecb173b3c7e0012c4fba8
Summary:
This change remove some unnecessary logs and improve the logging functions for the prebuilds

bypass-github-export-checks

## Changelog:

[IOS] [CHANGED] - Updated logging functions for prebuilds

Pull Request resolved: react#53976

Test Plan:
Run:
```
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
```

Reviewed By: christophpurrer

Differential Revision: D83481709

Pulled By: cipolleschi

fbshipit-source-id: bad358c6e6abfcb1568344e5161109dff7ee06ab
Summary:
Pull Request resolved: react#54031

This commit updates the cocoapods source for RNDependencies so that the source for the package is the locally downloaded file so we don't download twice!

## Changelog:

[IOS] [FIXED] - Update the `source`property to avoid multiple downloads

Test Plan:
Run:
```
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
```

Multiple times and observe that the dependencies are not downloaded multiple times.

Reviewed By: christophpurrer

Differential Revision: D83753188

Pulled By: cipolleschi

fbshipit-source-id: e3fedca921b0ff9ba10ec3e5a7ba18dfbdffc3ba
…ct#54032)

Summary:
Pull Request resolved: react#54032

This commit adds building blocks to support the symbolication of the XCFrameworks on request.

Symbol files are big and only needed if you need to debug React Native itself - f.ex. if you are a framework developer like Expo.

This change introduces some helper function that are needed to handle the dSYMS:
- `processDSYMs` the main function that unzip the symbols and prepare the framework for them
- `remap_sourcemaps_for_symbols` a support function that creates a mapping symbol -> file so that the debug can interpret them properly
- `generate_plist_content` a support function that generates the plist with all the mappings

These functions are used in the next commit of the stack.

## Changelog:

[Internal] - Added building blocks to support symbolication

Test Plan:
These functions are used in the next commit.
We split the commit to simplify the review. See the Test plan of the next commit to test them.

Reviewed By: cortinico

Differential Revision: D83753189

Pulled By: cipolleschi

fbshipit-source-id: 5d8027f5393a4e5a11f1b736c9901d40e7c5139b
…#54033)

Summary:
Pull Request resolved: react#54033

This commit adds support for symbolication of the XCFrameworks on request.

Symbol files are big and only needed if you need to debug React Native itself - f.ex. if you are a framework developer like Expo.

Symbolication can be performed by setting the `RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1` environment variable. This will cause the `ReactNativeCoreUtils` class to download symbol files and symbolicate the XFrameworks by doing the following:

- After downloading the requested React.XCFramework the symbols will also be downloaded and places in the artifacts folder.
- The XCFrameworks will be expanded and the folders in the symbol archive will be extracted into the XCFramework before it is zipped up again.

<img width="400" alt="image" src="https://github.com/user-attachments/assets/ec8dd2e1-c7f8-4d5f-a3b6-b8ffbb678c95" />

## Changelog:

[IOS] [FIXED] - Added support for symbolication of precompiled React.xcframework

Test Plan:
```
RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1 RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
```

Remember to clean (remove the Pods directory) before turning on/off.

Reviewed By: christophpurrer

Differential Revision: D83753187

Pulled By: cipolleschi

fbshipit-source-id: f1522e1befdea99fb8c65695322ea3ed68e6caed
Summary:
Pull Request resolved: react#54055

Changelog: [Internal]

TSIA

Reviewed By: robhogan

Differential Revision: D83841197

fbshipit-source-id: e263f4098e09d0789abc1c33ee7ca4dac44600b2
Summary:
When using gnu coreutils, installation of ReactNativeDependenices on iOS fails at compile time with errors like in the following issue (in the Expo repo):

expo/expo#38992

This is caused by a missing `.` in the end of the path name that the built-in MacOS cp command handles well, but that will create an extra Headers folder when using cp from gnu coreutils.

This commit fixes this by adding the missing `.`

## Changelog:

[IOS] [FIXED] - Fixed issue when using gnu coreutils cp command when using precompiled binaries causing compilation error

Pull Request resolved: react#54063

Test Plan:
- Verify that you're running gnu coreutils (`cp --version`)
- Create new expo app `npx create-expo-app`
- Build on iOS - should error without this fix, should work with the fix.

Reviewed By: christophpurrer

Differential Revision: D83964083

Pulled By: javache

fbshipit-source-id: 46dc074ca9b7fc97fa5a37ef48d68a895e3310ff
…t-native-github/packages [B] (react#54003)

Summary: Pull Request resolved: react#54003

Reviewed By: javache

Differential Revision: D83622358

fbshipit-source-id: e0b4bdd65d8af9ec0e25c28a2e02371d52154c2d
Summary:
Follow up of react#52999 so that users can import `NativeComponentRegistry` from react-native when using typescript

On 0.82 when users try to import `NativeComponentRegistry` without using the Strict TypeScript API they get:
```
Module '"react-native"' has no exported member 'NativeComponentRegistry'.ts(2305)
```

## Changelog:

[GENERAL] [ADDED] - Expose NativeComponentRegistry API to index.d.ts

Pull Request resolved: react#54043

Test Plan: CI should be green

Reviewed By: christophpurrer

Differential Revision: D83830024

Pulled By: huntie

fbshipit-source-id: e63258b30aed4b33b2881656df0ad88a4a7d670a
…ative-github/packages (react#54065)

Summary: Pull Request resolved: react#54065

Reviewed By: javache

Differential Revision: D83817146

fbshipit-source-id: 36bafe7d363d7978e2d74a98aee444af9f538de4
Summary:
Pull Request resolved: react#53908

Changelog: [Internal]
Add an example to show how Platform Color can react to changes in appearance.
This currently works on iOS for all colors, but for Android we need to "reset" desired tree with `key`.

Reviewed By: zeyap

Differential Revision: D82751014

fbshipit-source-id: 3e4b2b3ddff8c003ca835d6f26dbf9f7e82d413d
…ain/java/com/facebook/react/runtime/BridgelessReactContext.kt (react#54071)

Summary: Pull Request resolved: react#54071

Reviewed By: ianlevesque

Differential Revision: D83924405

fbshipit-source-id: a1bc441cb818ccde8038ea9a3a3ce20f4a4571db
Summary:
Pull Request resolved: react#54062

Renaming every V2 tracing macro so that it no longer has `_V2` suffixed. This diff completes the migration of the hz_tracing V1->V2 API.

This is a very large diff but is comprised of mostly mechanical changes. Most of these files were edited using `find` and `sed`, specifically:
`find . -type f \( -name "*.h" -o -name "*.cpp" \) -exec sed -i 's/HZT_\(.*\)_V2/HZT_\1/g' {} +`.

Since this is just a rename, no difference in functionality is expected.

Changelog: [Internal]

Differential Revision: D83808657

fbshipit-source-id: 64effdf701b1ff600185abfb737f9c0fa2250ddf
Summary:
Pull Request resolved: react#54068

Changelog: [Internal]

Adds a `SessionState::isNetworkDomainEnabled` bit, managed in `HostAgent`, to align with other domains. Network support is still gated behind feature flags as before.

Reviewed By: hoxyq

Differential Revision: D83847357

fbshipit-source-id: 8f94c803d04256a7e41503f2a690e97b91e3ed5e
…mitHooks (react#53862)

Summary:
Pull Request resolved: react#53862

Recently, we observed a `use-after-free race condition` where the ImageFetcher object was destroyed while it was still registered as a UIManagerCommitHook.

The crash occurred in `std::vector::size()` at line 635 when accessing corrupted memory.

Changelog: [Internal]

Reviewed By: lenaic

Differential Revision: D82846245

fbshipit-source-id: fe0d9156ec6bc004339ed987bb5937699ebdf23b
Summary:
Pull Request resolved: react#53992

This change descouple the Static Module registration from the Disable Legacy arch macro

## Changelog:
[Internal] -

Reviewed By: RSNara

Differential Revision: D83554091

fbshipit-source-id: 515aecc00428281a95441954513ccf21ff180f6f
Summary:
Pull Request resolved: react#54046

Changelog: [Internal]

Per documentation the base class to extend from is the non `JSI` one:

https://reactnative.dev/docs/the-new-architecture/pure-cxx-modules#3-write-the-native-code

Reviewed By: rubennorte

Differential Revision: D83815509

fbshipit-source-id: b05b80d2c6102bf27905411a299ec09e16bb8c25
Summary:
Pull Request resolved: react#54008

## Changelog:

[Internal] [Added] - create feature flag responderTerminateOnScrollAndroid

Reviewed By: javache

Differential Revision: D83584280

fbshipit-source-id: aa9633d61c0d2cc6af7da839c065f20da698995b
Summary:
Pull Request resolved: react#54057

## Changelog:

[General] [Changed] - Move using declarations into AnimationBackend class

names like `facebook::react::Callback` is a bit too generic and it'll be included in the scope whenever AnimationBackend.h is included in; `StartOnRenderCallback` already exists in c++ native animated (there we also nest the `using`s under class)

Reviewed By: sammy-SC

Differential Revision: D83867098

fbshipit-source-id: a50144bbbd1b441e3ef7b2884a19b091c3190c44
…value (react#54077)

Summary:
Pull Request resolved: react#54077

## Changelog:

[Internal] [Changed] - Extract helper function from AnimatedColor.js to process input color value

Reviewed By: rozele

Differential Revision: D84062952

fbshipit-source-id: 2005dc33d7fd6928ba2638d0d99a2e5faa8448d8
Test Plan:
## Changelog: [INTERNAL]

Pull Request resolved: react#54088
Imported from GitHub, without a `Test Plan:` line.

Reviewed By: fabriziocucci

Differential Revision: D84105761

Pulled By: vzaidman

fbshipit-source-id: 0f3ad014f04b02d91cbb2fb7951d7a57d27df963
gabrieldonadel and others added 11 commits July 13, 2026 08:22
## Summary
Replaces the hardcoded `'react-native-macos'` string at
`packages/react-native/react-native.config.js:188` with the
`REACT_NATIVE` constant from
`scripts/codegen/generate-artifacts-executor/constants.js`. The constant
already reads
`packageJson.name` so the resolved value is unchanged on this fork, but
the indirection means future package-name moves (workspace renames,
internal rebrand, etc.) don't require remembering this one site.

Closes the **"Codegen package name constant"** item on the Road to 0.83
tracking issue (#2901).

## Test Plan

- `pod install` in `packages/rn-tester` runs the codegen step end-to-end
and resolves `npmPackageName` without errors (validated locally on
0.83-merge).
- No behavior change for the current package name `react-native-macos`.
)

## Summary

`packages/react-native/package.json` lists three macOS-fork podspecs in
the `files` array — `React-Core.podspec`, `React-Core-prebuilt.podspec`,
`React.podspec` — but **omits `React-RCTUIKit.podspec`**, which was
introduced by #2847
(RCTUIKit module-ification, merged March 2026). As a result the file
lives in the source tree but is excluded from the npm publish.

Any downstream consumer of a published \`react-native-macos@0.83\` hits
this immediately:

\`\`\`
[!] No podspec found for \`React-RCTUIKit\` in
\`../node_modules/react-native-macos/\`
\`\`\`

\`pod install\` fails before reaching any actual install step.

Discovered while running
[react-native-test-app](https://github.com/microsoft/react-native-test-app)'s
\`example-macos\` against the fork's \`0.83-merge\` via a local
Verdaccio registry — the file shows up in the source tree
(\`packages/react-native/React-RCTUIKit.podspec\`) but never lands in
\`node_modules/react-native-macos/\` after install.

Fix is a one-line addition to the \`files\` array, right next to the
other root-level podspecs. Closes the consumer-install gap for any
downstream user (RNTA, Epistles, anyone else) once 0.83 ships to npm.

## Test Plan

- **Before:** \`npm pack\` on \`packages/react-native\` produces a
tarball without \`React-RCTUIKit.podspec\`. RNTA's \`example-macos\`
\`pod install\` fails with "No podspec found for React-RCTUIKit".
- **After:** \`npm pack\` includes the file; \`pod install\` resolves
the React-RCTUIKit pod from
\`../node_modules/react-native-macos/React-RCTUIKit.podspec\` and
continues. Validated locally with RNTA's \`example-macos\` building
cleanly through to a \`ReactTestApp.app\` artifact.

## Related

- #2847 — introduced \`React-RCTUIKit.podspec\` (and the corresponding
\`React-RCTUIKit\` pod dep in \`React-Core.podspec\`), but didn't update
the \`files\` array.
- #2958 — wires \`React-RCTUIKit\` into \`RCTSwiftUI.podspec\`; depends
on this podspec being available to consumers.
- #2901 — Road to 0.83 tracking issue (unblocks downstream consumers in
general).
…3-merge (#2960)

## Summary

The `RNTesterPods.xcodeproj/project.pbxproj` file is **missing from
`0.83-merge`** but exists on `main`. Without it, `pod install` fails
immediately on `0.83-merge` with:

[!] The plist file at path
/.../packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj doesn't
exist.

Which blocks any contributor from validating any PR against `0.83-merge`
via the RNTester pod-install path.

### Root cause (interaction between an ignore rule and the upstream
merge)

Both `main` and `0.83-merge` carry this rule in `.gitignore`:

/packages/rn-tester/**/*.xcodeproj

On `main`, `project.pbxproj` is tracked despite that rule — `gitignore`
does not affect files already in the index, and the file was originally
added before the rule existed (or via `-f`). On `0.83-merge`, the file
was dropped from the
tree at some point during the upstream-0.83 merge (likely via a `git rm`
resolving a conflicting hunk, or via a merge driver that touched the
.xcodeproj contents). Once it was out of the index, the existing ignore
rule prevented anyone
from `git add`ing it back through the normal path — the explicit `-f`
flag is required.

Verification via `gh api`:

- `main` tree contains
`packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj` (blob SHA
`90e6c295ce0ec461333aa96af37d8b0ceebe98dc`, 120,346 bytes).
- `0.83-merge` tree only contains
`packages/rn-tester/RNTesterPods.xcodeproj/xcshareddata/` (the scheme
files).
- The xcshareddata/ scheme files on `0.83-merge` reference
`RNTesterPods.xcodeproj` as their container, so the absence isn't an
intentional structural change.

  ### Fix

This PR restores the file verbatim from `main`'s blob `90e6c295…`
(force-added past the ignore rule). Once in the index, future operations
track it normally. The `.gitignore` rule is preserved unchanged — it
correctly excludes other
generated `.xcodeproj` outputs and only needed the one-time `-f` to
reseat this specific file.

The .pbxproj is structurally cross-compatible between `main` (RN 0.81.x
content) and `0.83-merge` (RN 0.83 content) — both branches share the
same target layout (`RNTester`, `RNTesterUnitTests`,
`RNTesterIntegrationTests`,
`RNTester-macOS`, `RNTester-macOSUnitTests`,
`RNTester-macOSIntegrationTests`, `RNTester-visionOS`). `pod install`
regenerates the workspace from this file + the Podfile, so any drift
between branches gets reconciled by the install step.

If maintainers have a preferred way to regenerate the pbxproj (script,
fresh `pod init` flow), this PR can be closed in favor of that. The
change is offered as the minimal unblock so contributors can resume
validation against
`0.83-merge`.

Indirectly unblocks the **"RNTester validation"** item on the Road to
0.83 tracking issue (#2901) — that item can't proceed until pod install
works on `0.83-merge`.

- **Before:** `pod install` in `packages/rn-tester` on `0.83-merge`
fails with `[!] The plist file at path .../project.pbxproj doesn't
exist.` Reproducible on any fresh `0.83-merge` checkout. `yarn
prepare-ios` hits the same error inside
 the cocoapods-runner subprocess.
- **After:** `pod install` in `packages/rn-tester` on `0.83-merge`
completes with `Pod installation complete! There are 86 dependencies
from the Podfile and 85 total pods installed.`
`RNTesterPods.xcworkspace/contents.xcworkspacedata` is
generated, all `Pods-RNTester*` xcconfig files are written,
hermes-engine script phases are wired. (Validated locally with HEAD =
current `0.83-merge` tip.)
- Remaining `[!] ... CLANG_CXX_LANGUAGE_STANDARD override` warnings are
pre-existing on `main` and unrelated to this restore.

## Related

- #2901 — Road to 0.83 tracking issue (this unblocks RNTester
validation)
- Upstream blob on \`main\`: SHA
\`90e6c295ce0ec461333aa96af37d8b0ceebe98dc\` (120,346 bytes)
## Summary:

Followup to #2958 ,
whose repo is still locked so we can't edit it.

Extend RCTUIKit support to SwiftUI

## Test Plan:

CI should pass
…3009)

## Summary

Supersedes #2964. Two small JS fixes from the 0.83 merge audit.

**`TouchableBounce.js`** — add the `onPress !== undefined` guard to the
macOS `focusable` check (matches upstream 0.83). A `TouchableBounce`
with no `onPress` is no longer Tab/VoiceOver focusable.

**`AccessibilityInfo.js`** — drop the macOS carve-outs in
`isBoldTextEnabled` and `isReduceTransparencyEnabled` so both use
upstream's android-first guard and fall through to native on macOS, like
their siblings (`isReduceMotionEnabled`, `isInvertColorsEnabled`):
- `isReduceTransparencyEnabled` now returns the real macOS "Reduce
Transparency" setting instead of a hardcoded `false` — the native side
already tracks and live-updates it.
- `isBoldTextEnabled` still returns `false` on macOS (no native value),
now with zero fork divergence.

Both methods now match upstream exactly, aside from the fork-wide
`NativeAccessibilityManagerApple` rename.

## Test plan

- macOS: `isReduceTransparencyEnabled` reflects the System Settings
toggle; `isBoldTextEnabled` stays `false`.
- `TouchableBounce` without `onPress` is not focusable.
- iOS / Android unchanged; no type changes.

Related: #2901.

Co-authored-by: Thiago Vinhas <thiago@vinhas.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
To aid in the merge

CI should pass

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…3012)

## Summary

Follow-up fix to #3006, which merged before we had CI testing (oops).
Turns out `@compatibility_alias` is not compatible with Swift, so we
can't use it. Furthermore, `RCTUIKit` can't have Swift sources as SPM
doesn't support mixed language modules yet. So for now, let's move the
Swift-only usecase out to RCTSwiftUI, the caller.

## Test Plan

Validated locally with Xcode 26.4.1:

- Clean `RCTSwiftUI-macOS` Pods target build → **BUILD SUCCEEDED**.
- Full `RNTester-macOS` app build → **BUILD SUCCEEDED**.
- SwiftPM prebuild (`node scripts/ios-prebuild.js -s` then `-b -p
macos`) now compiles `React_RCTUIKit`, `RCTSwiftUI` and
`RCTSwiftUIWrapper` with **no "no such module"** error (the previous
failure point).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Saadnajmi and others added 6 commits July 13, 2026 09:14
The `scripts/releases/__tests__/snapshot-utils.js` helper does
`require('invariant')`, but `invariant` was never declared in the root
workspace manifest. Under the old `nodeLinker: node-modules` (hoisted)
layout it resolved transitively, so the gap was invisible. After the
0.83 merge brought in `nodeLinker: pnpm` (#3010), the strict `.store/`
layout no longer hoists it, so Jest fails with "Cannot find module
'invariant'" and takes down the dotslash release-asset test suites
(12 tests across 2 suites).

Add `invariant@^2.2.4` (the version already used elsewhere in the tree)
to the root devDependencies and refresh the lockfile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
`findExternalLibraries` resolves each dependency's `package.json` to look
for `codegenConfig`. Facebook 0.83 added an `ERR_PACKAGE_PATH_NOT_EXPORTED`
fallback that searches `require.main.paths` for packages whose `exports`
block the `./package.json` subpath (e.g. `commander`,
`@react-native/new-app-screen`). Under Yarn's pnpm nodeLinker (#3010) those
packages live under `.store/` and aren't on `require.main.paths`, so the
fallback leaves `configFilePath` empty and the next `fs.readFileSync('')`
throws `ENOENT: open ''`. That aborts `generate-codegen-artifacts.js`,
which fails Podfile evaluation and takes down every RNTester / Prebuild
macOS Core build job in CI.

Guard the empty path and skip the dependency, matching the pre-0.83
behavior for otherwise-unresolvable deps (both triggering packages have no
`codegenConfig`, so nothing is lost). Verified locally: `pod install` for
RNTester now completes and codegen artifacts are generated.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
`RCTSwiftUIContainerView.swift` did `import React_RCTUIKit`, matching the
module name the podspec used before the 0.83 merge (`module_name
"React_RCTUIKit"`, `header_dir "React"`). After merging main, RCTUIKit was
relocated to `ReactApple/Libraries/RCTUIKit` (#2943) and its module was
renamed to `RCTUIKit` (podspec `module_name "RCTUIKit"`; Package.swift
`reactRCTUIKit = "RCTUIKit"`), with `<React/RCTUIKit.h>` now served via
React-Core forwarding headers. Dynamic-framework builds still resolved the
old name via the framework, but static-library builds could not find module
`React_RCTUIKit`, breaking every strict `Build RNTester / *, static` job:

    RCTSwiftUIContainerView.swift:9:8: error: Unable to find module
    dependency: 'React_RCTUIKit'

This lone Swift import was the only remaining reference to the pre-merge
module name. Align it with the merged tree's `RCTUIKit` module (used by both
CocoaPods and SwiftPM). Verified locally: `RCTSwiftUI-macOS` builds
(BUILD SUCCEEDED) against the static-library Pods project.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
`@react-native/fantom` imports `metro` and `metro-babel-transformer`
(e.g. `import type {RunServerResult} from 'metro'`) but never declared
them. Under the old hoisted node-modules layout they resolved to the
workspace's metro 0.83.x; under Yarn's pnpm nodeLinker (#3010) the
package instead resolves `metro` to 0.82.5 (pulled in transitively by the
unused `metro-memory-fs@^0.82.5`), which predates the `RunServerResult`
export, and cannot resolve `metro-babel-transformer` at all. Flow then
fails the JavaScript Tests job:

    globalTeardown.js: Cannot import `RunServerResult` ... no `RunServerResult`
      export in `metro`
    metro-babel-transformer.flow.js: Cannot resolve module
      `metro-babel-transformer`

Declare both at `^0.83.3` (matching the rest of the monorepo) so pnpm links
the correct versions. Verified locally: `yarn flow check` reports 0 errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tic builds

`RCTSwiftUIContainerViewWrapper.h` imported `<React/RCTUIKit.h>`, which
resolved directly when React-RCTUIKit used `header_dir "React"` before the
0.83 merge. After merging main's RCTUIKit relocation (#2943), React-RCTUIKit
uses `header_dir "RCTUIKit"` and `<React/RCTUIKit.h>` is only a React-Core
forwarding header. RCTSwiftUIWrapper depends on React-RCTUIKit (not
React-Core), so the forwarding header is out of scope and static-library
builds failed:

    RCTSwiftUIContainerViewWrapper.h:9:9: 'React/RCTUIKit.h' file not found
      (in target 'RCTSwiftUIWrapper-macOS')

Import the header directly from the React-RCTUIKit dependency
(`<RCTUIKit/RCTUIKit.h>`). Verified locally: `RCTSwiftUIWrapper-macOS`
builds (BUILD SUCCEEDED) against the static-library Pods project.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The root package.json pins `eslint-plugin-react-hooks` to
`6.1.0-canary-12bc60f5-20250613` via a `resolutions` entry (with a matching
`_justification`) so linting understands React 19's `component` syntax and
`use()` hook. That resolution was dropped while reconciling package.json
during the 0.83 merge, so the tree installed 5.2.0, which flags valid code:

    View.js: React Hook "use" cannot be called at the top level
    VirtualView.js: React Hook "useState" is called in function
      "createVirtualView" that is neither a React function component nor a
      custom React Hook function

Restore the resolution and its justification (matching main). Verified
locally: `yarn lint` passes with 0 errors and `yarn constraints` is clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Saadnajmi Saadnajmi marked this pull request as ready for review July 13, 2026 18:44
@Saadnajmi Saadnajmi requested a review from a team as a code owner July 13, 2026 18:45

@mganandraj mganandraj left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

test

React Native 0.83 removed the legacy architecture as a supported runtime
path — `RCTBridge` now throws on legacy-arch init and there is no opt-out.
The `oldarch` matrix jobs only ever compiled RNTester (CI never launches
the app), so they provided compile-only coverage of a runtime path that no
longer works.

Drop the architecture axis entirely (halving the matrix from 12 to 6 jobs),
hardcode `RCT_NEW_ARCH_ENABLED=1`, and simplify job names to
`<platform>, <linkage>`. New Architecture coverage is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Saadnajmi

Copy link
Copy Markdown
Collaborator Author

@microsoft-github-policy-service recheck

@Saadnajmi

Copy link
Copy Markdown
Collaborator Author

@Saadnajmi the command you issued was incorrect. Please try again.

Examples are:

@microsoft-github-policy-service agree

and

@microsoft-github-policy-service agree company="your company"

and yet, it rechecked. Yay!

@Saadnajmi Saadnajmi merged commit ef09dd7 into main Jul 13, 2026
55 checks passed
@Saadnajmi Saadnajmi deleted the 0.83-merge branch July 13, 2026 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.