Skip to content

Chore/deploy yarn install#26098

Open
weitingsun wants to merge 9 commits intochore/migrate-to-build-with-github-actiongfrom
chore/deploy-yarn-install
Open

Chore/deploy yarn install#26098
weitingsun wants to merge 9 commits intochore/migrate-to-build-with-github-actiongfrom
chore/deploy-yarn-install

Conversation

@weitingsun
Copy link
Contributor

@weitingsun weitingsun commented Feb 13, 2026

Description

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

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
Moderate risk because it substantially changes CI build dependency/setup flow across iOS and Android, which can cause build/signing regressions. App change is low impact but introduces an additional env-driven parse/render path.

Overview
Reworks the GitHub Actions mobile build pipeline by adding a new setup-dependencies job (per-platform runner) that installs JS deps, runs yarn setup:github-ci, installs iOS Pods, verifies required artifacts, then uploads a tarball so the build job can download/extract node_modules (preserving symlinks) instead of reinstalling.

The build job is updated to consume and validate these artifacts, removes the previous Ruby/CocoaPods install+cache steps, adds iOS keychain cleanup before signing, and writes ios/.xcode.env.local to pin NODE_BINARY for Xcode scripts.

In-app, the Settings AppInformation screen now parses process.env.REMOTE_FEATURE_FLAG_DEFAULTS and (when environment info is revealed) displays the build-time remote feature-flag default values for easier debugging.

Written by Cursor Bugbot for commit 7ef86cb. This will update automatically on new commits. Configure here.

@weitingsun weitingsun requested review from a team as code owners February 13, 2026 22:39
@github-actions
Copy link
Contributor

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.

@metamaskbot metamaskbot added the team-mobile-platform Mobile Platform team label Feb 13, 2026
@github-actions
Copy link
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - base branch is not main (base: chore/migrate-to-build-with-github-actiong)

All E2E tests pre-selected.

View GitHub Actions results

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

timeout_minutes: 10
max_attempts: 3
retry_wait_seconds: 30
command: yarn pod:install
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pod install retry path is bypassed

Medium Severity

setup-dependencies runs yarn setup:github-ci --build-ios --no-build-android, and setup.mjs already performs yarn pod:install for iOS. That means CocoaPods installation happens before the retry-wrapped pod step, so transient pod failures in setup:github-ci fail the job without using retry logic.

Fix in Cursor Fix in Web

yarn setup:github-ci --build-ios --no-build-android
else
yarn setup:github-ci --no-build-ios
fi
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build type defaults to main in setup

Medium Severity

setup-dependencies runs yarn setup:github-ci before Apply build config, so METAMASK_BUILD_TYPE is unset during setup. build-inpage-bridge then builds app/core/InpageBridgeWeb3.js with the default main app ID instead of flask-specific values, and that generated artifact is reused in the build job.

Fix in Cursor Fix in Web

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
58.3% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

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

Labels

size-M team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants