Skip to content

fix(macos): forward-port shared release fixes to main - #3099

Open
Saad Najmi (Saadnajmi) wants to merge 35 commits into
microsoft:mainfrom
Saadnajmi:forward-port/private-workspace-versions
Open

Saad Najmi (Saadnajmi) wants to merge 35 commits into
microsoft:mainfrom
Saadnajmi:forward-port/private-workspace-versions

Conversation

@Saadnajmi

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

Copy link
Copy Markdown
Collaborator

Current release stack

Shared reusable release fixes into main; precedes #3030.

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.

Port dbb0b39, 4972b56, 661fd61, 7518263, 7ee8719 and 7684cf0 from microsoft#3022 with main-compatible adaptations.

Use the codegen workspace version on fork-point branches. Prefer the private-package policy from bfb629a66d5 over an RNTester-specific ignore. Gate only registry-dependent init, propagate registry failures, and retain local test-app coverage.

Validated with seven Node 22 tests and actionlint. Independently reviewed for fork suitability, merge durability and later equivalents.
Forward-port c007388 from the 0.86 stack. This canonicalizes the fixes carried on 0.84 release (5f8d15d) and 0.85 release (2b57c6c).

Absolute checkout paths containing hidden or __tests__ ancestors otherwise copy raw Flow sources or ignore the entire package. Preserve absolute paths for file operations, but match package-relative paths.

Independent review exercised six before/after VM cases using real micromatch, Babel and Prettier, including fixture exclusion, Flow sidecars and asset copies.
Adapt 434e93cdad27 from the local 0.87 stable stack for main. Restrict normalization to relative paths, match complete workspace package names, and select the deepest node_modules package.

This repairs generation of checkout-dependent imports found in the 0.84, 0.85 and 0.86 release snapshots without copying release artifacts onto main.

Independent review passed 19 focused tests including real snapshots and post-processing output, targeted ESLint and Prettier. Full type generation remains a release validation step.
Forward-port e4c208d864d7 from the local 0.87 stable stack. ReactNativeDependencies.podspec is one directory below its package root, not two.

Independent review verified Ruby syntax, the real checkout fallback, standard react-native and react-native-macos package layouts, and unchanged successful Node resolution.
Forward-port 03d2ca33950c from the local 0.87 stable stack. Both prebuild entry points return after invalid configuration, so set the process exit code before returning.

Independent review verified 24 subprocess probes across parent and patched CLIs, including invalid and valid platform cases, plus syntax and whitespace checks.
Forward-port upstream React Native react#57483 (3e5e3c2) from the release lines. The omitted-middle ternary returned a boolean rather than the requested numeric weight.

Preserve the fork's AppKit family lookup. Independent review verified upstream patch parity and nine native weight cases including Light, Medium and Bold family selection.
Keep automatic Changesets version PRs and GitHub trusted publishing. Reject unprepared versions and incomplete dependency graphs, align coupled package changelogs, guard stale version PR runs and serialize queued publications.

Preserve the reviewed one-tag policy: latest for the newest stable line, branch tag for older stable lines, next for prereleases. Existing versions skip without tag mutation. Retain but disable ADO publication.

Independent review passed 30 Node 22 tests including real Changesets version execution. Installed actionlint lacks the documented queue:max field; all other workflow checks passed.
Accept consumed Changesets only when every changed public workspace has a valid version transition and a new nonempty changelog section. Permit exact matching 1000.0.0-to-initial-stable bootstrap versions.

Validate deleted public workspaces against base workspace membership and reject unrelated deletions or cross-workspace moves. Independent review verified 48 Node 22 tests and the deletion bypass regressions.
Declare the packaged reporter's Metro dependency, include the virtualized-lists license notice, and remove obsolete DevTools and update-ruby references. Independent review verified actual pack contents and isolated reporter resolution without changing locked package versions.
Forward-port the reviewed 0.83 release graph policy: keep private tools on workspace dependencies, preserve fork workspace links for Changesets, and couple public core/list versions. Main retains origin/main and excludes private package releases.

Independent review verified 51 contract tests and actual Yarn constraints without changing package versions.
Load the V1 view before populating its RCTUITableView and dismiss through the actual presenting controller instead of the current key window. Independent native AppKit review reproduced empty first-display rows and verified 28 fixed lifecycle checks.
Use target-owned add_dependency paths instead of unsuffixed framework directories for cxxreact, TurboModule core, RuntimeApple and the sample codegen module. Independent CocoaPods review verified versions and generated header paths across platform configurations.
Resolve optional RCTTextView dynamically for accessibility and use native NSTextField selection behavior. Remove reverse React-Core class references to React-RCTText without adding a circular pod dependency. Independent review verified producer symbols and native behavior.
Declare the framework owner for Image, Animation, Text, CoreModules and Fabric class references. Independent review verified no dependency cycle and generated linker flags across 270 CocoaPods configurations.
Fit the native column to its document width and use text constraints for automatic row heights. Preserve explicit fixed-height cells and keep UIKit behavior unchanged. Independent review verified native layout, reuse, and lifecycle probes with negative controls.

(cherry picked from commit faf217741e9dbc71d09ca3828e250bb1878575a6)
Add platform-dispatch headers, guard macOS translation units, and retain canonical static/framework header namespaces without exporting conflicting platform families. Independent review verified CocoaPods selection, Android dispatch and real-header dependency traces.

(cherry picked from commit f2e474f9ee570fabca74de28e26bc5440f6b22ea)
Share explicit legacy-default, V1-default and single-version metadata policies without tying Hermes coordinates to RN package versions. Preserve tarball/version overrides and CI source-tag fallback when artifact metadata is absent.

Independent review verified 73 Node 22 tests including real CI entry points and missing-metadata fallback. Later fork policies remain explicit caller adaptations.

(cherry picked from commit fab736d13f0045b6ae02ad52f8aa4607f2a9f755)
(cherry picked from commit 1549ba34ad124c64fc91202ed0ed8a98681a9df8)
Prepare Node packages, local codegen and validated generated types only after release eligibility. Use the coupled public package selector for PR dry runs, excluding independently published init.
(cherry picked from commit 76ade17c8699445aac8dac215b4bebc0bf3efccb)
(cherry picked from commit b09a500b5bfdc9c60eb1c9c8d86af5435982af20)
Apply the independently approved four-file candidate from main-4de3-fix-evidence/main-4de3-fix.patch, based on 4de3e75. Approval: ses_f3dcf284.

Include private workspace dependencies in type resolution, exclude node_modules links from snapshot discovery, and preserve the reviewed regression test and generated API snapshot exactly.

Prior measured validation: all 18 generated TypeScript diagnostics resolved; final full Flow check reported 0 errors. Provenance: TEMP/main-4de3-fix-evidence/REPORT.md. Tests were not repeated during application.

Candidate stable patch-id: e3289b3576a155e45acde2069dc00660ccc00ac1. All four staged file blobs match the reviewed candidate.
Comment thread .github/scripts/publishing-contract.mjs Fixed
Comment thread .github/scripts/__tests__/publishing-workflow.test.mjs Fixed
Preserve validated per-branch source and corrected stack dependencies.
Comment on lines +120 to +123
const run = command => execFileSync('bash', ['--noprofile', '--norc', '-eo', 'pipefail', '-c',
`node_path=$1\nyarn_path=$2\nyarn() { "$node_path" "$yarn_path" "$@"; }\n${command}`,
'publishing-workflow', process.execPath, yarnPath],
{cwd: root, env, encoding: 'utf8', stdio: 'pipe'});
Preserve package versions and the linear stack; change only equivalent executable-path metadata.

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.

3 participants