Repository navigation
fix(prebuild): derive Apple header slices from binary platforms - #3102
Closed
Saad Najmi (Saadnajmi) wants to merge 24 commits into
Closed
Saad Najmi (Saadnajmi) wants to merge 24 commits into
Saad Najmi (Saadnajmi) wants to merge 24 commits into
Conversation
Combine upstream stable API, Metro, CocoaPods facade, header framework, SwiftPM, and release-testing changes with the macOS fork workspace identities and platform support. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the upstream setup-env alias into the macOS moduleNameMapper so the later fork mapping does not override it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Normalize pnpm workspace paths emitted by API Extractor back to public package specifiers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Regenerate the strict TypeScript API snapshot with Node 22 after the stable API changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Treat an empty repository URL as no remote match so status checks use origin instead of an invalid root-relative ref. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Seed the two public macOS artifacts at rc.0 in Changesets prerelease mode so the patch changeset materializes exactly 0.87.0-rc.1. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Refresh the Yarn 4.12 lock after seeding the 0.87 release-candidate package versions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pin the upstream React Native peer and published workspace dependencies while leaving private workspace versions unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use fs.cpSync for the headers sidecar so paths are not shell-expanded and Flow sees the declared API. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Map react-native imports to the fork workspace under strict bundler resolution and keep the API transform Flow-clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Refresh Babel Unicode transforms and rc.0 release-seed codegen podspec snapshots. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record the constrained release dependencies and explicit plist runtime dependency. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fallback from third-party-podspecs to the react-native package root when Node resolution is unavailable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Generate core and dependency facades for every supported Apple platform instead of hardcoding iOS. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Regenerate the source-mode RNTester lock with Bundler 2.4.12 and CocoaPods 1.14.2 after seeding rc.0 metadata. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Return a nonzero status when either Apple prebuild CLI rejects a platform name. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Model fork dispatch precedence, physical platform implementations, SDK AppKit, and packaged sibling imports; shrink six resolved baseline entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Apply the repository import order required by the final lint gate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rebuild the lock from the d8 Berry baseline with the final 0.87 manifests using a targeted Yarn install. This retains the stable-mandated Metro 0.87, ob1, Hermes compiler 0.15, plist, prerelease peer, workspace, and React alignment closure while removing 122 opportunistic resolution rows. The two independent generation runs were byte-identical. Because Metro and ob1 had not yet crossed the configured seven-day threshold, generation used the approved process-local YARN_NPM_MINIMAL_AGE_GATE=0 override for those commands only; four normal 7d immutable consumers then passed with no override and npmMinimalAgeGate remained 7d. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The broad age-zero lock regeneration at 43fd selected the @babel 7.29.7 cohort and Unicode 16 data, corrupting generated transform fixture expectations. The corrected conservative lock emits the canonical output from immediate pre-corruption stable tree 650a8a41, while retaining the rc-seed codegen podspec snapshot. These 14 generated Babel output fixtures were reproduced byte-identically in two fresh focused update runs and match 650a8a41 exactly. No source, input, codegen snapshot, or yarn.lock bytes change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This was referenced Sep 22, 2026
Saad Najmi (Saadnajmi)
force-pushed
the
review/0.87-hermes-tests
branch
from
September 22, 2026 18:06
cffd120 to
1599a89
Compare
This was referenced Sep 22, 2026
Collaborator
Author
|
Superseded by #3105 in the independently reviewed linear 0.87 stack tracked by #3098. The implementation is already present there, making this checkpoint an empty diff after re-stacking. Closing this duplicate review without merging or deleting its branch. The topology-only final release tree remains byte-identical to the original candidate; reviewed CI repairs are tracked separately. |
Saad Najmi (Saadnajmi)
added a commit
that referenced
this pull request
Sep 27, 2026
<!-- release-stack-tracker:start --> ## Current release stack - Tracker: #3098 - Position: **2 of 17**. - Review base: `0.83-stable`. Retarget as predecessors land; stable releases retain separate stable branches. - Current source: the PR's Commits tab tracks the latest repaired branch head. RNM 0.83.0 with RN 0.83.10. Publish and verify before the next minor. ### Validation and backups The branch-specific repaired source passed hardened immutable installation, constraints, and its complete release-helper selection. The selected 18-head packet records **1,406 passing helper tests**. Exact source-tree equivalence is used for rewritten endpoints where applicable; the two changed linear RC checkpoints were tested separately. Native/API evidence retains its recorded scope. The SwiftPM and RNTester repairs have six focused native build passes. Public stable versions and runtime/API contents were preserved except for the independently reviewed SwiftPM destination repair where applicable. Public-registry lock correction passed all 18 hosted generation, hardened immutable, constraints, and metadata-audit jobs in [run 35769816507](https://github.com/Saadnajmi/react-native-macos/actions/runs/35769816507). Only equivalent executable-path spelling changes are permitted; dependency versions, checksums, and ranges are unchanged. The previous functional test results remain applicable to this metadata-only correction. Fresh GitHub CI and review remain required. Previous heads are preserved on the same repository under `backup/pre-ci-repair-20260922/<original-branch>` and `backup/pre-public-registry-20260922/<original-branch>`; local complete-history bundles were verified as well. The 0.87 PR sequence is one first-parent path: **#3037 → #3104 → #3105 → #3106 → #3100 → #3101 → #3107**. The redundant #3102/#3103 reviews are consolidated into #3105. This section supersedes earlier stack order, source identity, and validation-status notes below. <!-- release-stack-tracker:end --> --- ## Summary - sync the 0.83 stable line through React Native 0.83.10 - restore the RedBox 2.0 CoreModules files dropped during the stable merge resolution - preserve the existing AppKit RedBox V1 behavior from #3027 - backport the production RCTUIKit compatibility primitives and RedBox 2.0 AppKit consumer from #3054 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. --------- Co-authored-by: Alex Hunt <hello@alexhunt.dev> Co-authored-by: Riccardo Cipolleschi <cipolleschi@meta.com> Co-authored-by: Jakub Piasecki <piaseckijakub@meta.com> Co-authored-by: Jakub Piasecki <jakub.piasecki@swmansion.com> Co-authored-by: React Native Bot <bot@reactnative.dev> Co-authored-by: Christian Falch <christian.falch@gmail.com> Co-authored-by: Alex Hunt <huntie@meta.com> Co-authored-by: Luna Wei <luwe@meta.com> Co-authored-by: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Co-authored-by: Phil Pluckthun <phil@kitten.sh> Co-authored-by: Dawid Malecki <dawid.malecki21@gmail.com> Co-authored-by: Alex Hunt <hello@alexhunt.io> Co-authored-by: Fabrizio Cucci <fabriziocucci@meta.com> Co-authored-by: Nicola Corti <ncor@meta.com> Co-authored-by: Thibault Malbranche <thibault@brigad.co> Co-authored-by: Ismar Besic <46565776+ismarbesic@users.noreply.github.com> Co-authored-by: Ben Hamilton <benhamilton@terraformation.com> Co-authored-by: LeoTM <1881059+leotm@users.noreply.github.com> Co-authored-by: Alan Hughes <alan@expo.io> Co-authored-by: Moti Zilberman <moti@meta.com> Co-authored-by: Terry Kwon <kastopia@meta.com> Co-authored-by: Radek Czemerys <7029942+radko93@users.noreply.github.com> Co-authored-by: Rubén Norte <rubennorte@gmail.com> Co-authored-by: Pieter De Baets <pieterdb@meta.com> Co-authored-by: Ruslan Lesiutin <hoxy@meta.com> Co-authored-by: Isaac Israel <isaac.israel@hibob.io> Co-authored-by: Mark Smith <mcs@pearlcrescent.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Derive header slices from actual binary platforms, with regression coverage. Eight-file comparison following Hermes URL tests. Header inventory follows.
Release stack
review/0.87-hermes-testsatcffd1207f2e1aa8e8d7c3110e8a2e1d12e97e422.3714488a692c2b315ef2b81518798a8aacdf8a2d.Review mirrors are comparison anchors, not evidence of prerequisite approval. Retarget as predecessors land; keep stable sync on the release path.
Validation
Local final-candidate evidence includes clean consumers, API/type checks, and scoped native artifact checks. Those results retain their recorded source-tree scope and do not establish full test coverage at this intermediate head. Fresh CI and review are required. Known CI repairs are being prepared separately.
PR merges and npm publication remain owner-controlled.