Repository navigation
feat(0.87): add focused Apple header and SwiftPM foundations - #3104
Open
Saad Najmi (Saadnajmi) wants to merge 13 commits into
Open
Saad Najmi (Saadnajmi) wants to merge 13 commits into
Saad Najmi (Saadnajmi) wants to merge 13 commits into
Conversation
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.
This was referenced Sep 22, 2026
Preserve validated per-branch source and corrected stack dependencies.
This was referenced Sep 22, 2026
Preserve package versions and the linear stack; change only equivalent executable-path metadata.
Jason Morse (JasonVMo)
approved these changes
Sep 22, 2026
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
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.
Current release stack
0.87-merge. Retarget as predecessors land; stable releases retain separate stable branches.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>andbackup/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.ymlpackages/react-native/ReactNativeApi.d.tspackages/react-native/scripts/ios-prebuild/__tests__/hermes-test.jspackages/react-native/scripts/ios-prebuild/__tests__/hermes-version-test.jspackages/react-native/scripts/ios-prebuild/__tests__/reactNativeDependencies-test.jspackages/react-native/scripts/ios-prebuild/reactNativeDependencies.jsThe 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.