SIGN IN SIGN UP

fix(rn-tester): restore RNTesterPods.xcodeproj/project.pbxproj on 0.83-merge (#2960)

## Summary

The `RNTesterPods.xcodeproj/project.pbxproj` file is **missing from
`0.83-merge`** but exists on `main`. Without it, `pod install` fails
immediately on `0.83-merge` with:

[!] The plist file at path
/.../packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj doesn't
exist.

Which blocks any contributor from validating any PR against `0.83-merge`
via the RNTester pod-install path.

### Root cause (interaction between an ignore rule and the upstream
merge)

Both `main` and `0.83-merge` carry this rule in `.gitignore`:

/packages/rn-tester/**/*.xcodeproj

On `main`, `project.pbxproj` is tracked despite that rule — `gitignore`
does not affect files already in the index, and the file was originally
added before the rule existed (or via `-f`). On `0.83-merge`, the file
was dropped from the
tree at some point during the upstream-0.83 merge (likely via a `git rm`
resolving a conflicting hunk, or via a merge driver that touched the
.xcodeproj contents). Once it was out of the index, the existing ignore
rule prevented anyone
from `git add`ing it back through the normal path — the explicit `-f`
flag is required.

Verification via `gh api`:

- `main` tree contains
`packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj` (blob SHA
`90e6c295ce0ec461333aa96af37d8b0ceebe98dc`, 120,346 bytes).
- `0.83-merge` tree only contains
`packages/rn-tester/RNTesterPods.xcodeproj/xcshareddata/` (the scheme
files).
- The xcshareddata/ scheme files on `0.83-merge` reference
`RNTesterPods.xcodeproj` as their container, so the absence isn't an
intentional structural change.

  ### Fix

This PR restores the file verbatim from `main`'s blob `90e6c295…`
(force-added past the ignore rule). Once in the index, future operations
track it normally. The `.gitignore` rule is preserved unchanged — it
correctly excludes other
generated `.xcodeproj` outputs and only needed the one-time `-f` to
reseat this specific file.

The .pbxproj is structurally cross-compatible between `main` (RN 0.81.x
content) and `0.83-merge` (RN 0.83 content) — both branches share the
same target layout (`RNTester`, `RNTesterUnitTests`,
`RNTesterIntegrationTests`,
`RNTester-macOS`, `RNTester-macOSUnitTests`,
`RNTester-macOSIntegrationTests`, `RNTester-visionOS`). `pod install`
regenerates the workspace from this file + the Podfile, so any drift
between branches gets reconciled by the install step.

If maintainers have a preferred way to regenerate the pbxproj (script,
fresh `pod init` flow), this PR can be closed in favor of that. The
change is offered as the minimal unblock so contributors can resume
validation against
`0.83-merge`.

Indirectly unblocks the **"RNTester validation"** item on the Road to
0.83 tracking issue (#2901) — that item can't proceed until pod install
works on `0.83-merge`.

- **Before:** `pod install` in `packages/rn-tester` on `0.83-merge`
fails with `[!] The plist file at path .../project.pbxproj doesn't
exist.` Reproducible on any fresh `0.83-merge` checkout. `yarn
prepare-ios` hits the same error inside
 the cocoapods-runner subprocess.
- **After:** `pod install` in `packages/rn-tester` on `0.83-merge`
completes with `Pod installation complete! There are 86 dependencies
from the Podfile and 85 total pods installed.`
`RNTesterPods.xcworkspace/contents.xcworkspacedata` is
generated, all `Pods-RNTester*` xcconfig files are written,
hermes-engine script phases are wired. (Validated locally with HEAD =
current `0.83-merge` tip.)
- Remaining `[!] ... CLANG_CXX_LANGUAGE_STANDARD override` warnings are
pre-existing on `main` and unrelated to this restore.

## Related

- #2901 — Road to 0.83 tracking issue (this unblocks RNTester
validation)
- Upstream blob on \`main\`: SHA
\`90e6c295ce0ec461333aa96af37d8b0ceebe98dc\` (120,346 bytes)
T
Thiago Vinhas committed
fb319eeac27fa3b1e1fdf7e7eead505b3e97d45d
Parent: e4fa8d7
Committed by Saad Najmi <sanajmi@microsoft.com> on 7/13/2026, 3:22:04 PM