Skip to content

chore(0.83): sync 0.83.10 and backport RedBox 2.0 - #3022

Open
Saad Najmi (Saadnajmi) wants to merge 149 commits into
0.83-stablefrom
0.83/saadnajmi/merge-0.83.10
Open

Saad Najmi (Saadnajmi) wants to merge 149 commits into
0.83-stablefrom
0.83/saadnajmi/merge-0.83.10

Conversation

@Saadnajmi

@Saadnajmi Saad Najmi (Saadnajmi) commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Release stack — current coordination

Tracker: React Native macOS 0.83–0.87: PR stack and release tracker

  • Position: 2 of 18.
  • Current review base: 0.83-stable. Retarget dependent PRs as their predecessors merge, following the tracker.
  • Dependencies / release order: shared fixes into main precede this release in the tracker.
  • Next step: Publish and verify RNM 0.83.0 with RN 0.83.10; then continue with feat: merge 0.84-merge into main #3030.
  • Submitted head: 3ccba22de3c8305b87d86dd6e7f311df289cf53f.

Validation status

The 0.83 candidate passed local consumer, type/API, and scoped native validation. Fresh CI and review remain required.

The five final release consumers passed 56 local checks; all ten approved tarball hashes and five read-only publication previews passed.
These results retain their recorded source-tree scope. Each PR's current Checks tab is authoritative for remote CI.
The 2026-09-21 synchronization preserved the previous head under backup/pre-release-sync-20260921-1447/<original-branch> in its source repository.

This coordination section supersedes earlier release-order and status notes below. The existing implementation description follows.


Summary

This is the single 0.83 stable-line PR for both the upstream sync and the effective RedBox 2.0/AppKit backport. It supersedes #3027.

Provenance

The four additive commits are stacked on the previously reviewed #3022 head:

  1. restore the extracted upstream RedBox 2.0 CoreModules files
  2. apply the focused AppKit V1 adaptation
  3. add the production RCTUIKit table/label/button primitives
  4. add the RedBox 2.0 AppKit consumer

The V1 adaptation is byte-identical to #3027. Every other changed implementation file is byte-identical to the reviewed #3054 production stack. Native RCTUITableView tests and their project wiring are intentionally excluded, matching the repository-owner review decision on #3056.

Validation

  • RNTester macOS build passed (EXIT=0, ** BUILD SUCCEEDED **)
  • all nine changed Objective-C/Objective-C++ implementations compiled
  • RNTester-macOS linked, validated, and produced the app bundle
  • zero compile or linker errors
  • build log SHA-256: d7f6c18b7d570d06a79297c774e6343a92e178910374ea9ab5a99d8ac77aad4e
  • immutable install, lint, format, and focused Jest passed
  • TypeScript failures are pre-existing in files untouched by this PR; generated TypeScript is not configured on this stable branch
  • RedBox 2.0 controller fork ratio remains the reviewed 842 / 144 / 16 total lines / fork lines / top-level macOS guards

manual macOS RedBox 2.0 OFF/ON verification OUTSTANDING; do not undraft until performed

The bounded manual attempt could not obtain a script URL in the DerivedData-built app even with Metro ready and serving the bundle, so no manual OFF or ON behavior item is claimed as passed.

Alex Hunt (huntie) and others added 30 commits November 3, 2025 16:28
Summary:
Pull Request resolved: react#54385

Changelog: [Internal]

`test-release-local` shouldn't be changing the hermes version stored in `version.properties` as this script should be called on a cut branch with hermes already bumped.

Reviewed By: cipolleschi

Differential Revision: D86105703

fbshipit-source-id: 5a1edd9f7a6cd756521749c2b0023ea683dadf82
#publish-packages-to-npm&next
Summary:
Pull Request resolved: react#54419

Changelog: [Internal]

React Native uses `files` field in `package.json` to list everything that should end up in the apckage. `.hermesv1version` file was missing from that list, which is fixed by this diff.

Reviewed By: huntie, cipolleschi

Differential Revision: D86295805

fbshipit-source-id: 8a17191f26f9536884e4aaf09447121c020d1212
…eact#54421)

Summary:
OSS community shared with me that we have a circular dependency in React-utils.podspec that prevent them from building with JSC.
While fixing it, I realized that the dynamic framework build was broken. So I fixed them both.

## Changelog:
[iOS][Fixed] - Fixed build with dynamic frameworks

Pull Request resolved: react#54421

Test Plan: Build RNTester locally with USE_FRAMEWORKS=dynamic

Reviewed By: javache

Differential Revision: D86309592

Pulled By: cipolleschi

fbshipit-source-id: f2995332ae135ce951480b353df7d597ff8a85ec
Summary:
When RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS is enabled, source file paths in dSYMs were incorrectly resolved with extra path segments:

double node_modules (e.g., /path/node_modules/node_modules/...)

The root cause was using File.expand_path(@react_native_path) without the correct base directory. The path was first expanded without a base (causing double node_modules), then fixed to use project_pods_root (ios/Pods/), which still resulted in incorrect paths with an extra ios/ folder.

Fixed by expanding the path relative to Pod::Config.instance.installation_root, which correctly points to the ios/ directory, allowing relative paths like ../node_modules/react-native to resolve properly to the project root's node_modules directory.

## Changelog:

[IOS] [FIXED] - Fix incorrect source path resolution in dSYM remapping in precompiled framework scripts

Pull Request resolved: react#54470

Test Plan:
```
rm -rf ./Pods
pod cache clean --all
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 RCT_SYMBOLICATE_PREBUILT_FRAMEWORKS=1 bundle exec pod install
```

✅ Tested with RN-Tester
✅ Tested in 0.83.rc0 project

Reviewed By: huntie

Differential Revision: D86667786

Pulled By: cipolleschi

fbshipit-source-id: cd6279d02d5ed7188e282e4491c05de35f17a8f1
Summary:
Pull Request resolved: react#54479

Fixes failing CI jobs on `0.83-stable`, e.g. https://github.com/facebook/react-native/actions/runs/19234912061/job/54982161510.

**Changes**

- Simplify main package `package.json` file read with existing `getWorkspaceRoot` util.
- Fix test by mocking `getWorkspaceRoot` (previously: read the real filesystem and caused test breakage outside `main`).
- Add additional `RC0 → RC1` test case.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D86674348

fbshipit-source-id: 0b8feb4cbf7b1ac7cf4cc560f066a0a10aec1b5f
Summary:
Pull Request resolved: react#54407

Introduces a new `InspectorSystemState` object and `ReactNativeApplication.systemStateChanged` CDP event, used to assert whether more than one React Native Host has been registered for the current app lifetime.

This will be used to disable the Performance and Network features in React Native DevTools when the debugger backend is in this currently unsupported state. We intend to implement host lifecycle correctness across all features soon.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D86201689

fbshipit-source-id: b8525359fc01eb7ae666879f2c0fd4c94f0af81a
…act#54408)

Summary:
Pull Request resolved: react#54408

Follows from the parent commit. This will prevent 3P CDP clients from using the `Tracing` or `Network` domains when we are in an unsupported multi React Native Host setup.

Changelog: [Internal]

Reviewed By: hoxyq

Differential Revision: D86201688

fbshipit-source-id: 052d563a371fd77c1a05ad8518e222d6bc1eb372
Local sync from 0.83-stable branch
#publish-packages-to-npm&next
Summary:
Pull Request resolved: react#54454

Changelog: [Internal] - Add feature flag around IntersectionObserver for canary

Reviewed By: rubennorte, cipolleschi

Differential Revision: D86547485

fbshipit-source-id: 0c6d84e276d1f6337a8da0bea141cc371010cd75
…0.83-stable branch.

Changelog: [General][Added] - React Native DevTools: Enable Network inspection features
#publish-packages-to-npm&next
#publish-packages-to-npm&next
@Saadnajmi

Copy link
Copy Markdown
Collaborator Author

Note

🤖 OpenCode — This comment was generated by an AI coding agent (OpenCode) at Saad Najmi (@Saadnajmi)'s request. Every claim below was mechanically verified against the repo (patch-id matching plus content inspection), but please treat it as a starting point for review rather than ground truth. One row is explicitly marked unverified.

Commit-by-commit: does each local change also need to land on main?

This PR has 121 commits, but only 15 are local to the branch — the other 105 arrived via the merge of v0.83.10 (0191f94 merging ff4f96a).

Method: patch-id match of each local commit against the last 300 commits of main, then content inspection of every non-match.

# Commit Subject Verdict
1 59b2ef1 chore(0.83): add minor version plan for 0.83.10 sync 🚫 0.83-only — superseded 1 commit later by e32ff69
2 e32ff69 chore(0.83): use changeset instead of nx version-plan 🚫 0.83-only — release artifact for this sync
3 ee926ab fix(0.83): macOS build + ESLint regressions from 0.83.10 merge 🚫 N/ARCTFrameTimingsObserver.mm does not exist on main
4 dbb0b39 fix(ci): derive react_native_version from react-native peer dep 🍒 Cherry-pickmain still has the buggy form
5 4972b56 fix(ci): install unpublished virtualized-lists in release-branch gates 🍒 Cherry-pickmain still does a single yarn pack
6 661fd61 fix(ci): ignore @react-native/tester in changesets 🍒 Cherry-pick⚠️ unverified, see below
7 2b8f46b fix(macos): guard UIWindow dealloc in RCTDevLoadingView ⏭️ Already fixed forward at 0.86
8 7518263 fix(ci): fall back to origin remote in changesets base detection 🍒 Cherry-pick — live bug on main
9 7ee8719 fix(ci): force transitive virtualized-lists resolution in test-app 🍒 Cherry-pick
10 7684cf0 fix(ci): skip published-integration gates for a new minor's first release 🍒 Cherry-pick — inherited by future -stable branches
11 9b6277d chore(0.83): use npm trusted publishing Already in main as b3a73ab (#3071)
12 8fb0a40 fix(0.83): point changesets baseBranch at 0.83-stable 🚫 0.83-only — would break main
13 51e83d4 fix: prevent dev loading view clipping (#3023) Already in main as 78f5b04
14 4f3275e docs: update release process for Changesets (#3032) Already in main as cc5fac9
15 e063ce9 feat(rctuikit): Add RCTUITableView for RedboxV1 and RedboxV2 (#3056) Already in main as efb2eb5

Totals: 4 already in main · 6 to cherry-pick · 1 already fixed forward · 4 not applicable.

Notes on the non-obvious rows

Row 7 — 2b8f46b does not need to land on main. main has no dealloc method in RCTDevLoadingView.mm at all; it arrives from upstream in 0.83.10, so there is nothing to guard. Traced forward along the merge stack:

Branch dealloc
main absent
0.84-merge absent
0.85-merge absent
0.86-merge present, already guarded
0.87-merge present, already guarded

The problem first appears on our mainline at 0.86 and is already handled correctly there. No gap, no cherry-pick needed.

Row 8 — 7518263 is a real bug on main, not hygiene. main currently has:

const remote = (repoPath && remotes.match(...)?.[1]) ?? 'origin';

When the regex does not match, repoPath && … evaluates to ''. Since '' is not nullish, ?? never fires and remote becomes the empty string. The fix switches ?? to ||.

Row 12 — deliberately excluded. Cherry-picking the baseBranch change would point main's changesets at origin/0.83-stable. main must keep origin/main.

Row 6 — the one unverified claim. main has "ignore": [] and carries the same private @react-native/tester package (private: true, version 0.83.0-main), so this plausibly applies there too — but I could not prove main needs it without actually running changesets. Treat as a maybe.

Prepared follow-up

A branch of the 6 cherry-picks has been prepared locally on top of main (b3a73ab) — linear, zero conflicts, +59/−18 across 6 files. The four CI script/workflow files come out byte-identical to this PR's head; .changeset/config.json intentionally differs in exactly one line (baseBranch stays origin/main). Not yet pushed.

One thing to decide first

#3026 (chore: minimize the virtualized-lists fork) is open against main and touches the same dependency that rows 5 and 9 work around. If #3026 lands first, those two may become unnecessary or need rework — so these should be sequenced against it.

Unrelated observation

#3056 already landed RCTUITableView on main, and the file contents are byte-identical to the copy carried lower in the 0.84→0.87 merge stack. That means a future rebase onto current main will render those commits empty rather than conflicting — a clean outcome, but expect empty-commit warnings.

Apply reviewed forward ports 4d93597, a976521, 87adb52, 2b97335, 07921f8 and 584cfd3 while retaining origin/0.83-stable as the Changesets base.

Includes private-package version policy, reliable publication gating, codegen and API path fixes, dependency podspec fallback, prebuild failure status, and upstream font weight correction. Independent review verified source parity and focused tests.
Backport the reviewed 80bf88568d implementation onto the RN 0.83.10 sync. Preserve upstream default-off redBoxV2IOS selection, the existing RCTUITableView V1 behavior, shared parser and HMR contracts.

Independent review verified 0.83 dependency compatibility and V1 preservation. Focused macOS/iOS syntax and dev-menu-off checks passed; full app validation remains pending.
Backport fab736d13f0 unchanged. Preserve legacy-default and V1 opt-in selection, explicit overrides, and source-tag fallback when artifact metadata is absent. Independent review verified exact seven-file parity.
Apply reviewed shared publishing contract 581aa73 and prepared-version checks ac2c766. Preserve automatic Changesets PRs, one publication tag, and disabled duplicate ADO execution. Package dependency additions follow in the bootstrap commit.
Initialize react-native-macos and public virtualized-lists at 0.83.0, retain upstream compatibility 0.83.10, consume the bootstrap Changeset into changelogs, and align Hermes compiler with legacy runtime 0.14.1.

Preserve private upstream workspaces as registry dependencies for publication, couple fork package version plans, and remove Nx. Independent review validated Changesets bootstrap/patch plans, constraints, publication order and the complete lock graph.
Generate native 0.83.0 version files, codegen snapshots, and canonical API declarations from the prepared release. Preserve the upstream React Native peer at 0.83.10.

Independent review verified all 281 existing exports and 6435 public properties remain, with three macOS exports added by generation. Immutable install, codegen tests, API validation and prepared-version checks passed.
Apply reviewed shared test correction 809fa80. All 48 tests pass with both locked Changesets versions.
Generate the lock with CocoaPods 1.15.2, source React Native and legacy Hermes 0.14.1. Independent review verified 85 local podspec checksums, compiler paths in 14 xcconfigs, and both RedBox controller implementations in all Apple targets.
Apply reviewed shared packaging fix 75926e2 with the release's Metro ^0.83.6 range. Preserve existing locked versions and verify the package license, reporter dependency, and obsolete-file cleanup.
Adapt reviewed main fix 35a72da to the extracted V1/V2 controllers. Native AppKit probes pass 28 checks per controller; full app reload and opt-in V2 validation follow.
Adapt reviewed main fix faf217741e9 to both extracted controllers. Fit the table column and derive macOS row heights from text constraints; keep fixed-height cell behavior available.
Adapt reviewed main fix 3c658c0. Preserve release pod versions and existing utils dependencies while eliminating unsuffixed framework header assumptions.
Backport reviewed f2e474f9ee5 with identical patch ID. Canonical wrappers and platform exclusions retain the namespace for static libraries and frameworks without mixing physical platform types.
Backport reviewed main fix 5a7c77b to remove dynamic-framework link cycles while preserving native selection and accessibility behavior.
Backport reviewed shared fix d7d9fc0 without introducing circular dependencies.
Use a native scroll view with measured multiline document dimensions for horizontal code-frame access. Preserve outer table vertical scrolling, resize behavior and cell reuse. Independent review verified 72 native checks and actual V2 screenshots.
Regenerate the default static-library lock after the reviewed podspec corrections. Independent review verified five new RCTUIKit dependency edges, twelve exact podspec checksum updates, and unchanged pod versions.
Backport reviewed 05d941b. Actual Node 22 validation selects upstream/0.83-stable and accepts the prepared version PR; CI retains its explicit target base.
Apply reviewed shared preparation workflow c440e99. Eligibility precedes package generation; PR dry runs select only coupled public packages.
Backport reviewed shared fixes 0145de8 and e8a68d0. Verify canonical event declarations and capability-based recomposition without changing release versions. Preserve existing symbol sidecars.
Regenerate the API snapshot after the reviewed duplicate Button property correction and retain branch-compatible Flow annotations. Normalize UTF-8 command output before JSON parsing. Full Flow, API validation and targeted Hermes tests pass.

This branch has not been deployed

No deployments
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.