Skip to content

feat: merge 0.83-merge into main - #2949

Merged
Saad Najmi (Saadnajmi) merged 1400 commits into
mainfrom
0.83-merge
Jul 13, 2026
Merged

feat: merge 0.83-merge into main#2949
Saad Najmi (Saadnajmi) merged 1400 commits into
mainfrom
0.83-merge

Conversation

@Saadnajmi

@SaadnajmiSaad Najmi (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).

Eric Rozell (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
## 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>
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
Saad Najmi (Saadnajmi) marked this pull request as ready for review July 13, 2026 18:44
@Saadnajmi
Saad Najmi (Saadnajmi) requested a review from a team as a code ownerJuly 13, 2026 18:45

@mganandrajAnandraj (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
CollaboratorAuthor

@microsoft-github-policy-service recheck

@Saadnajmi

Copy link
Copy Markdown
CollaboratorAuthor

Saad Najmi (@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
Saad Najmi (Saadnajmi) merged commit ef09dd7 into mainJul 13, 2026
55 checks passed
@Saadnajmi
Saad Najmi (Saadnajmi) deleted the 0.83-merge branch July 13, 2026 23:28
Sign up for freeto 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.

20 participants

@Saadnajmi@mganandraj@rozele@motiz88@lavenzg@chrfalch@gabrieldonadel@andrewdacenko@christophpurrer@cipolleschi@zeyap@vzaidman@philIip@sbuggay@mdvacca@javache@aialok@SamChou19815@cortinico@vineethkuttan