chore(0.83): sync 0.83.10 and backport RedBox 2.0 - #3022
Saad Najmi (Saadnajmi) wants to merge 149 commits into
Conversation
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
|
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
|
| # | 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/A — RCTFrameTimingsObserver.mm does not exist on main |
| 4 | dbb0b39 |
fix(ci): derive react_native_version from react-native peer dep | 🍒 Cherry-pick — main still has the buggy form |
| 5 | 4972b56 |
fix(ci): install unpublished virtualized-lists in release-branch gates | 🍒 Cherry-pick — main still does a single yarn pack |
| 6 | 661fd61 |
fix(ci): ignore @react-native/tester in changesets |
🍒 Cherry-pick — |
| 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.
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.
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.
Release stack — current coordination
Tracker: React Native macOS 0.83–0.87: PR stack and release tracker
0.83-stable. Retarget dependent PRs as their predecessors merge, following the tracker.0.84-mergeinto main #3030.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:
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
EXIT=0,** BUILD SUCCEEDED **)d7f6c18b7d570d06a79297c774e6343a92e178910374ea9ab5a99d8ac77aad4e842 / 144 / 16total lines / fork lines / top-level macOS guardsmanual 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.