Skip to content

fix(prebuild): derive Apple header slices from binary platforms - #3102

Closed
Saad Najmi (Saadnajmi) wants to merge 24 commits into
microsoft:review/0.87-hermes-testsfrom
Saadnajmi:0.87/header-platforms
Closed

Saad Najmi (Saadnajmi) wants to merge 24 commits into
microsoft:review/0.87-hermes-testsfrom
Saadnajmi:0.87/header-platforms

Conversation

@Saadnajmi

@Saadnajmi Saad Najmi (Saadnajmi) commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Derive header slices from actual binary platforms, with regression coverage. Eight-file comparison following Hermes URL tests. Header inventory follows.

Release stack

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.

Copilot AI and others added 24 commits September 21, 2026 01:17
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>
@Saadnajmi

Copy link
Copy Markdown
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.

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.

2 participants