Skip to content

chore: podfile and pbxproj alignment#29893

Merged
tommasini merged 3 commits intomainfrom
fix/ci-check-diff-rn-0815
May 8, 2026
Merged

chore: podfile and pbxproj alignment#29893
tommasini merged 3 commits intomainfrom
fix/ci-check-diff-rn-0815

Conversation

@tommasini
Copy link
Copy Markdown
Contributor

@tommasini tommasini commented May 8, 2026

Description

rn udpdate to 0.81 made check diff fail due to changes on project.pbxproj

Changelog

CHANGELOG entry:

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 build/CI alignment changes, but updates iOS CocoaPods lockfile checksums and Xcode project metadata which can impact iOS build determinism if incorrect.

Overview
Aligns iOS build metadata after the RN 0.81 update to keep the repo clean under CI.

CI check-diff is relaxed by increasing the yarn setup:github-ci retry timeout to 20 minutes to reduce flaky timeouts.

iOS project housekeeping updates: the ios/branch-ios-sdk submodule is set to ignore = dirty, project.pbxproj is reordered/normalized for BrazeHelper.mm references, and Podfile.lock checksum entries are updated (e.g., boost, DoubleConversion, fmt, glog).

Reviewed by Cursor Bugbot for commit ed5a536. Bugbot is set up for automated code reviews on this repo. Configure here.

@tommasini tommasini requested a review from a team as a code owner May 8, 2026 01:25
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2 metamaskbotv2 Bot added the team-mobile-platform Mobile Platform team label May 8, 2026
@tommasini tommasini added the no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed label May 8, 2026
@andrepimenta
Copy link
Copy Markdown
Member

Superseded: #29901

@github-actions github-actions Bot locked and limited conversation to collaborators May 8, 2026
@MetaMask MetaMask unlocked this conversation May 8, 2026
@andrepimenta andrepimenta reopened this May 8, 2026
adnxy
adnxy previously approved these changes May 8, 2026
The "Clean state and following up dependencies installation with retry"
step in the Check diff job runs `yarn setup:github-ci`, which includes
`yarn pod:install`. On slower macOS-latest runners this exceeds the
10-minute per-attempt cap and hits "Timeout of 600000ms hit", forcing
unnecessary retries that redownload boost (~100MB).

Bumping to 20m per attempt gives headroom for slow CDN runs while
keeping max_attempts at 3.

Co-authored-by: Cursor <cursoragent@cursor.com>
andrepimenta added a commit that referenced this pull request 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>
@tommasini tommasini enabled auto-merge May 8, 2026 10:07
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.50%. Comparing base (4797726) to head (f809b6f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #29893   +/-   ##
=======================================
  Coverage   81.50%   81.50%           
=======================================
  Files        5328     5328           
  Lines      141146   141146           
  Branches    32157    32157           
=======================================
+ Hits       115046   115048    +2     
+ Misses      18239    18237    -2     
  Partials     7861     7861           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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 github-actions Bot added size-S and removed size-XS labels May 8, 2026
@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: 88%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 4 changed files are build/infrastructure configuration changes with no app logic modifications:

  1. .github/workflows/ci.yml: Only change is increasing timeout_minutes from 10 to 20 for the yarn setup:github-ci step. This is a CI reliability fix to prevent timeout failures during dependency installation - no test logic affected.

  2. .gitmodules: Added ignore = dirty to the ios/branch-ios-sdk submodule. This is a git configuration change to suppress false-positive dirty state reporting for the submodule - no functional impact.

  3. ios/MetaMask.xcodeproj/project.pbxproj: Minor reordering of BrazeHelper.mm file references within the Xcode project file. The entries are identical in content, just repositioned (likely alphabetical ordering). No functional change to the build output.

  4. ios/Podfile.lock: Checksum updates for boost, DoubleConversion, fmt, and glog - these are low-level C++ utility libraries used by React Native's core. The checksum changes suggest minor pod version updates or environment-specific regeneration. These libraries are foundational but their updates are typically transparent to app behavior.

None of these changes affect:

  • App source code or UI components
  • Controllers, Engine, or state management
  • Navigation or shared components
  • E2E test infrastructure (tests/, page-objects/, fixtures/)
  • Any user-facing features or flows

No E2E tests are warranted for pure build configuration and CI infrastructure changes. No performance tests are needed as no performance-sensitive code was modified.

Performance Test Selection:
No performance-sensitive code was modified. All changes are build configuration, CI infrastructure, and dependency lock file updates. 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

@andrepimenta
Copy link
Copy Markdown
Member

This is a temporary solution for branch while we fix it

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 8, 2026

@tommasini tommasini added this pull request to the merge queue May 8, 2026
Merged via the queue into main with commit 230ec6d May 8, 2026
60 checks passed
@tommasini tommasini deleted the fix/ci-check-diff-rn-0815 branch May 8, 2026 11:51
@github-actions github-actions Bot locked and limited conversation to collaborators May 8, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.78.0 Issue or pull request that will be included in release 7.78.0 label May 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-7.78.0 Issue or pull request that will be included in release 7.78.0 size-S team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants