Skip to content

fix(ios): align project.pbxproj BrazeHelper.mm entries to sort order#29901

Open
andrepimenta wants to merge 3 commits intomainfrom
fix/ios-pbxproj-braze-helper-sort
Open

fix(ios): align project.pbxproj BrazeHelper.mm entries to sort order#29901
andrepimenta wants to merge 3 commits intomainfrom
fix/ios-pbxproj-braze-helper-sort

Conversation

@andrepimenta
Copy link
Copy Markdown
Member

@andrepimenta andrepimenta commented May 8, 2026

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.

Description

Changelog

CHANGELOG entry: null

Related issues

Fixes:

Manual testing steps

Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]

Screenshots/Recordings

Before

After

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Mostly deterministic build-file ordering and git metadata tweaks, but the Podfile.lock checksum updates could indicate underlying pod spec changes that may impact native builds if not consistent across environments.

Overview
Reduces iOS build churn from pod install by aligning project.pbxproj’s BrazeHelper.mm entries to CocoaPods’ canonical ordering.

Updates .gitmodules to ignore dirty state for the ios/branch-ios-sdk submodule, and refreshes Podfile.lock with 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.

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>
@metamaskbotv2 metamaskbotv2 Bot added the team-mobile-platform Mobile Platform team label May 8, 2026
adnxy
adnxy previously approved these changes May 8, 2026
tommasini
tommasini previously approved these changes May 8, 2026
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>
@andrepimenta andrepimenta dismissed stale reviews from tommasini and adnxy via 796f5be May 8, 2026 10:06
@andrepimenta andrepimenta requested a review from a team as a code owner May 8, 2026 10:06
@andrepimenta andrepimenta force-pushed the fix/ios-pbxproj-braze-helper-sort branch from 796f5be to 3747194 Compare May 8, 2026 10:13
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>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

🔍 Smart E2E Test Selection

  • Selected E2E tags: None (no tests recommended)
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 90%
click to see 🤖 AI reasoning details

E2E Test Selection:
All three changed files are iOS build infrastructure changes with no functional impact on app behavior:

  1. .gitmodules: Added ignore = dirty to the branch-ios-sdk submodule - purely a git configuration housekeeping change to suppress dirty state reporting.

  2. ios/Podfile.lock: Updated checksums for native C++ libraries (boost, DoubleConversion, fmt, glog). These are low-level build dependencies used by React Native's iOS runtime. Checksum changes indicate a dependency version/build update but don't affect JavaScript application logic.

  3. ios/MetaMask.xcodeproj/project.pbxproj: Minor reordering of BrazeHelper.mm entries in the Xcode project file - no actual additions or removals, just ordering changes.

None of these changes affect:

  • JavaScript/TypeScript application code
  • React Native components or screens
  • Controllers, Engine, or state management
  • Navigation or user flows
  • E2E test infrastructure
  • Any user-facing functionality

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:
No performance tests needed. The changes are limited to iOS build infrastructure (Podfile.lock dependency checksums, Xcode project file reordering, and git submodule configuration). These changes do not affect UI rendering, data loading, state management, or any user-facing flows that would impact performance metrics.

View GitHub Actions results

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 8, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants