Skip to content

feat: 7.44.0 #14281

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

Merged
merged 154 commits into from
Apr 11, 2025
Merged

feat: 7.44.0 #14281

merged 154 commits into from
Apr 11, 2025

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/Earn
  • 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.
owencraston and others added 15 commits April 8, 2025 14:43
…from #14494) (#14522)

# Description 

This PR addresses an issue reported by @christopherferreira9. When
connecting to the MetaMask SDK while your current selected account is a
multichain account (solana, bitcoin etc), the AccountConnect component
would not provide an account to be connected. The connect button was not
disabled so when a user would press connect, it would fail since no
account was selected. My solution is...

1. create a new selector called `selectPreviouslySelectedEvmAccount`
which returns the previously selected EVM account
2. in the AccountConnect component, if the current chainId is non evm,
set the initial selected account to the previously selected EVM account.
3. The result is, when the user tries to connect to the SDK while their
currently selected account is a Solana account, the user would still be
prompted to connect their EVM account.
4. Users can connect multi non evm accounts by clicking the "connect
multiple accounts" button which will only show their EVM accounts.

Fixes: #14426 Fixes
#14427

1. edit the `.js.env` file such that the METAMASK_BUILD_TYPE is set to
`beta`
2. `yarn setup`
3. Build the branch on a real Physical device. Easiest option is to
build the app using expo via runway. docs on this can be found here:
https://github.com/MetaMask/metamask-mobile?tab=readme-ov-file#for-internal-developers
5. Select Solana in the wallet
6. Open [this
dapp](https://metamask.github.io/metamask-sdk/release-110.0.0/packages/examples/react-demo/build/index.html)
on your desktop browser
7. Click connect on the dapp
8. Scan the QR Code with MetaMask -> The connection modal presents no
accounts
9. Accepting on this modal rejects the connection (see dapp console)

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

<img width="339" alt="Screenshot 2025-04-07 at 7 11 29 PM"
src="https://github.com/user-attachments/assets/13e69ca9-1950-46bd-a3ed-9bac1410f90e"
/>


https://github.com/user-attachments/assets/7a1f1c8d-fee2-4a66-960d-ece10f2adae2

<image

src="https://github.com/user-attachments/assets/a659e4c5-6772-4bb4-979e-4d1347c5d01a"
height="500" width="250" />


https://github.com/user-attachments/assets/36135b80-60f7-4299-9d56-0d113f24bdc7


https://github.com/user-attachments/assets/cf246473-d70b-4fca-b533-3049f35358e4

- [ ] 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.

- [ ] 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.
…ng txs are confirmed (#14541)

- fix: cp-7.44.0 STAKE-1005 refresh staking data when staking txs are
confirmed (#14520)
manual cherry-pick 70ddf46 for PR #14383
Conflicts fixed

Co-authored-by: Iván <[email protected]>
) (#14512)

cherry-pick test: update token used in ramps test (#14363)

Co-authored-by: Iván <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
- fix: Disable auto correct on Snaps UI inputs [cp-7.44.0] (#14433)

Co-authored-by: Frederik Bolding <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
…a) (#14403) (#14548)

- fix: 3273 keyboard blocks send flow (Solana) (#14403)

Co-authored-by: Daniel Cross <[email protected]>
- fix: Prevent re-renders of Field component in Snaps UI [cp-7.44.0]
(#14475)

Co-authored-by: Frederik Bolding <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
#14567)

- fix: activity reloads every minute (#14465)

Co-authored-by: Alejandro Garcia Anglada <[email protected]>
Co-authored-by: Daniel Cross <[email protected]>
Co-authored-by: Antonio Regadas <[email protected]>
…ected (#14521) (#14581)

- fix: deeplinks when non evm network is selected (#14521)

Co-authored-by: tommasini <[email protected]>
Co-authored-by: João Loureiro <[email protected]>
…e issues (#14353) (#14568)

- fix: Resolve a couple of Snaps UI dark mode issues (#14353)

Co-authored-by: Frederik Bolding <[email protected]>
- fix: cp-7.44.0 Update traits when tracked settings change 2/2 (#14088)

---------

Co-authored-by: Nico MASSART <[email protected]>
@Unik0rnMaggie Unik0rnMaggie added the Run Smoke E2E Requires smoke E2E testing label Apr 11, 2025
Copy link
Contributor

github-actions bot commented Apr 11, 2025

https://bitrise.io/ Bitrise

❌❌❌ pr_smoke_e2e_pipeline failed on Bitrise! ❌❌❌

Commit hash: e1b3f2c
Build link: https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/dab278e0-d958-48ff-ac26-511ee3ec0619

Note

  • You can kick off another pr_smoke_e2e_pipeline on Bitrise by removing and re-applying the Run Smoke E2E label on the pull request

Tip

  • Check the documentation if you have any doubts on how to understand the failure on bitrise

NicolasMassart and others added 2 commits April 11, 2025 18:53
<!--
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**

update attribution file

## **Related issues**

Fixes:
https://github.com/MetaMask/metamask-mobile/actions/runs/14382705353/job/40330292095?pr=14281

## **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.
@sethkfman
Copy link
Contributor

@metamaskbot update-attributions

@sethkfman sethkfman added the team-mobile-platform Mobile Platform team label Apr 11, 2025
sethkfman
sethkfman previously approved these changes Apr 11, 2025
Copy link
Contributor

@sethkfman sethkfman left a comment

Choose a reason for hiding this comment

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

LGTM

@metamaskbot
Copy link
Collaborator Author

Attributions updated

Copy link

Copy link
Contributor

@sethkfman sethkfman left a comment

Choose a reason for hiding this comment

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

LGTM

@sethkfman sethkfman merged commit d297eb6 into stable Apr 11, 2025
35 of 38 checks passed
@sethkfman sethkfman deleted the release/7.44.0 branch April 11, 2025 19:21
@github-actions github-actions bot locked and limited conversation to collaborators Apr 11, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Run Smoke E2E Requires smoke E2E testing team-mobile-platform Mobile Platform team
Projects
None yet
Development

Successfully merging this pull request may close these issues.