fix(ios): align project.pbxproj BrazeHelper.mm entries to sort order#29901
fix(ios): align project.pbxproj BrazeHelper.mm entries to sort order#29901andrepimenta wants to merge 3 commits intomainfrom
Conversation
CocoaPods regenerates this file with the BrazeHelper.mm entries in their canonical UUID sort order. Without this, every fresh `pod install` produces a 4-line diff that fails the `check-diff` CI job. Verified by running `bundle exec pod install` on a clean tree (RN 0.81.5, CocoaPods 1.16.2) — reproduces this exact diff. Co-authored-by: Cursor <cursoragent@cursor.com>
After RN 0.81.5, `pod install` on the GitHub macOS-latest runner produces different SPEC CHECKSUMS for boost / DoubleConversion / fmt / glog than the values committed by the upgrade. This makes `Check diff` fail on every PR (and on main itself) because `git diff --exit-code` sees a dirty Podfile.lock after `yarn pod:install` runs. The new values are taken directly from the failing `Check diff` job log on main (commit 4797726, the RN 0.81.5 merge), which shows exactly these four checksums as the diff CI produces. Same root cause as #29893; including the change here so this PR also unblocks `Check diff`. Co-authored-by: Cursor <cursoragent@cursor.com>
796f5be to
3747194
Compare
RN 0.81's `set_RCTNewArchEnabled_in_info_plist` post-install hook (in node_modules/react-native/scripts/cocoapods/new_architecture.rb) runs `find ios -name "Info.plist"` and rewrites every match it finds to add `<key>RCTNewArchEnabled</key>`. Its exclusion list (/Pods, Tests, metainternal, .bundle, build/, DerivedData/) does not respect git submodule boundaries, so it walks into ios/branch-ios-sdk and modifies 8 Info.plist files (TestBed apps, Examples, Branch.framework). This makes the submodule "dirty" after every `pod install`, breaking the Check diff CI step (`git diff --exit-code` reports the submodule as `Subproject commit ...-dirty`). Setting `ignore = dirty` on the submodule makes git ignore working-tree changes inside it while still detecting commit-pointer changes - which is what we actually care about in CI. Aligns local `git status` with CI. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
None of these changes affect:
These are purely iOS build system maintenance changes. No E2E tests need to run to validate these changes, and no performance tests are warranted as there is no impact on app rendering, data loading, or user flow performance. Performance Test Selection: |
|



CocoaPods regenerates this file with the BrazeHelper.mm entries in their canonical UUID sort order. Without this, every fresh
pod installproduces a 4-line diff that fails thecheck-diffCI job.Verified by running
bundle exec pod installon a clean tree (RN 0.81.5, CocoaPods 1.16.2) — reproduces this exact diff.Description
Changelog
CHANGELOG entry: null
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Mostly deterministic build-file ordering and git metadata tweaks, but the
Podfile.lockchecksum updates could indicate underlying pod spec changes that may impact native builds if not consistent across environments.Overview
Reduces iOS build churn from
pod installby aligningproject.pbxproj’sBrazeHelper.mmentries to CocoaPods’ canonical ordering.Updates
.gitmodulesto ignore dirty state for theios/branch-ios-sdksubmodule, and refreshesPodfile.lockwith new checksums for several native dependencies (e.g.,boost,DoubleConversion,fmt,glog).Reviewed by Cursor Bugbot for commit f315632. Bugbot is set up for automated code reviews on this repo. Configure here.