fix(rnapp): regenerate iOS Podfile.lock for React Native 0.87 - #465
Open
KisaneNeko wants to merge 1 commit into
Open
KisaneNeko wants to merge 1 commit into
KisaneNeko wants to merge 1 commit into
Conversation
The RN 0.87 upgrade (0f1b85d, callstack#447) never regenerated apps/RNApp/ios/ Podfile.lock — that commit touched no files under apps/RNApp/ios at all. The lockfile still pinned ReactNativeDependencies and 125 other pods at 0.85.0 while package.json is on react-native 0.87.0, so pod install failed to resolve: [!] CocoaPods could not find compatible versions for pod "ReactNativeDependencies" The pods cache hid it for three weeks: the cache key is hashFiles(Podfile.lock), and since the stale lock never changed, the key never changed either. A warm cache kept pod install happy until the cache aged out, and the first cold run — 11 Sep, run 34582797299 — broke. Only the AppleApp Vanilla job is affected, because this is the repo's only tracked Podfile.lock and the Expo variants install pods elsewhere. Regenerated with CocoaPods 1.15.2 (matching apps/RNApp/Gemfile.lock) on Ruby 3.2. PODFILE CHECKSUM is unchanged, so the Podfile itself did not change — only the resolution. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Human readable summary
CI failed to run
CI / iOS road test & E2E (AppleApp - Vanilla)in my PRThis was not related to my work though, and also happened in this unrelated PR
The reason was outdated lockfile (after RN upgrade)
The bug
iOS road test & E2E (AppleApp - Vanilla)fails at Install pods (RN vanilla app, E2E):The RN 0.87 upgrade never regenerated the iOS lockfile:
apps/RNApp/package.jsonreact-native: 0.87.0apps/RNApp/ios/Podfile.lockReactNativeDependencies (0.85.0)— and 126 pods pinned at 0.85.00f1b85d"feat: upgrade RN App to 0.87.0 (#447)"apps/RNApp/ios/Why it took three weeks to show up
The pods cache key is
hashFiles(Podfile.lock). The stale lock never changed, so the key never changed, and a warm cache keptpod installfrom having to re-resolve. It broke on the first cold run after the cache aged out — run 34582797299 on 11 Sep, and every run since.Only the Vanilla job is affected: this is the repo's only tracked
Podfile.lock, and the Expo 56/57 jobs install pods underapps/ExpoApp56/57instead. That matches what CI shows — Expo variants green, Vanilla red.The fix
Regenerated
apps/RNApp/ios/Podfile.lockwith CocoaPods 1.15.2 (matchingapps/RNApp/Gemfile.lock) on Ruby 3.2 (matching CI). One file.PODFILE CHECKSUMis unchanged, so the Podfile itself didn't change — only the resolution.Verified locally
Reproduced the failure on a clean
maincheckout first — byte-identical error, exit 1 — then confirmed the fix:RCT_USE_PREBUILT_RNCORE=0 pod install(the failing CI step), cold, noPods/→ exit 0, 89 pods installedpod install(the non-E2E path) → exit 0ReactNativeDependencies (0.87.0), zero pods left at 0.85.0Worth knowing: the two
pod installvariants CI runs produce structurally different lockfiles — the prebuilt path addsReact-Core-prebuiltthroughout, the source path doesn't. Both resolve cleanly against this lockfile, so it doesn't block anything; whichever job runs just rewrites it locally. I committed the default (prebuilt) variant because the trackedproject.pbxprojreferencesPods_RNApp.framework, so it stays internally consistent with what a plainpod installproduces.Not included
Nothing currently fails when the lockfile drifts, which is the reason this hid for three weeks. A guard would catch it immediately:
Left out to keep this PR to the fix — happy to add it here or separately.
🤖 Generated with Claude Code