Skip to content

feat(0.87): add focused Apple header and SwiftPM foundations - #3104

Open
Saad Najmi (Saadnajmi) wants to merge 13 commits into
microsoft:0.87-mergefrom
Saadnajmi:review/0.87-apple-foundation
Open

Saad Najmi (Saadnajmi) wants to merge 13 commits into
microsoft:0.87-mergefrom
Saadnajmi:review/0.87-apple-foundation

Conversation

@Saadnajmi

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

Copy link
Copy Markdown
Collaborator

Current release stack

Depends on #3037. Canonical public API, Metro, Apple headers, and SwiftPM foundations. #3105 follows.

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

Final CI follow-up

This branch receives only these independently reviewed follow-up paths:

  • .github/workflows/microsoft-npm-publish.yml
  • .github/workflows/microsoft-pr.yml
  • packages/react-native/ReactNativeApi.d.ts
  • packages/react-native/scripts/ios-prebuild/__tests__/hermes-test.js
  • packages/react-native/scripts/ios-prebuild/__tests__/hermes-version-test.js
  • packages/react-native/scripts/ios-prebuild/__tests__/reactNativeDependencies-test.js
  • packages/react-native/scripts/ios-prebuild/reactNativeDependencies.js

The complete 16-head batch passed 92 recorded validation commands, including branch-specific API revalidation/generated TypeScript, full formatting checks, and combined targeted suites where applicable. Native changes are limited to the reviewed #3033 destination guards (also present in stable 0.85) and #3104's sidecar-copy correction (already present in its descendants). Exact source equivalence preserves earlier native results elsewhere. The public-registry lockfiles and package manifests remain byte-identical.

Previous heads are backed up at backup/pre-ci-followup-20260922/<original-branch> on their source repository. Fresh current-head CI remains required. The one-first-parent 0.87 sequence is preserved.

Flow/lint closeout

This branch receives the reviewed Flow annotation/test-fixture or duplicate Jest mapper correction. Full Flow, ESLint, and format checks pass; generator output/runtime AST or effective Jest mapper behavior remain equivalent as applicable. Public-registry locks, package manifests, and API declarations remain unchanged. Backups are verified under backup/pre-flow-lint-20260922/<original-branch>. The single first-parent PR path is preserved; current-head CI remains the final acceptance gate.

Curate thirteen upstream source changes for setup-env, strict TypeScript APIs, public entry points and Metro 0.87 without stable release version bumps or the broader 0.88 cutoff.

Preserve macOS public type contracts through generated default exports, including watch-mode translation and aliased API hashes. Independent review verified source coverage, package conditions, strict/legacy consumer checks and focused transform tests.
Curate ten upstream feature changes without stable release version bumps or the broader 0.88 cutoff. Preserve macOS header selection, resources and facade platforms.

Give prebuilt RCTUIKit one physical header owner through a dependency-only facade. Independent review verified source coverage, generated provider checks and focused feature tests; later compatibility groups and native artifacts remain separate validation steps.
Preserve validated per-branch source and corrected stack dependencies.
Preserve package versions and the linear stack; change only equivalent executable-path metadata.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
Apply the independently reviewed branch-specific CI follow-up while preserving public-registry locks and the linear stack.
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 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.

2 participants