Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 7.44.0 #14281

Open
wants to merge 125 commits into
base: stable
Choose a base branch
from
Open

feat: 7.44.0 #14281

wants to merge 125 commits into from

Conversation

metamaskbot
Copy link
Collaborator

@metamaskbot metamaskbot commented Mar 27, 2025

🚀 v7.44.0 Testing & Release Quality Process

Hi Team,
As part of our new MetaMask Release Quality Process, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment.


📋 Key Processes

Testing Strategy

  • Developer Teams:
    Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows.
  • QA Team:
    Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing.
  • Customer Success Team:
    Validate new functionalities and provide feedback to support release monitoring.

GitHub Signoff

  • Each team must sign off on the Release Candidate (RC) via GitHub by the end of the validation timeline (Tuesday EOD PT).
  • Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed.

Issue Resolution

  • Resolve all Release Blockers (Sev0 and Sev1) by Tuesday EOD PT.
  • For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines.

Cherry-Picking Criteria

  • Only critical fixes meeting outlined criteria will be cherry-picked.
  • Developers must ensure these fixes are thoroughly reviewed, tested, and merged by Tuesday EOD PT.

🗓️ Timeline and Milestones

  1. Today (Friday): Begin Release Candidate validation.
  2. Tuesday EOD PT: Finalize RC with all fixes and cherry-picks.
  3. Wednesday: Buffer day for final checks.
  4. Thursday: Submit release to app stores and begin rollout to 1% of users.
  5. Monday: Scale deployment to 10%.
  6. Tuesday: Full rollout to 100%.

✅ Signoff Checklist

Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion:

Team sign-off checklist

  • Accounts
  • Assets
  • Confirmations
  • Design System
  • Identity
  • MMI
  • Mobile Platform
  • Ramp
  • Snaps Platform
  • Solana
  • Stake
  • Swaps and Bridge
  • Transactions
  • Wallet API Platform
  • Wallet Framework
  • Wallet UX

This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀

Feel free to reach out if you have questions or need clarification.

Many thanks in advance

Reference

sethkfman and others added 30 commits March 13, 2025 20:29
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

Update to leverage most recent shared workflows for create release PR

## **Manual testing steps**

Will test with existing release on main branch CICD Only

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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.
## **Description**

Added Lottie animation for `SnapUILink` button loading state as it's
currently unhandled.

## **Related issues**

Fixes: MetaMask/snaps#3179

<img width="583" alt="Screenshot 2025-03-12 at 15 01 22"
src="https://github.com/user-attachments/assets/5f0c9970-0979-442f-a5fc-ddccb1e74278"
/>

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

### **Before**

### **After**


https://github.com/user-attachments/assets/7270746f-cad3-444b-8377-3000c131d6fc

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
## **Description**
Add nickname component was missing importing variables!
This passed CI because the comment was forgotten to be addressed:
// @ts-nocheck - Confirmations team or Transactions team

Sentry issue:
https://metamask.sentry.io/issues/6313090523/?project=2299799

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/587a7455-2290-4040-850d-384f0eacf5f1


### **After**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/348c7683-8e7e-40f0-bdbf-0f30c8d9e64f



## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

---------

Co-authored-by: OGPoyraz <[email protected]>
## **Description**

On snaps extension, icon size is inherited from the text component
parent, on mobile we can't do that. To fix the issue, the `text.ts` file
and `utils.ts` file have been updated to pass down the text parent size
prop into the Icon child if there isn't one present.

## **Related issues**

Fixes:
https://github.com/orgs/MetaMask/projects/149/views/1?filterQuery=is%3Aissue+assignee%3ADaniel-Cross&pane=issue&itemId=100075239&issue=MetaMask%7Csnaps%7C3180

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

### **Before**

Icons were default sized 'sm'

### **After**

Screenshots show two different Icons, one rendered within a Text parent
with prop `size="sm"` and one rendered on it's own with a `size="md"`
prop added. Results show one inherits the text parent size prop and the
other refers to it's own size prop.

<img width="137" alt="Screenshot 2025-03-14 at 12 35 59"
src="https://github.com/user-attachments/assets/00060e87-25d3-4294-b3dd-ab63e28d1f0d"
/>

![Simulator Screenshot - iPhone 16 Pro - 2025-03-14 at 11 59
28](https://github.com/user-attachments/assets/4a62df58-daf5-462c-931b-6b49c0c6da52)
![Simulator Screenshot - iPhone 16 Pro - 2025-03-14 at 11 59
22](https://github.com/user-attachments/assets/efb84285-8616-4863-a5e2-59e5a31dcc61)

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR aims to address some review comments from a previous PR that
fixed a bug and that needed to be merged fast. No changes in behaviour
should occur from this PR.

Specifically:
- Typo in a variable name
- Move switch network event tracking to the function that performs the
action
- Added a test file for the utils code (it does not exhaustively test
the file, it just adds a test for the change)

#13883

## **Related issues**

Fixes: See Description

## **Manual testing steps**

1. Open this
[dapp](https://metamask.github.io/metamask-sdk/release-107.0.0/packages/examples/react-demo/build/index.html)
on the inapp browser
2. If required, tap request accounts and connect while having Mainnet as
the active chain
3. Tap Add Polygon Chain
4. A confirmation should show allowing the user to review the update
5. The chain should have changed to Polygon

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
…t builds (#14032)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR fixes and Xcode 16 vs. 15 compatibility issue with E2E and
TestFlight releases. Prior to this PR E2E was failing but allowed
TestFlight releases.

## **Related issues**

Fixes:

## **Manual testing steps**

1.[ Run TestFlight build should
succeed](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/82a9490d-8e0c-40c9-bb55-1c4a4b06609a)
2. [Run E2E build should
succeed](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/95fca2de-a0c7-4a9f-aa0a-0380fb9efe0c)

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

Co-authored-by: metamaskbot <[email protected]>
## **Description**

Temporarily disabling notifications feature. We can create a separate QA
build with the feature on, so that we can isolate QA's effort onto this
specific feature set, rather than the other features going into a given
RC.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR aims to integrate the blockaid alert into the Alert System only
for Signatures.
This alert fires once the Security Alert API reply the request
validation with `result_type` property with `malicious` or `warning` .

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes: MetaMask/mobile-planning#2148

## **Manual testing steps**

1. Go to Test dapp
2. In the section `PPOM - Malicious Transactions and Signatures` click
on all Signatures
3. A banner should appear once you try to confirm the confirm modal so
the users can acknowledge the risk and confirm or reject.

**Transaction scenario**
Transactions are using the old banner alert so it should work as before.

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/3475db05-13f1-4594-b046-0f65dc0169d2

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
This PR implements the following:

1. Submit bridge transaction for native gas tokens that don't require
approval
2. Submit bridge transaction for ERC20s (with or without required
approval)

## **Related issues**

Fixes:

## **Manual testing steps**

**Outside app**
1. Get quote from bridge API (e.g. [Eth USDC -> Arb
USDC](https://bridge.api.cx.metamask.io/getQuote?walletAddress=0x43b0FAc6d66B3ab9cDc5eE491733c16aCc624132&srcChainId=1&destChainId=42161&srcTokenAddress=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&destTokenAddress=0xaf88d065e77c8cc2239327c5edb3a432268e5831&srcTokenAmount=10000000&slippage=0.5&aggIds=lifi,socket,squid&insufficientBal=false),
but make sure to put in your own wallet address)
2. Copy first object from resulting array.
3. Paste object in code, on line 161 of
app/components/UI/Bridge/index.tsx

**In app**
1. Go to bridge page
2. Enter any sufficient amount of any token, just to reveal "continue"
button
3. Click "continue"
4. Wait and check for expected bridge results

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
…14044)

## **Description**

Fix account name / label overflow on re-designed confirmation pages

## **Related issues**

Fixes: #13975

## **Manual testing steps**

1. Go to test dapp
2. Select account with large name
3. Check re-designed signature page

## **Screenshots/Recordings**
<img width="395" alt="Screenshot 2025-03-17 at 4 04 39 PM"
src="https://github.com/user-attachments/assets/93cf21a5-a402-451d-a4ad-97ef89cb524e"
/>

## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
## **Description**

Update bitrise yml to include iOS ramps tests in the pipeline and fix
deeplink e2e test cases.

## **Related issues**

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **Pre-merge author checklist**

- [✓] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [✓] I've completed the PR template to the best of my ability
- [✓] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [✓] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
## **Description**

Adds remote feature flag for notifications (so we can turn on/off
dynamically without the build flag)

## **Related issues**

Fixes:

## **Manual testing steps**

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
This PR updates the Root file to use `ThemeProvider`
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes: #14039

## **Manual testing steps**

1. Go to home
2. Toggle theme
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

https://github.com/user-attachments/assets/9a38ceb0-89d7-402c-b8f6-ce9c589ff16d


<!-- [screenshots/recordings] -->

### **After**

https://github.com/user-attachments/assets/d6bba8ea-9499-48e3-81d3-556a9aedea89


<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
…4050)

This is an expensive set of RPC calls which we plan to optimise in the
backend. This is causing some slowness in the UI, and is not critical
for this MVP.

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

1. Create a funds sent notification.
2. Navigate to notification details.
3. See if the network fee dropdown is removed.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**


https://www.loom.com/share/2bb90faf9c984ea4a7411ceb1a9695e2?sid=4aea94af-0f5c-4507-89c0-86ff15b05bc2

### **After**

There is no "network fee" section, and notifications load faster and are
much more responsive.

![Screenshot 2025-03-17 at 14 23
18](https://github.com/user-attachments/assets/3b90a8c6-04b6-4209-bbb3-cef0da3ca950)

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
## **Description**

This PR adds new identity hooks. This is part of a wider effort to make
sure that mobile has the same logic that extension has regarding auth &
profile syncing. Note that this PR, as being part 1 of this effort,
doesn't introduce any changes, it only adds code pieces that'll be
linked to wider logic changes in subsequent PRs.

This PR: 
- Introduces `useIdentityEffects` "master" hook that encapsulates any
automatic identity actions dispatch (for now, authentication, but in the
future it will contain syncing effects)
- Introduces `useAutoSignIn` and `useAutoSignOut` hooks, that reactively
manages the user's authentication state based on the current application
state

## **Related issues**

Related to: 
- https://consensyssoftware.atlassian.net/browse/IDENTITY-25
- https://consensyssoftware.atlassian.net/browse/IDENTITY-52

## **Manual testing steps**

1. No changes to test, the new code is not used yet

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR implements the source token selector for your current chain for
Bridge.

It does not implement:
1. Network selection
2. Destination token selection

## **Related issues**

Fixes:

## **Manual testing steps**

1. Add `export MM_BRIDGE_UI_ENABLED="true"` to `.js.env`
2. Go to the Bridge page
3. Click on the source token
4. The bottom sheet should pop up

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->


<img width="546" alt="Screenshot 2025-03-11 at 6 51 05 PM"
src="https://github.com/user-attachments/assets/cbae4251-10ec-43b9-bf73-0d6cf01bede8"
/>


## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR extends the `useBalance` hook of the Ramps folder to support
[CAIP-19](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-19.md)
identifiers of the Ramp assets, currently Solana.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to Buy feature
2. Reach the Build Quote View
3. Solana balance must show up below the amount input

## **Screenshots/Recordings**

| Before | After |
|--------|--------|
|
![image](https://github.com/user-attachments/assets/ff5894d8-c648-482b-a5e6-d19004bafd47)
|
![image](https://github.com/user-attachments/assets/3a8cf7a0-6457-41ab-8e77-7319346b8159)|
 
<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Add performance instrumentation from the init of the snap keyring unil
the dialog asking for the account name is created


![image](https://github.com/user-attachments/assets/6463261e-01e5-40d2-ba71-cd09993124bc)


Added to the Sentry performance mobile platform dashboard the respective
widgets.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
…14056)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
This PR updated the ThemeProvider to no longer have wrapping View 
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes: Bitrise errors
https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/5260ec4d-6e9a-4a39-9710-7fc2f1af3db6

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

https://github.com/user-attachments/assets/fc79a1ee-3f0d-44b6-93a0-ea6566c751fe

https://github.com/user-attachments/assets/bfd1dae2-ff1d-400e-b6e5-a588f89b9d7b


<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This change removes the log where it's falsely reporting failed vault
back up when the keyring controller state changes for two reasons:
- A state change of the keyring controller by itself is not sufficient
to indicate a vault corruption
- The keyring controller experiences state changes where the vault
property is removed in the middle of a new wallet creation

The failure reports happen twice when a new wallet is created

We can remove the log here since there is already a failure condition
during log in where it reports a missing vault
https://github.com/MetaMask/metamask-mobile/blob/23c00a45507b75b419d1f22cb527c0b100f41956/app/components/Views/Login/index.js#L448

## **Related issues**

Fixes: https://github.com/orgs/MetaMask/projects/65

## **Manual testing steps**

1. Install this branch
2. Create new wallet
3. No false reporting of a failed vault back up should occur
4. Unit test for `backupVault` simulates what the failed case will
report

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/793996dc-2f10-48ca-8461-c8b0e93ebb9a


### **After**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/df00a5b8-8460-4042-b1c8-b1bc058610e6


## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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.
## **Description**

From Wallet Screen → Tokens component, we are looping through the tokens
from state several times in memory. This is not efficient. This PR
introduces some improvements to the `Tokens` component, specifically:

1. Breaks out several in memory loops to memoized selectors
2. Creates selectors for native and staked asset, rather than building
them manually in React
3. Removes a few `isPortfolioViewEnabled` checks. Confirmed that we can
begin to remove these.

Next step will be to refactor `calculateFiatBalances`

## **Related issues**

Fixes: #13995

## **Manual testing steps**

1. App should remain functional without regressions
2. Please check that token list renders as expected with balances.
Network filter, sort, and token imports should still work as before.
3. Hide zero balance setting should be respected. Keep in mind that if
the "current network" is selected in the tokenNetworkFilter, that we are
still showing zero balance tokens for native and staked assets.
4. Testnet balances should not render when "Popular Networks" filter is
selected.

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/2f8d01c4-4dd2-4ae7-a537-90cb4ce03b37

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR adds a new component :

ButtonToggle: A new toggle button component that visually indicates
active/inactive states with appropriate styling changes.

## **Related issues**

Fixes:
[MMS-1988](https://consensyssoftware.atlassian.net/browse/MMS-1988)

## **Manual testing steps**

### ButtonToggle Component

- Navigate to Storybook and locate the ButtonToggle stories
- Verify the button appears correctly in both active and inactive states

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**


![image](https://github.com/user-attachments/assets/a6bbc47e-c115-4f04-bc1f-6b8db060f5b6)


## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.


[MMS-1988]:
https://consensyssoftware.atlassian.net/browse/MMS-1988?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## **Description**

The purpose of this task is to implement a modal / `BottomSheet` that
prevents the user from adding a 6th (greater than 5) browser tab and
instead displays a message conveying this 5-tab limit.

Related conversation with UX team:
https://consensys.slack.com/archives/C06FXU326RL/p1741828020260919?thread_ts=1741818721.798659&cid=C06FXU326RL

Figma design:
https://www.figma.com/design/FWU0ULFNpybSr2d2CIc2YA/Temporary-solution-for-5-max-tabs?node-id=1-12733&t=zctTv4476zPLxFQi-0

## **Related issues**

Fixes: [#2158](MetaMask/mobile-planning#2158)

## **Manual testing steps**

1. Go to in-app browser screen
2. Open 5 tabs
3. Try opening a 6th, and the pop-up modal should display

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**


https://github.com/user-attachments/assets/83c804c1-5780-48a5-891f-2ffd7e5f6801

### **After**


https://github.com/user-attachments/assets/a8c4c925-dcd3-436b-95e3-fc83d4a684b0

## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR adds a new component
- SegmentedControl: A versatile control component supporting both single
and multi-select modes, with options for scrollable content and icon
integration

Figma Designs:

Segmented Control :
https://www.figma.com/design/HKpPKij9V3TpsyMV1TpV7C/DS-Components?node-id=21177-52932&t=h4Y3QeK29FY8VgjR-4

## **Related issues**

Fixes:
[MMS-1988](https://consensyssoftware.atlassian.net/browse/MMS-1988)

## **Manual testing steps**

### SegmentedControl Component

- Navigate to Storybook and locate the SegmentedControl stories
- Test single-select mode:
        - Verify only one option can be selected at a time
        - Confirm the selected option is visually distinguished

- Test multi-select mode:
        - Verify multiple options can be selected simultaneously
        - Confirm selected options are visually distinguished
        - Test adding and removing selections
        - Test scrollable configuration with many options
        - Verify options with icons render correctly

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

## Segmented Control Storybook


https://github.com/user-attachments/assets/55f1b312-c061-422b-a774-8d9cfd9c9538

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.


[MMS-1988]:
https://consensyssoftware.atlassian.net/browse/MMS-1988?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Introduces a new e2e gate that can be used to control whether PRs are
mergeable.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:
#11747

## **Manual testing steps**

CICD Testing

UC1: Has Anti Label ( SUCCESSFUL/EXPECTED RESULT )
Expected : Should be mergeable

UC2: Has Smoke Label but fails pipeline ( SUCCESSFUL/EXPECTED RESULT )
Expected : Should NOT be mergeable

UC3: Has Smoke label but e2e fails ( SUCCESSFUL/EXPECTED RESULT )
Expected Should NOT be mergeable

UC4 : Has Smoke label with e2e passes ( SUCCESSFUL )
Expected Should be mergeable

UC5 : No bitrise test results found for recent commits

https://github.com/MetaMask/metamask-mobile/actions/runs/13690456059/job/38282658781?pr=13696

UC6 : pending bitrise run

https://github.com/MetaMask/metamask-mobile/actions/runs/13690499626/job/38282774034?pr=13696
it runs before the test is done


## **Screenshots/Recordings**

N/A - CICD Only

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR aims to add `TransactionController` event handler which mainly
added for purpose of collecting transaction metrics.
Also setting `StakingDeposit` and `StakingWithdrawal` specific metrics
when page is viewed.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4378

## **Manual testing steps**

N/A - No user flow changes

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

In order to reduce number of reducer needs for confirmations (for
`alerts`, `signatures` & `transactions`) it's decided to rename current
`transactionMetrics` reducer to `confirmationMetrics` and use it for all
metric purposes for signatures and transactions.

This PR aims to rename `transactionMetrics` to `confirmationMetrics` and
their usages in confirmations.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4442

## **Manual testing steps**

No manual test required

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes: #13897 

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
…igate back (#14085)

## **Description**

When cancelling signature by swiping modal out it should not navigate
back

## **Related issues**

Fixes: #13982

## **Manual testing steps**

1. Go to test dapp
2. Submit signature
3. Drag down signature modal
4. Ensure that signature is rejected and you are still on the dapp

## **Screenshots/Recordings**
TODO

## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.
@MarioAslau MarioAslau requested review from a team as code owners March 27, 2025 22:57
Copy link

socket-security bot commented Mar 27, 2025

New, updated, and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@metamask/[email protected]7.0.0 None 0 359 kB danfinlay, gudahtt, kumavis, ...6 more
npm/@metamask/[email protected]7.0.0 None 0 179 kB metamaskbot
npm/@metamask/[email protected], 9.0.012.1.0 None +1 278 kB metamaskbot
npm/@metamask/[email protected]10.1.1 None +2 2.72 MB
npm/@metamask/[email protected]17.3.0 None +3 2.19 MB metamaskbot
npm/@metamask/[email protected]0.7.2 None +1 162 kB metamaskbot
npm/@metamask/[email protected]12.4.1 network 0 349 kB danfinlay, gudahtt, kumavis, ...6 more
npm/@metamask/[email protected]10.1.0 network +2 1.83 MB metamaskbot
npm/@metamask/[email protected]1.6.0 None 0 160 kB metamaskbot
npm/@metamask/[email protected]11.0.0 Transitive: network +1 3.18 MB metamaskbot
npm/@metamask/[email protected]12.0.0 None 0 1.62 MB metamaskbot
npm/@metamask/[email protected]1.16.0 network 0 819 kB metamaskbot
npm/@shopify/[email protected] None 0 741 kB shopify-dep
npm/[email protected] None 0 6 MB naqvitalha
npm/[email protected] None 0 5.97 kB naqvitalha

🚮 Removed packages: npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@emotion/[email protected], npm/@hypnosphi/[email protected], npm/@icons/[email protected], npm/@reach/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@storybook/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected]

View full report↗︎

Copy link

socket-security bot commented Mar 27, 2025

🚨 Potential security issues detected. Learn more about Socket for GitHub ↗︎

To accept the risk, merge this PR and you will not be notified again.

Alert Package NoteSourceCI
Network access npm/@metamask/[email protected] 🚫
Network access npm/@metamask/[email protected] 🚫
Network access npm/@metamask/[email protected] 🚫
Network access npm/@metamask/[email protected] 🚫
Network access npm/@metamask/[email protected] 🚫

View full report↗︎

Next steps

What is network access?

This module accesses the network.

Packages should remove all network access that is functionally unnecessary. Consumers should audit network access to ensure legitimate use.

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/[email protected] or ignore all packages with @SocketSecurity ignore-all

sethkfman and others added 3 commits March 27, 2025 17:00
## **Description**

This PR adjust a minor formatting issue causing problems on the
`bitrise.yml` script.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **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.

Co-authored-by: metamaskbot <[email protected]>
Copy link
Contributor

@georgewrmarshall georgewrmarshall left a comment

Choose a reason for hiding this comment

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

This PR updates the change log for 7.44.0 and generates the test plan
here
[commit.csv](https://github.com/MetaMask/metamask-mobile/blob/chore/7.44.0-Changelog/commits.csv)

---------

Co-authored-by: metamaskbot <[email protected]>
Co-authored-by: sethkfman <[email protected]>
@codecov-commenter
Copy link

Codecov Report

Attention: Patch coverage is 81.74962% with 121 lines in your changes missing coverage. Please review.

Please upload report for BASE (stable@c6074ee). Learn more about missing BASE report.

Files with missing lines Patch % Lines
...temp/SegmentedControl/SegmentedControl.stories.tsx 0.00% 45 Missing ⚠️
app/components/UI/Carousel/index.tsx 80.00% 8 Missing and 3 partials ⚠️
...s/UI/Bridge/components/BridgeSourceNetworksBar.tsx 70.00% 4 Missing and 2 partials ⚠️
...ents/UI/Bridge/hooks/useTokensWithBalance/index.ts 82.85% 0 Missing and 6 partials ⚠️
...temp/Buttons/ButtonToggle/ButtonToggle.stories.tsx 0.00% 5 Missing ⚠️
...ponents-temp/SegmentedControl/SegmentedControl.tsx 91.66% 1 Missing and 4 partials ⚠️
...e/components/BridgeSourceNetworkSelector/index.tsx 89.36% 2 Missing and 3 partials ⚠️
app/components/UI/Bridge/index.tsx 85.29% 2 Missing and 3 partials ⚠️
...rovals/InstallSnapApproval/InstallSnapApproval.tsx 75.00% 1 Missing and 3 partials ⚠️
...ents/UI/Bridge/components/TokenInputArea/index.tsx 86.66% 1 Missing and 3 partials ⚠️
... and 16 more
Additional details and impacted files
@@            Coverage Diff            @@
##             stable   #14281   +/-   ##
=========================================
  Coverage          ?   65.72%           
=========================================
  Files             ?     2228           
  Lines             ?    47435           
  Branches          ?     6683           
=========================================
  Hits              ?    31177           
  Misses            ?    14263           
  Partials          ?     1995           

☔ 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.

@Matt561
Copy link
Contributor

Matt561 commented Mar 31, 2025

Reviewed owned files. Approving on behalf of the Earn team 👍

Matt561
Matt561 previously approved these changes Mar 31, 2025
bfullam
bfullam previously approved these changes Apr 1, 2025
mathieuartu
mathieuartu previously approved these changes Apr 1, 2025
wachunei
wachunei previously approved these changes Apr 2, 2025
This PR cherry-picks #14379

Co-authored-by: Owen Craston <[email protected]>
@owencraston owencraston dismissed stale reviews from wachunei, mathieuartu, bfullam, and Matt561 via 43c72d7 April 2, 2025 20:20
github-actions bot and others added 5 commits April 3, 2025 19:47
This PR cherry-picks #cherry-pick-7.44.0-import-srp

Co-authored-by: Monte Lai <[email protected]>
MetaMask is in the process of releasing Solana in version 7.44.0. This
build is currently using the beta features set. The problem is that
Bitcoin was also included in the `keyring-snaps` feature set but this
feature is not ready yet. In order to remove Bitcoin from the latest
release, I have created a new code fence feature flag called `bitcoin`
(same as extension) and moved the Bitcoin features inside of this code
fence. The result is that user will not see any Bitcoin related actions
in their wallet. I also removed the multichainSettings since they were
defaulted to true anyway and were not used at all.

Fixes: #14360

1. edit your `.js.env` file and change the `METAMASK_BUILD_TYPE` to
`beta`
2. source .js.env
3. yarn setup && yarn start:ios
4. create / import a wallet
5. Once you have created the wallet, click on the account selector list
6. click "add account or hardware wallet"
7. you should NOT see Bitcoin or Bitcoin testnet as an option anymore
8. you SHOULD see Solana as an option
9. Pressing Solana creates a valid solana account for you.

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

<image

src="https://github.com/user-attachments/assets/b4395c9f-d594-4543-a4b7-df842201774b"
height="600" width="300" />

<image

src="https://github.com/user-attachments/assets/bfdfaaf5-d6b5-43a2-962a-c23f62cb85ea"
height="600" width="300" />

<image

src="https://github.com/user-attachments/assets/4117cda6-968c-4afa-9f75-2319f7e2823e"
height="600" width="300" />

This feature is still available on flask.

<image

src="https://github.com/user-attachments/assets/5f421c40-fa4d-4977-8ee0-8cf11c087167"
height="600" width="300" />

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding

Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] 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.

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.