Skip to content

Conversation

ieow
Copy link

@ieow ieow commented May 23, 2025

Description

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

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

aganglada and others added 30 commits May 16, 2025 08:38
## **Description**

- enables the Solana and Non-EVM code by moving the code fence flags to
the main set.
- this change makes all the Solana and Non-EVM features available in
main build.

> [!NOTE]
> The `keyring-snaps` is the code fence flag that allows for snaps like
the `solana`, `bitcoin`, any keyring snap to work, the Solana snap and
bitcoin snap are keyring-snaps.
> This code fence has all the broad/general code for non-evm snaps, and
then for specific network logic we have the solana, bitcoin etc...

## **Related issues**

Fixes: the current feature is under code fencing, only available in our
beta build, it has to be moved from beta to main set to be available in
the next release.

## **Manual testing steps**

```gherkin
Feature: Solana

  Scenario: user opens new app install
    Given the app is installed and wallet created
    When user lands on wallet screen
    Then user sees the new Solana feature announcement bottom sheet
    And user sees in the accounts list "add Solana account"
    And user sees in the network tab "Solana"

  Scenario: user opens updated app
    Given the app is updated with wallet already created
    When user logs in
    Then user sees the new Solana feature announcement bottom sheet
    And user sees in the accounts list "add Solana account"
    And user sees in the network tab "Solana"
```

## **Screenshots/Recordings**

### **Before**

#### Add account
<img width="340" alt="add account screenshot"
src="https://github.com/user-attachments/assets/2473cd0b-cfcd-4c4a-8f8e-73143e16315d"
/>

#### Select network
<img width="340" alt="select network screenshot"
src="https://github.com/user-attachments/assets/632f52cc-1013-4573-853d-178e372e220c"
/>


### **After**

#### New welcome bottom sheet

<img width="340" alt="new welcome modal screenshot"
src="https://github.com/user-attachments/assets/8124a0cd-e4b2-4daf-bdef-c08e7ff18516"
/>


#### Add account
<img width="340" alt="add account screenshot"
src="https://github.com/user-attachments/assets/5771e51a-6688-4d26-91df-7d7da622feba"
/>


#### Select network
<img width="340" alt="select network screenshot"
src="https://github.com/user-attachments/assets/54e3a06c-1d65-41dc-a2c2-eef8fb5a3c37"
/>

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

---------

Co-authored-by: António Regadas <antonio.regadas@consensys.net>
Co-authored-by: yande <110056475+Andepande@users.noreply.github.com>
Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com>
<!--
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 adds SEI’s network logo and native token logo to MetaMask
Mobile. These additions aim to improve user recognition and interface
clarity when interacting with the SEI network and its native token
within the app.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to the MetaMask Mobile app
2. Navigate to the "Networks" section and locate SEI Network
3. Confirm that the SEI network logo is displayed correctly
4. Add SEI as a custom token (if not preloaded)
5. Verify that the SEI token logo appears as expected

## **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="250" alt="image"
src="https://github.com/user-attachments/assets/208294f8-e701-4d87-a7b2-7c4f41137322"
/>

## **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: Pedro Pablo Aste Kompen <wachunei@gmail.com>
…the left (MetaMask#15335)

<!--
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 fixes an issue in android only where if the destination token
amount is a very long number it would only show the decimal part now we
will show the same as iOS which would be the significant digit on the
left first.

It also truncates to 5 decimals max.

## **Related issues**

Fixes:
https://consensyssoftware.atlassian.net/browse/MMS-2387
https://consensyssoftware.atlassian.net/browse/MMS-2395

## **Manual testing steps**

Android only

1. Go to Bridge
2. Request a quote for a dest token with 18 decimals (e.g. ETH)
3. The amount should show the left hand side significant digits rather
than the right hand side decimals
4. Should also show 5 decimals max

## **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="815" alt="Screenshot 2025-05-14 at 2 51 36 PM"
src="https://github.com/user-attachments/assets/ed3fc73f-1060-44e4-a74f-1912fd1e5d4a"
/>


## **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
- [ ] 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.
…aMask#15132)

<!--
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 the rough stablecoin lending deposit flow that we will
iterate on. The flow is hardcoded to support only Ethereum mainnet and
Base. The confirmation screen also contains partially mocked data (e.g.
estimated annual rewards) for now. This mock data is temporary and will
be replaced in a subsequent pass.

### Changes
- Adds `EarnLendingDepositConfirmationView`
- Updates `EarnInputView` to support stablecoin lending deposits
- Updates `useEarnTokenDetails` to include token's `experience` to
direct navigation to appropriate flow entry points
- Adds new `EarnScreenStack` to `MainNavigator` 

<!--
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**

Jira ticket: [STAKE-1015: Build 2-step lending deposit confirmation
flow](https://consensyssoftware.atlassian.net/browse/STAKE-1015)

## **Manual testing steps**

Prerequisites:
1. Environment variables setup
Ensure you have the following env vars set in your local `.js.env` file.
```ts
## Earn
# Pooled-Staking
export MM_POOLED_STAKING_ENABLED="true"
# Stablecoin Lending
export MM_STABLECOIN_LENDING_UI_ENABLED="true"
```
2. Ensure you have DAI or USDC on Ethereum mainnet or Base

Testing Steps
1. From the token list (home screen), click on a supported stablecoin
(e.g. DAI or USDC)
2. Click on the stablecoin lending CTA's "Start earning" button.
3. On the Deposit input screen, enter a valid amount to deposit and
click "Review"
4. You should be redirected to the Lending deposit confirmation screen.
Note, this screen is using mock data which is why you see elements like
"Aave v3 USDC Coin" as the receipt token.
5. If a token allowance increase is needed, you can click "Approve" to
increase token allowance. If you don't need an allowance increase skip
to next step.
6. Once the token allowance transaction goes through, click "Confirm" to
deposit
7. Click "confirm" on the send bottom sheet that opens
8. Your deposit should be confirmed momentarily

## **Screenshots/Recordings**
The recording is too large to upload directly to the PR. Please use this
[link](https://drive.google.com/file/d/16RYU_S15254Abjrz-msv5Zo0BaCcrDc_/view?usp=drive_link)

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

Fixes an alignment issue with `NetworkNavBar` where omitting a
`onRightPress` callback would not render an `endAccessory` and misalign
the navbar title.

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

<img width="442" alt="Screenshot 2025-05-16 at 11 57 10 AM"
src="https://github.com/user-attachments/assets/392ed39d-a555-4691-959d-8138d5810600"
/>

### **After**

<img width="440" alt="Screenshot 2025-05-16 at 12 25 35 PM"
src="https://github.com/user-attachments/assets/ecc0e406-9c9b-4b32-9cf2-710ba26e1052"
/>

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

<!--
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**

Extracts swaps/bridge insufficient balance checks into a separate hook
to consolidate the logic and keep code clean.

<!--
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 swaps
2. Input source token amount greater than current balance
3. See red balance text styling, insufficient balance button, and quotes
not refreshing

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

MetaMask/MetaMask-planning#3739

## **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.
## **Description**
Add missing Snaps permission labels.

## **Related issues**
Fixes: MetaMask/snaps#3158

## **Manual testing steps**
1. Create a Snap with all permissions specified in the manifest (example
provided in this PR).
2. Verify that permission labels are displayed correctly and none is
missing.

## **Screenshots/Recordings**

### **Before**
<img width="300" alt="Screenshot 2025-05-15 at 12 03 51"
src="https://github.com/user-attachments/assets/e3ae1126-bef2-4337-b0e9-a6d5369ba795"
/>

### **After**
<img width="250" alt="Screenshot 2025-05-09 at 16 14 51"
src="https://github.com/user-attachments/assets/05cd96ca-ef08-4751-9b84-b7bf84785bdb"
/>
<img width="250" alt="Screenshot 2025-05-16 at 14 54 01"
src="https://github.com/user-attachments/assets/906a34f3-3b78-49a6-8f7e-0aaff6ff7dac"
/>
<img width="250" alt="Screenshot 2025-05-16 at 14 52 46"
src="https://github.com/user-attachments/assets/47e09797-a265-437b-bc16-70f97780a0a1"
/>

### ***Snap Manifest used for testing***
```json
{
  "version": "0.1.0",
  "description": "An example Snap written in TypeScript.",
  "proposedName": "TypeScript Example Snap",
  "repository": {
    "type": "git",
    "url": "https://github.com/MetaMask/template-snap-monorepo.git"
  },
  "source": {
    "shasum": "uRfWyB6iNNrQvb/LrR6YtjlMauey+/eWjoAfbEqVqeA=",
    "location": {
      "npm": {
        "filePath": "dist/bundle.js",
        "packageName": "snap",
        "registry": "https://registry.npmjs.org/"
      }
    }
  },
  "initialPermissions": {
    "endowment:page-home": {},
    "snap_dialog": {},
    "endowment:rpc": {
      "dapps": true,
      "snaps": false
    },
    "snap_getBip32Entropy": [
      {
        "path": ["m", "44'", "0'"],
        "curve": "secp256k1"
      },
      {
        "path": ["m", "44'", "0'"],
        "curve": "ed25519"
      },
      {
        "path": ["m", "44'", "0'"],
        "curve": "ed25519Bip32"
      }
    ],
    "snap_getBip32PublicKey": [
      {
        "path": ["m", "44'", "0'"],
        "curve": "secp256k1"
      }
    ],
    "snap_getBip44Entropy": [
      {
        "coinType": 1
      },
      {
        "coinType": 3
      }
    ],
    "endowment:network-access": {},
    "snap_manageState": {},
    "endowment:name-lookup": {
      "chains": ["eip155:1"]
    },
    "snap_notify": {},
    "endowment:cronjob": {
      "jobs": [
        {
          "expression": "5 4 30 12 *",
          "request": {
            "method": "execute"
          }
        }
      ]
    },
    "endowment:ethereum-provider": {},
    "snap_getEntropy": {},
    "endowment:transaction-insight": {},
    "wallet_snap": {
      "npm:@metamask/bip32-example-snap": {
        "version": "0.34.1-flask.1"
      },
      "npm:@metamask/bip44-example-snap": {
        "version": "0.34.1-flask.1"
      }
    },
    "endowment:lifecycle-hooks": {},
    "snap_getPreferences": {},
    "endowment:protocol": {
      "scopes": {
        "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1": {
          "methods": ["getBlockHeight", "getGenesisHash"]
        }
      }
    },
    "endowment:signature-insight": {},
    "endowment:webassembly": {}
  },
  "platformVersion": "6.22.0",
  "manifestVersion": "0.1"
}
```

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

<!--
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 the restoration of first party snap accounts and imported
srps when changing password.

Changes:
1. added `restoreImportedSrp` `restoreSnapAccounts` to Vault.js and
updated the change password logic to use these.
2. Added new tests to Vault
3. Fix deadlock that could happen when awaiting a promise in
MultichainSnapClient.

<!--
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?
4. What is the improvement/solution?
-->

## **Related issues**
Fixes: MetaMask#15258
Fixes: MetaMask#15233
Resolves:
https://consensyssoftware.atlassian.net/browse/MMMULTISRP-208?atlOrigin=eyJpIjoiMmM0MDMzNDRlYzdlNDJmZTg3ODNhMzUzNzlkOWZmZDIiLCJwIjoiaiJ9

## **Manual testing steps**

1. Using a fresh wallet.
2. Create a new solana account
3. Import a private key
5. Import a qr hardware wallet
6. import a ledger wallet
7. Go to settings --> security
8. Go through change password
9. Login to the wallet and see that accounts are still there. 

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

---------

Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com>
Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com>
## **Description**
Fixes chainChanged event not being fired when using the
per-dapp-selected-network flags.

Added minimal test coverage for Background Bridge to ensure the event
will trigger and manually tested the behavior using local mobile build


## **Related issues**

Fixes: MetaMask#15239

## **Manual testing steps**

Please follow the instructions in the [Github
issue](MetaMask#15239)

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

---------

Co-authored-by: Christopher Ferreira <104831203+christopherferreira9@users.noreply.github.com>
<!--
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 fixes an issue where the Bridge would crash if the user selected
a destination token that had a small balance (e.g. appears as < 0.00001)

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMS-2454

## **Manual testing steps**

1. Go to Bridge
2. Select a dest token that displays "< 0.00001" 
3. Bridge should not crash

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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



https://github.com/user-attachments/assets/96a8b740-c525-4042-9873-caffd0351c32



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

The purpose of this task is to make a security improvement for dapps
permissions request.

## **Related issues**

Fixes: MetaMask/mobile-planning#2096

## **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/c6236e59-46ca-42ee-a37d-e53255e409e3

### **After**


https://github.com/user-attachments/assets/f11f4bc1-3f00-41e2-9b76-92f9e9f99b57

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

---------

Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com>
Co-authored-by: kylanhurt <kylan.hurt@gmail.com>
…em (MetaMask#15418)

## **Description**

The token list item should not always be pressable on the token detail
page. This was a fragment from the initial implementation of the Asset
Details page.

The balance list item isn't intended to always be interactive, and
should only be pressable when the token being pressed is a non native
EVM asset (erc20) from the detail page. User reported getting navigated
to an error screen when pressing this on certain Solana SPL tokens.

This adds the option to disable this button, making the list item read
only and non-interactive. This fixes the bug reported, but also the UX
papercut of having a pressable element that doesn't do anything.

## **Related issues**

Fixes: MetaMask#15345

## **Manual testing steps**

1. Go to detail page for any token
2. Balance TokenListItem should not be pressable

## **Screenshots/Recordings**

### **Before**


https://github.com/user-attachments/assets/819d842a-251d-4163-beb7-70596b02220f

### **After**


https://github.com/user-attachments/assets/17385a1c-4ac9-47b2-9a48-e0d6d7a51a8d

## **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 removes code fences for Multi-SRP feature.

## **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**
As Solana is now enabled on main we needed to update the Carousel tests.
Refactored the way we are using the testIDs to make it more maintainable
Updated Snapshots and unit tests.

<!--
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**

- [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.
…sk#15463)

## **Description**

Capture exception instead of throwing an error at the
getPersistentState. This is a re implementation of what we have at the
base controller.

This is the longer term solution:
MetaMask/core#5545

## **Related issues**

Fixes: MetaMask#15453 

## **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: sethkfman <10342624+sethkfman@users.noreply.github.com>
…Mask#15425)

<!--
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 improves the layout and spacing in the bridge screen for better
user experience. The changes include:

- Adjusting padding in BridgeView keypad container for improved layout
- Hiding toggle accordion for EVM bridge pairs
- Updating QuoteInfoModal styles for improved layout
- Enhancing BridgeView layout with ScrollView for better content display
- Improving skeleton loading styles in BridgeView and TokenInputArea
- Updating QuoteDetailsCard tests to account for solana bridge

## **Related issues**

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

## **Manual testing steps**

1. Open the bridge screen
2. Verify the layout and spacing of all elements
3. Test the keypad container padding
4. Verify the toggle accordion is hidden for EVM bridge pairs
5. Check the QuoteInfoModal layout
6. Test scrolling behavior in BridgeView
7. Verify skeleton loading states

## **Screenshots/Recordings**

### **Before**

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



https://github.com/user-attachments/assets/3638ef75-dc30-40c7-9e5b-0466000fe1b4


### **After**

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


https://github.com/user-attachments/assets/85a6301d-a113-4e55-b139-d219a6028f17


## **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-2384]:
https://consensyssoftware.atlassian.net/browse/MMS-2384?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
…5449)

<!--
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**

* Fixes this bug
MetaMask#14978 where actions
sheet wasn't close after clicking on Send for Non-EVM accounts
* Updates to the latest snap version

<!--
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 Solana Account
2. Click on send
3. Go back
4. Actions sheet should be closed and you should be back on the main
screen

## **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.
…its (MetaMask#15349)

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

MetaMask#15154

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

This PR adds the `Copyable` component for snaps usage.

## **Related issues**

Fixes: MetaMask/snaps#3303

## **Manual testing steps**

1. Use the following code to test:
```
 <Box>
    <Copyable value="0x1234567890123456789012345678901234567890" />
    <Copyable
        value="0x1234567890123456789012345678901234567890"
        sensitive
     />
</Box>
```

## **Screenshots/Recordings**

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

### **Before**

App crashed before implementation

### **After**

![Simulator Screenshot - iPhone 16 Pro - 2025-05-15 at 10 57
51](https://github.com/user-attachments/assets/acc74c27-52dd-479f-be2f-aff7c0be0fd0)
![Simulator Screenshot - iPhone 16 Pro - 2025-05-15 at 10 57
54](https://github.com/user-attachments/assets/3c172ca6-2fed-4291-8cb1-f2b7dee6da55)


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

<!--
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**

For context here's the `tryUnsubscribe` function code

```js
  tryUnsubscribe<EventType extends Event['type']>(
    eventType: EventType,
    handler?: ExtractEventHandler<Event, EventType>,
  ) {
    if (!handler) {
      return;
    }

    try {
      this.unsubscribe(eventType, handler);
    } catch (e) {
      // Ignore
    }
  }
```

This should silence the Sentry error `Error: Subscription not found for
event: NetworkController:stateChange`

<!--
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#11025

## **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.
… fails (MetaMask#15398)

<!--
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**

**Change summary**
- Remove the fallback empty string for the notification id
- Wrap display notification in a try/catch block. Add errors to Sentry
breadcrumbs and do not dispatch a new Sentry exception event

For context, here's the Notification interface where it describes how
the notification id is used

```js
export interface Notification {
    /**
     * A unique identifier for your notification.
     *
     * Notifications with the same ID will be created as the same instance, allowing you to update
     * a notification which already exists on the device.
     *
     * Defaults to a random string if not provided.
     */
    id?: string;
```

<!--
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#14301

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

Updates notification e2e spec to handle clicking and viewing all the
different notification items we support.

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMASSETS-837

## **Manual testing steps**

N/A - this adds e2e test coverage.

## **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 update Plume's network logo. 

<!--
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. Open metamask-mobile
2. Go to https://chainlist.org/
3. Add the Plume Network
4. After accepting, the update network logo should show 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] -->

## **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
- [ ] 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**

Due to a recent change now the ramps region is auto-selected, with this
PR I'll update the affected test cases to handle this correctly.

## **Related issues**

Fixes: Smoke e2e failing

## **Manual testing steps**

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

## **Screenshots/Recordings**

### **Before**

### **After**

## **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 branch adds support for the [Multichain
API](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-5.md)
to the Flask build of the Extension.

The existing API (via injected provider) should be completely unchanged.

# (Very Briefly) What is the MetaMask Multichain API
- Concurrent connection to any number of chains (no network switching)
- Unified entry point for all chain ecosystems (EVM, BTC, Solana,
Cosmos, Polkadot etc)
- Accessible via
[`window.postMessage()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage).
Not accessible via an injected global like `window.ethereum`

### Key Documents/Standards
_mip = MetaMask Improvement Proposal_
-
[MIP-5](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-5.md)
(Overview of the Multichain API)
-
[CAIP-25](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-25.md)
(new connection request API)
-
[CAIP-27](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-27.md)
(new request API, envelope with target scope/chainId included)
-
[MIP-6](https://github.com/MetaMask/metamask-improvement-proposals/blob/main/MIPs/mip-6.md)
(Overview of how the Multichain API’s EVM support diverges from the 1193
injected provider)


## **Manual testing steps**
**(RECOMMENDED)** Use the [Multichain Test
Dapp](https://metamask.github.io/test-dapp-multichain/latest/)
NOTE: `window.postMessage` should be used as extensionId for mobile.
- [Video Demo for Interacting w/ Multichain Test
Dapp](https://drive.google.com/file/d/113iM80dZItEAGkobJkBh17h68Y5dgTS-/view)

**OR**
```
yarn setup:flask
```
Then

```
yarn start:android:flask
```

or

```
yarn start:ios:flask
```

Setup event listener via dev tools

```
window.addEventListener('message', (event) => {
  const {
    target,
    data
  } = event.data;
  if (
    target !== "metamask-inpage" ||
    data?.name !== 'metamask-multichain-provider'
  ) {
    return;
  }
  console.log(data.data)
})
```

Send a multichain API request via dev tools
```
const caipPostMessage = (data) => {
  window.postMessage({
    target: 'metamask-contentscript',
    data: {
      name: 'metamask-multichain-provider',
      data
    }
  }, location.origin)
}

// create session
caipPostMessage({
    jsonrpc: '2.0',
    method: 'wallet_createSession',
    params: {
      optionalScopes: {}
    }
})

// get session
caipPostMessage({
    jsonrpc: '2.0',
    method: 'wallet_getSession',
    params: {}
})

// revoke session
caipPostMessage({
    jsonrpc: '2.0',
    method: 'wallet_revokeSession',
    params: {}
})

// invoke method
caipPostMessage({
    jsonrpc: '2.0',
    method: 'wallet_invokeMethod',
    params: {
            scope: 'eip155:1',
            request: {
                "method": "eth_blockNumber",
                "params": [],
            }
        }
})
```

[More detailed example of manual
requests](https://docs.google.com/document/d/1uq7N8Pt5ZrBQiPa0QFoGYGCnvDeTwhNK3ilOqUGX9JQ/edit?usp=sharing)

taken from [extension equivalent Add Multichain API to Flask
work](MetaMask/metamask-extension#27782)

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.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-extension/blob/develop/.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: sethkfman <10342624+sethkfman@users.noreply.github.com>
Co-authored-by: Jiexi Luan <jiexiluan@gmail.com>
Co-authored-by: Cal Leung <cal.leung@consensys.net>
Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com>
Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com>
Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com>
Co-authored-by: Arthur Breton <arthur.breton@consensys.net>
Co-authored-by: Alex Donesky <adonesky@gmail.com>
<!--
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?
-->

When Infura goes down, we want to automatically and invisibly redirect
requests from Infura RPC endpoints to Quicknode endpoints.

Some context:

- There is not one central Quicknode RPC endpoint that all Infura
requests will be forwarded to; rather, each Infura-supported chain gets
its own Quicknode endpoint. All of the Infura RPC endpoints that
Quicknode currently supports are:
  - Ethereum Mainnet
  - Linea Mainnet
  - Arbitrum Mainnet
  - Avalanche
  - Optimism (OP) Mainnet
  - Polygon Mainnet
  - Base Mainnet
- These Quicknode endpoint URLs contain an API key, so to keep them
secret, we assume they are stored in environment variables.
- The failover behavior itself is already present in
`@metamask/network-controller`, where a new `failoverRpcUrls` property
has been added to the `RpcEndpoint` type.
- In a previous commit, we already upgraded
`@metamask/network-controller`, which also modified how requests are
generally made so that failed requests are automatically retried (and
retries are paused if there are too many consecutive failures).
- To save money, the Quicknode endpoints will usually stay offline. When
Infura goes down, we send a signal via Segment. By triggering a backend
service this will cause Quicknode to come online. This takes a bit of
time, so we need to account for this.
- We also want to be able to control the behavior via a feature flag.

Given this, this commit:

- Adds a migration to fill in `failoverRpcUrls` for all supported Infura
RPC endpoints in NetworkController state with Quicknode endpoints.
- Listens for when Infura is unavailable (fails too many times) and
creates a Segment event so that Quicknode can be automatically
activated.
- Configures NetworkController with a longer retry timeout for the block
tracker. While Infura is down but we are waiting for Quicknode to come
online, we don't want the failover logic to think that Quicknode is also
down. This lengthened timeout will allow us to wait longer.
- Adds some minimal UI to allow users to see that Infura endpoints have
a failover URL assigned. The failover URL field is non-editable.
- Listens for when the feature flag is turned on and off and calls
appropriate methods in NetworkController to enable or disable the
failover behavior. This also shows or hides the aforementioned UI.

## **Related issues**

Closes MetaMask#14120.

## **Manual testing steps**

There are 7 environment variables that you need to have set in `.js.env`
before you begin. Please contact me in Slack and I will give them to
you.

Additionally, you will need to log in to LaunchDarkly, navigate to the
Mobile environment, navigate to the
`wallet-framework-rpc-failover-enabled` feature flag, click on `main -
dev`, and enable the feature flag.

### Testing the UI changes

1. Check out this branch locally.
2. Run `yarn setup` or `yarn setup:expo` and then run `yarn watch`.
3. Open the app locally (simulator or physical device).
4. Set up an account if necessary.
5. Tap the network switcher and click on "Edit" next to "Ethereum
Mainnet".
6. Next to "Infura", you should see a "Failover" tag, and under the "RPC
URL" field, you should see a new field "Failover RPC URL" which should
contain a truncated Quicknode URL.
7. Open the network switcher again.
8. Add "Avalanche C-Chain" (which is an Infura-supported "additional"
network).
9. Next to "Infura", you should see a "Failover" tag, and under the "RPC
URL" field, you should see a new field "Failover RPC URL" which should
contain a truncated Quicknode URL.
10. Open the network switcher again.
11. Tap "Add a custom network".
12. Add a new network, such as "Flare Mainnet":
https://chainlist.wtf/chain/14/. Type in a network name, add a new RPC
URL, then type in the chain ID and the symbol.
- Make sure to put the RPC URL first and then the RPC name, or else you
won't be able to save.
13. Try switching to the new network. You should not see any errors
doing so.
14. Click on the network switcher and edit Flare. You should not see a
tag next to the name of the network, and you should not see a "Failover
RPC URL" field beneath "RPC URL".
15. Open the browser and go to `docs.metamask.io`.
16. Tap the hamburger menu, go to "Wallet API", tap the menu again, go
to "JSON-RPC API", tap the menu again, and go to
`wallet_addEthereumChain`.
17. Click on "Connect MetaMask".
18. Scroll down and run the request (which should add Gnosis). Accept
the approval and wait for the network to be switched to.
19. Tap back on the wallet view and open the network switcher.
20. Go to edit Gnosis. You should not see a tag next to the name of the
network, and you should not see a "Failover RPC URL" field beneath "RPC
URL".

### Testing the failover logic

1. Log into the MetaMask Developer portal.
2. Click on "Infura RPC" in the sidebar.
3. Click on the "All Endpoints" tab if not already selected.
4. Uncheck a network. Let's go with Linea Mainnet. Click "Save Changes".
5. Check out this branch locally.
6. We need to lower the time that the RPC failover logic waits before
trying an unavailable endpoint. Open `Engine.ts` and add the following
lines:
    ``` diff
      getRpcServiceOptions: (rpcEndpointUrl) => {
        const maxRetries = 4;
        const commonOptions = {
          fetch: globalThis.fetch.bind(globalThis),
          btoa: globalThis.btoa.bind(globalThis),
        };

        if (getIsQuicknodeEndpointUrl(rpcEndpointUrl)) {
          return {
            ...commonOptions,
            policyOptions: {
              maxRetries,
// When we fail over to Quicknode, we expect it to be down at
// first while it is being automatically activated. If an endpoint
// is down, the failover logic enters a "cooldown period" of 30
// minutes. We'd really rather not enter that for Quicknode, so
              // keep retrying longer.
              maxConsecutiveFailures: (maxRetries + 1) * 14,
            },
          };
        }

        return {
          ...commonOptions,
          policyOptions: {
            maxRetries,
            // Ensure that the circuit does not break too quickly.
            maxConsecutiveFailures: (maxRetries + 1) * 7,
    +       circuitBreakDuration: 60 * SECONDS
          },
        };
      },
    ```
7. Run `yarn setup` or `yarn setup:expo`.
8. We need to add some logging. Open
`node_modules/@metamask/network-controller/dist/rpc-service/rpc-service.cjs`.
Look for `async function _RpcService_executePolicy` and then make these
changes:
    ``` diff
async function _RpcService_executePolicy(jsonRpcRequest, fetchOptions) {
return await __classPrivateFieldGet(this, _RpcService_policy,
"f").execute(async () => {
+ console.log('<- Sending request to', this.endpointUrl.toString(),
'with', fetchOptions);
const response = await __classPrivateFieldGet(this, _RpcService_fetch,
"f").call(this, this.endpointUrl, fetchOptions);
              if (response.status === 405) {
                  throw rpc_errors_1.rpcErrors.methodNotFound();
              }
              if (response.status === 429) {
throw rpc_errors_1.rpcErrors.internal({ message: 'Request is being rate
limited.' });
              }
              if (response.status === 503 || response.status === 504) {
                  throw rpc_errors_1.rpcErrors.internal({
message: 'Gateway timeout. The request took too long to process. This
can happen when querying logs over too wide a block range.',
                  });
              }
              const text = await response.text();
+ console.log('-> Received response from', this.endpointUrl.toString(),
'body', text);
              if (jsonRpcRequest.method === 'eth_getBlockByNumber' &&
    ```
9. Run `yarn watch` or `yarn watch:clean`.
10. Open the app locally (simulator or physical device).
11. Set up an account if necessary.
12. Once you are on the home screen, tap on the network switcher and
choose Linea Mainnet.
13. In the terminal, you should start seeing lines like:
    ```
LOG <- Sending request to https://linea-mainnet.infura.io/v3/[REDACTED]
with {"body":
"{\"id\":6323405206068855,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}",
"headers": {"Accept": "application/json", "Content-Type":
"application/json"}, "method": "POST"}
LOG -> Received response from
https://linea-mainnet.infura.io/v3/<API_KEY> body project ID does not
have access to this network, see https://infura.io/dashboard
    ```
    as well as errors like:
    ```
ERROR [Error: PollingBlockTracker - encountered an error while
attempting to update
    latest block:
    Error: Could not parse response as it is not valid JSON
    ```
14. Wait about 2 minutes. After a while you should see:
    ```
LOG [MetaMask DEBUG]: Creating Segment event "RPC Service Unavailable"
with chain_id_caip: "eip155:59144", rpc_endpoint_url:
linea-mainnet.infura.io
    ```
    and then something like:
    ```
LOG <- Sending request to
https://compatible-late-dinghy.linea-mainnet.quiknode.pro/[REDACTED]/
with {"body":
"{\"id\":6323405206068857,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}",
"headers": {"Accept": "application/json", "Content-Type":
"application/json"}, "method": "POST"}
LOG -> Received response from
https://compatible-late-dinghy.linea-mainnet.quiknode.pro/[REDACTED]/
body {"jsonrpc":"2.0","id":6323405206068857,"result":"0x11beec8"}
    ```
15. Now switch back to the MetaMask Developer console and re-enable
Linea Mainnet.
16. Switch to Ethereum Mainnet and then back to Linea Mainnet.
17. You should now start seeing:
    ```
LOG <- Sending request to https://mainnet.infura.io/v3/[REDACTED] with
{"body":
"{\"id\":6323405206068859,\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[]}",
"headers": {"Accept": "application/json", "Content-Type":
"application/json"}, "method": "POST"}
    ```

## **Screenshots/Recordings**

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

### **Before**

Editing an Infura network:

<img width="488" alt="Screenshot 2025-05-13 at 1 42 25 PM"
src="https://github.com/user-attachments/assets/5df2e37b-303f-47f1-ae58-fb6825687a83"
/>

### **After**

Editing an Infura network:

![Screenshot 2025-05-02 at 8 58
41 AM](https://github.com/user-attachments/assets/47bfbf60-d83f-4b29-b683-f80bfd0318eb)

![Screenshot 2025-05-02 at 9 10
28 AM](https://github.com/user-attachments/assets/f82c1354-ae29-466d-9eba-9451aa7633c7)

Editing a custom network:

![Screenshot 2025-05-02 at 8 59
08 AM](https://github.com/user-attachments/assets/d9708c64-eef8-42ef-9c5b-3b2fb155829a)

Here is a video that goes through all Quicknode-suppported Infura
networks and then shows selecting a custom RPC endpoint vs. Infura RPC
endpoint:


https://github.com/user-attachments/assets/50fdddbb-2d88-4c7d-ac02-8e38371b2956

## **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 an initial Root Route to the deposit feature 

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/RAMPS-2374
https://consensyssoftware.atlassian.net/browse/RAMPS-2375

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

Refactors the `AccountConnect` and `AccountPermissions` components to
use `CaipChainId` and `CaipAccountId` primitives rather than the
existing `Hex` type. Also renames the `AccountSelectorList` component to
`EvmAccountSelectorList`, and makes a duplicate version
`CaipAccountSelectorList` that is `CaipAccountId` compatible.

There shouldn't be any real user facing change, but there are likely a
few slight non-functional discrepancies.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4739

## **Manual testing steps**

1. Go to the test dapp from the in-app browser
2. Connect
3. Change the selected accounts and networks
4. Make sure what is granted matches what was selected

----

1. Go to the test dapp from the in-app browser
2. Connect
3. Unselect all networks
4. Unselect all accounts, then select an account
5. See that all networks matching the same ecosystem as the selected
account were also selected
6. Make sure what is granted matches what was selected


----

1. Go to the test dapp from the in-app browser when already granted
permissions
2. Click the top right icon
3. Modify the permitted accounts and chains
4. Verify that the test dapp correctly reports these changes
7. (You may have to use the Safari Developer tool to manually make a
wallet_getPermissions call to see the contents of the resulting
eth_accounts and permitted-chains permissions)

## **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: ffmcgee <joao.carlos@consensys.net>
Co-authored-by: ffmcgee <jc.992@hotmail.com>
Co-authored-by: ffmcgee <51971598+ffmcgee725@users.noreply.github.com>
Co-authored-by: Alex Donesky <adonesky@gmail.com>
…9.0`, `23.5.0` (MetaMask#15490)

<!--
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 bumps:
- `@metamask/controller-utils` from `11.8.0` to `11.9.0`
- `@metamask/network-controller` from `23.4.0` to `23.5.0`

These two bumps are required to Improves handling of HTTP status codes
in rpc-service to prevent unnecessary circuit breaker triggers.
- HTTP 4XX responses (e.g. rate limit errors) will no longer trigger the
circuit breaker policy.

<!--
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.
gantunesr and others added 25 commits May 21, 2025 20:13
<!--
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?
-->

Set CODEOWNERs for multichain accounts

## **Related issues**

Fixes: None

## **Manual testing steps**

Not applicable

## **Screenshots/Recordings**

applicable

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

This PR fixes the issue where pressing show accounts in the bottom sheet
of the AddNewAccount does nothing.

Changed:
1. `AddNewAccount` now uses the SrpListItem when displaying only one
keyring.
2.  Css styles of `AddNewAccount` and `SrpListItem`
3. Add testId prop to `SrpListItem` 

<!--
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?
4. What is the improvement/solution?
-->

## **Related issues**

Fixes: MetaMask#15403
Fixes:
https://consensyssoftware.atlassian.net/browse/MMMULTISRP-174?atlOrigin=eyJpIjoiYWRkYTUzMTUxN2QwNGZjOThhZTY5NTg0OTI5NjFmZDkiLCJwIjoiaiJ9

## **Manual testing steps**

1.  Have 2 srps in the wallet
2. AccountActions and click on Ethereum account
5. click 'show accounts'
6. See that the account list is expanded. 

## **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/a8b80f61-dc27-4d5d-9f7c-011a05dbffa2


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

### **After**


https://github.com/user-attachments/assets/617b8cca-426b-4f7a-9d3c-a6cfd9d93bba


<!-- [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 addDiscoveredAccounts to use createAccount from the
MultichainWalletSnapClient. It will provide the correct first party snap
name.

Changes:
1. `addDiscoveredAccounts` uses the `createAccount` from the
MultichainWalletSnapClient

<!--
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#15399
Resolves:
https://consensyssoftware.atlassian.net/browse/MUL-209?atlOrigin=eyJpIjoiMjdlNTQxYTVmYjNkNDQ3ZmFlODFlMzllMTZkYTNkMDEiLCJwIjoiaiJ9

## **Manual testing steps**

1. Create a brand new wallet
2. Import a SRP
3. See that the Solana account names are correct and not. `Solana
Account 1 2`

## **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**
We need to include the new NativeRampsSdk to provide the necessary
methods for interacting with Transak's White Label API.
<!--
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.

---------

Co-authored-by: George Weiler <georgejweiler@gmail.com>
## **Description**

Add EXPO pipelines to make it easier:
- `expo_main_pipeline`

## **Related issues**

Fixes: NA

## **Manual testing steps**

1. Run Bitrise commands and see 3 executables

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

[Main
build](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/3ab78c4b-a422-410a-a567-fa43850461d2)

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

Update dapp connection flows to prepare for Solana integration

Latest passing [regression
tests](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/d46084c9-f99f-4de5-a5ec-0980c3a27f11)

## **Related issues**

Related to:
[4808](MetaMask/MetaMask-planning#4808)

## **Manual testing steps**

1. Goto the browser tab and goto any dapp (e.g
https://metamask.github.io/test-dapp/)
2. Click on "Connect" and observe the new flow. 
3. Update accounts connected by selecting the "Edit Accounts" text at
the bottom OR the original way by clicking the permissions tab then
clicking on accounts permissions
4. From the "Permissions Tab" connect /disconnect networks and observe
that things are working as before
5. Test connections between dapps with many accounts and networks and
observe things are working as normally

## **Screenshots/Recordings**

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

### **Before**

NA

### **After**


https://github.com/user-attachments/assets/ca14e71a-6c4d-4b09-ae45-07e433dc225c

## **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.
…ansactions (MetaMask#15329)

## **Description**

Adding confirmation page for dapp request to upgrade+batched
transactions

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4804

## **Manual testing steps**

1. Enable 7702 locally
2. Go to test dapp
3. Submit send calls request and check confirmation page that opens

## **Screenshots/Recordings**

https://github.com/user-attachments/assets/325824ea-9cee-44f5-a9dc-7fe6adcf6330

## **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.
…enu interaction (MetaMask#15301)

- Refactored PortfolioHomePage to utilize WebID selectors for the
connect wallet button and added a new burger menu element.
- Implemented tapBurgerMenu method for interaction with the burger menu.
- Updated PortfolioPage selectors to include WebID references for better
element identification in tests.

<!--
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:

## **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.
…t if env variable MM_SMART_ACCOUNT_UI_ENABLED is not enabled. (MetaMask#15537)

## **Description**

Fix hook useEIP7702Networks to not check for atomic batch support if env
variable MM_SMART_ACCOUNT_UI_ENABLED is not enabled.

## **Related issues**
NA

## **Manual testing steps**
NA

## **Screenshots/Recordings**
NA

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

PR to fix a re-render issue on the main balance where it was displaying
zero balance for a little while then it resolves to showing the correct
balance.

## **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/1cfb876d-62a6-4517-8633-667517df433a



### **After**

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



https://github.com/user-attachments/assets/2c81cce0-fe5a-4877-8f6c-34839028f7e8



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

<!--
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**
Test was renamed to `e2e/specs/wallet/portfolio-connect.spec.js`.
<!--
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.
<!--
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 make legacy approval transaction multichain ready. 

Branch tested both against both `main` and
`feat-4144-per-dapp-updated-from-main-april-7th` recordings below.

## **Related issues**

Fixes: MetaMask#14915

## **Manual testing steps**

See the task for detailed 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**

Test against `feat-4144-per-dapp-updated-from-main-april-7th` part 1



https://github.com/user-attachments/assets/e2ee8681-759e-45c6-b952-cb6ac1c1c0a9



Test against `feat-4144-per-dapp-updated-from-main-april-7th` part 2




https://github.com/user-attachments/assets/00762115-513a-4ae4-b2c6-08b8c8d4005a




Test against `main`


https://github.com/user-attachments/assets/b9a686c7-914f-416c-a6ad-6688d15eff18


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

<!--
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 passes the missing entropySource for the default account created
during discoverAccounts.

<!--
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: https://consensyssoftware.atlassian.net/browse/MUL-234

## **Manual testing steps**

1. Create a fresh wallet
2. Import a srp with out any solana accounts
3. See that there is a default solana account created. 

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

<!--
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**

Fixes a rare edge-case where invoking token refreshes with a network
that is missing a currency rate causes the app to crash.

This also adds a small performance improvement to update token exchange
rates in batch.

## **Related issues**

Fixes: MetaMask#15006

## **Manual testing steps**

N/A - I've not found a nice way to replicate this sentry error.


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

Reduces Wallet > ScrollableTabView rerenders by moving the
`renderComponent` callback into a separate component that can use
`React.memo`

Attached is are some recordings that analyse the before and after
renders.

## **Related issues**

Fixes: MetaMask#14851

## **Manual testing steps**

You can monitor performance by using react dev tools and swapping to
popular networks/single networks

## **Screenshots/Recordings**

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

### **Before**

Before Analysis

https://www.loom.com/share/e549e90507e443d1875bc4e01ad2906f

### **After**

After Analysis


https://www.loom.com/share/a7543c599c14411f9c3589ae6bdb8320?sid=740ae3d2-8db1-482c-8afa-eea8f98d5648

## **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**
Adds coverage for E2E Segment events for a successful swap

<!--
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**

- [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.
…ing Redux actions (MetaMask#15474)

<!--
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 is a follow up for the task on providing a tool for identifying
performance issues related to Redux dispatches. The tool/plugin -
[redux-devtools-expo-dev-plugin](https://github.com/matt-oakes/redux-devtools-expo-dev-plugin)
is designed to work with `Expo` as a plugin. To access the tool,
`shift+m` in the watcher window and select `Open
redux-devtools-expo-dev-plugin` to open the debugger in the browser.

Watcher window with plugin option
<img width="440" alt="image"
src="https://github.com/user-attachments/assets/05fcf8e7-0af9-4712-9127-c0ffd27c933b"
/>

Example view of debugger
<img width="1256" alt="image"
src="https://github.com/user-attachments/assets/7b673039-325d-4eee-a993-9597b352ac4b"
/>

## **Related issues**

Fixes: MetaMask#15028 

## **Manual testing steps**

Reference description above

## **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.
…/swap (MetaMask#15409)

## **Description**

PR fixes couple identified issues when the user attempts to swap/bridge
and clicks on the "i" icon to view asset details page.

Related core PR: MetaMask/core#5833

## **Related issues**

Fixes: MetaMask#15407

## **Manual testing steps**

Swap scenario

1. Select solana
2. Click on the button in the buttom middle of the screen
3. Click on Swap
4. Click on the pre-filled "to" asset
5. Click on the "i" icon that appears in front of any other token
6. You should be redirected to the asset details page successfully

Bridge scenario starting on EVM network

1. Select Ethereum EVM network
2. Click on the button in the buttom middle of the screen
3. Click on Bridge
4. Click on bridge to
5. Choose solana
6. Click on the "i" icon that appears in front of any other token
7. You should be redirected to the asset details page successfully

Bridge scenario starting on solana network

1. Select Solana
2. Click on the button in the buttom middle of the screen
3. Click on Bridge
4. Click on bridge to
5. Choose Ethereum
6. Click on the "i" icon that appears in front of any other token
7. You should be redirected to the asset details page successfully

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

Swap scenario:


https://github.com/user-attachments/assets/c8ba4527-12c2-431e-acb9-f4e898932734

Bridge scenario:



https://github.com/user-attachments/assets/2a6d5951-55cd-4c37-bf76-8ca1aa46c483



https://github.com/user-attachments/assets/7cdab024-6b89-46e9-b26c-c145bc8c1501



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

Remove `yarn.lock` from `CODEOWNERS` to simplify PR reviews for
dependency changes, mirroring the extension setup.
…ask#15556)

<!--
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**

These polling hooks were selecting and returning results, which were
never used by the Provider. Because of this, the provider was
re-rendering when the hook selectors changed. This does not happen now.

<!--
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: https://consensyssoftware.atlassian.net/browse/MMASSETS-844

## **Manual testing steps**

N/A, just test that Assets are working correctly.

## **Screenshots/Recordings**

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

### **Before**

![Screenshot 2025-05-22 at 18 03
18](https://github.com/user-attachments/assets/4676d7ad-5cf2-4bc5-b6f5-19a7ce056334)

### **After**

![Screenshot 2025-05-22 at 18 04
35](https://github.com/user-attachments/assets/5ae40454-0a51-4af5-9a25-db87ec7caaf2)


https://www.loom.com/share/53070c0eee9a462ab5515e6953fb387a?sid=b1f0e39d-e1e8-4577-886d-d3a39d10d724

## **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.
…Mask#15413) (MetaMask#15415)

<!--
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**

These changes come from
MetaMask#15413 from Daniel at
Margelo

1. Using `expo-filesystem` will make this around ~20 times faster for
Android and ~5 times faster for iOS
2. As result TTI to login screen dropped from ~3s to ~2s for mid-range
Android phone and it's quite noticeable for end user

I would recommend also migrate rest of usages of RNFS to
`expo-filesystem` in your app. It shouldn't be hard and it should be
able to replace also `react-native-blob-util`.

## **Related issues**

Fixes: MetaMask#15560 

## **Manual testing steps**

1. Start the app
2. It should start about ~1s faster then before for mid range Android
phones

## **Screenshots/Recordings**




https://github.com/user-attachments/assets/342523f7-a26b-46d4-8cdf-402a8d5b4bfb



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

## **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: Daniel Suchý <suchydan@gmail.com>
<!--
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 e2e test coverage for the transaction activity and below is
the test scenario -

1. Login to the application, click on the popular network drop down.
2. Navigate to the token details page, ensuring that the selected
network is Ethereum.
3. Initiate the send flow from the token details page.
4. Validate to the switch modal should appear and click on "Got it"
button(ensure the button is functional and clickable)
5. Complete the transaction and verify that the transaction history
screen is displayed.

<!--
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:

https://consensyssoftware.atlassian.net/browse/MMQA-476

## **Manual testing steps**

Execute the test locally and validate pipeline should pass

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

- [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.
Co-authored-by: smgv <gpatra1996@gmail.com>
fix: remove unused variables
Copy link

github-actions bot commented May 23, 2025

CLA Signature Action:

Thank you for your submission, we really appreciate it. We ask that you all read and sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just by adding a comment to this pull request with this exact sentence:

I have read the CLA Document and I hereby sign the CLA

By commenting with the above message you are agreeing to the terms of the CLA. Your account will be recorded as agreeing to our CLA so you don't need to sign it again for future contributions to this repository.

26 out of 37 committers have signed the CLA.
@infiniteflower
@Matt561
@gambinish
@bfullam
@makemesteaks
@david0xd
@montelaidev
@joaoloureirop
@tommasini
@amitabh94
@Daniel-Cross
@Prithpal-Sooriya
@C-Ivan
@mcmire
@jiexi
@cryptodev-2s
@Cal-L
@FrederikBolding
@sethkfman
@chrisleewilcox
@EtherWizard33
@AxelGes
@vinnyhoward
@jpuri
@sahar-fehri
@ieow
@aganglada
@saraantole
@elribonazo
@PatrykLucka
@cmd-ob
@khanti42
@ffmcgee725
@wachunei
@gantunesr
@OGPoyraz
@hjetpoluru

@ieow ieow closed this May 24, 2025
@github-actions github-actions bot locked and limited conversation to collaborators May 24, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.