Skip to content

feat: 12.18.0 #32383

New issue

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

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

Already on GitHub? Sign in to your account

Open
wants to merge 191 commits into
base: master
Choose a base branch
from
Open

feat: 12.18.0 #32383

wants to merge 191 commits into from

Conversation

DDDDDanica
Copy link
Contributor

@DDDDDanica DDDDDanica commented Apr 29, 2025

🚀 v12.18.0 Testing & Release Quality Process

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


📋 Key Processes

Testing Strategy

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

GitHub Signoff

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

Issue Resolution

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

Cherry-Picking Criteria

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

🗓️ Timeline and Milestones

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

✅ Signoff Checklist

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

Team sign-off checklist

  • Accounts
  • Assets
  • Confirmations
  • Design System
  • Extension Platform
  • Hardware wallets
  • Identity
  • MMI
  • Network Enablement
  • Snaps Platform
  • Solana
  • Swaps and Bridge
  • Transactions
  • Vault
  • Wallet API Platform
  • Wallet Framework
  • Wallet UX

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

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

Many thanks in advance

Reference

stanleyyconsensys and others added 30 commits April 10, 2025 14:48
<!--
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**
Currently there is no specific order for test network
This PR is to adding a custom order with the follow rules
- Sepolia go first,
- then Linea Sepolia 
- then sort the rest of the test networks in alphabetical order


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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31827?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Open MetaMask Wallet
2. Go to network list
3. Switch on 'Show Test network'
4. The list of the network should display in above order

## **Screenshots/Recordings**

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

### **Before**
<img width="416" alt="image"
src="https://github.com/user-attachments/assets/d695d021-c9e1-4f95-b2fe-3e2697ec7f14"
/>

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

### **After**

<!-- [screenshots/recordings] -->
<img width="403" alt="image"
src="https://github.com/user-attachments/assets/3160a19c-51a7-4f73-b104-d4612130348f"
/>


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

Enables Multi-SRP in main

Note that this [removes a code
path](https://github.com/MetaMask/metamask-extension/pull/31832/files#diff-dfccaa8a06b45352de5d5a3aecb97bedc5831bf9161d7e6cb6294a90715dab87L313)
in the account list menu, which is now unreachable. This is intentional,
because the multi-SRP adds a new form which replaces that one.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31832?quickstart=1)

## **Related issues**

Fixes: Multi-SRP epic

## **Manual testing steps**

In a main build, you can see "Import secret recovery phrase" in the
account menu

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Patryk Łucka <[email protected]>
…1774)

## **Description**
- It should be possible to disable account upgrade on account level
- Address feedbacks from
[PR](#31765)

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4612

## **Manual testing steps**

1. Go to test dapp
2. Disable smart account update for an account of user
3. Change account and update for different account should be possible

## **Screenshots/Recordings**
NA

## **Pre-merge author checklist**

- [X] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31745?quickstart=1)

This PR includes two small fixes for the accounts UI/UX,

1. The hidden account list gets out of sync with the
`accounts-controller` state. The short term solution is to clear the
list of hidden accounts, eventually the hidden and pinned accounts
feature should be ported to the `accounts-controller`.
2. There's no scroll in the accounts list when the number of hidden
accounts is too big. This change moves the hidden account component
inside the hierarchy of the parent component with the scroll enabled

## **Related issues**

Fixes: #30372

## **Manual testing steps**

1. Onboard into MetaMask
2. Create +10 accounts of different types
3. Hide at least 10 accounts
4. Check that you can scroll the list when the hidden accounts list is
expanded
5. Lock the wallet
6. Go via the "Forgot password" flow
7. Check that all accounts are visible (not hidden)

## **Screenshots/Recordings**

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

### **Before**

Check issue: #30372

### **After**


https://github.com/user-attachments/assets/23ce6566-dc8e-4234-8777-8a9a655f4933


https://github.com/user-attachments/assets/758d3120-4e6f-43f0-874d-2ebc18494e35

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**
When a chainId / networkClientId is available in a transaction, we
should prioritise that over the chainId that is selected in a wallet.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31776?quickstart=1)

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.

---------

Signed-off-by: dan437 <[email protected]>
…31564)

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

Create related functions and migrate following e2e tests files to
Typescript and Page object modal.
```
test/e2e/tests/account/account-details.spec.js
test/e2e/tests/account/incremental-security.spec.js
```
This PR is the final step in completing the migration of all e2e tests
in `test/e2e/tests/account/` folder to POM

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31396?quickstart=1)

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-363

## **Manual testing steps**

Tests should pass and be robust

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Marina Boboc <[email protected]>
## **Description**

This PR implements [Solana Wallet
Standard](https://github.com/anza-xyz/wallet-standard/) using script
injection, enabling users use MetaMask on Solana dApps.

The communication between the dApp and MetaMask uses the Multichain API.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31705?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Run `yarn` then `yarn start:flask`
2. If you already have a local Flask extension installed, then first
uninstall it from chrome://extensions
3. Install the built flask build by loading `dist/chrome` and setup a
Solana account
4. Go to any Solana Wallet Standard compatible app, such as [Wallet
Standard Demo](https://anza-xyz.github.io/wallet-adapter/example/) or
https://jup.ag/
5. Connect with MetaMask
6. Try the features proposed by the dApp

## **Screenshots/Recordings**
MetaMask icon is the first one (the 2nd being Solflare):
![Screenshot 2025-04-08 at 15 09
48](https://github.com/user-attachments/assets/5d913f75-58da-43cf-9c0b-5e21c01afd0d)
Connection modal:
![Screenshot 2025-04-08 at 15 17
28](https://github.com/user-attachments/assets/38822726-607e-4512-ab98-b06458fc184a)
When connected:
![Screenshot 2025-04-08 at 15 17
46](https://github.com/user-attachments/assets/61f34af4-f469-402d-ab97-f3c1fc79ac89)

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Christian Montoya <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: jiexi <[email protected]>
## **Description**

PR to trigger nft detection on account switch

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31481?quickstart=1)

## **Related issues**

Fixes: #28654

## **Manual testing steps**

1. Click on account list menu
2. Switch to another account
3. You should see a call to detectNfts (nft-api) being triggered in
networks tab when you are on ethereum or linea

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

Enables the clicking the connected status indicator to open the review
permissions page when the currently selected network is non EVM.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31825?quickstart=1)

## **Related issues**

Fixes:
https://github.com/orgs/MetaMask/projects/146/views/6?pane=issue&itemId=105350449&issue=MetaMask%7CMetaMask-planning%7C4599

## **Manual testing steps**

1. On dapp with permissions, open popup
2. Switch selected network to Solana Mainnet
3. See that the top right indicator is not disable and clicking it opens
the review permission view

## **Screenshots/Recordings**

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

### **Before**

![Screenshot 2025-04-09 at 3 29
12 PM](https://github.com/user-attachments/assets/b26c203e-73ab-4002-9077-4f8b70292612)


### **After**

![Screenshot 2025-04-09 at 3 24
55 PM](https://github.com/user-attachments/assets/3821e47e-128a-4248-8004-08d2d4984c06)

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
…onents (#31582)

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

> Note the Remote Mode feature is still work-in-progress and currently
behind the `vaultRemoteMode` feature flag so shouldn't accessible by
users.

<!--
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 a the initial screens (and associated components) for
enabling swaps and daily allowances as part of the upcoming remote mode
feature
- As highlighted earlier, this feature is still in progress and the
screens and associated components are to provide the surface area for
the actual feature + functional implementation. A number of elements are
missing and will be added in separate PR's, including (although not
limited to):
  - i18n
  - Refactors to the screens / components themselves

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31582?quickstart=1)

## **Related issues**

Fixes:
[31451](#31451),
[31452](https://github.com/orgs/MetaMask/projects/167?pane=issue&itemId=104376654&issue=MetaMask%7Cmetamask-extension%7C31452)

## **Manual testing steps**

1. Create the build (`yarn webpack`)
2. Go to `home.html#remote` and walk through the screens using the
recording below for reference
- Note to override the `vaultRemoteMode` feature flag (which will
implicitly default to disabled), the configuration steps are available
[here](https://github.com/MetaMask/contributor-docs/blob/main/docs/remote-feature-flags.md#a-local-build).
Example`.manifest-overrides.json`:

```json
{
  "_flags": {
    "remoteFeatureFlags": {
      "vaultRemoteMode": true
    }
  }
}
```

4. The components and screens can also be viewed in Storybook (`yarn
storybook`) under the Vault namespace

## **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/1849de42-cdcd-419b-835b-482034c272ad



## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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?
-->

We are splitting this off from the RPC failover PR to unblock other
controller upgrades.

Additionally, we are pinning `controller-utils` to 11.7.0

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31711?quickstart=1)

## **Related issues**

N/A

## **Manual testing steps**

There should be no functional changes, everything should work as-is.

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: MetaMask Bot <[email protected]>
Co-authored-by: Stanley Yuen <[email protected]>
## **Description**

Bump institutional snap version for release:

[Snap
changelog](https://github.com/MetaMask/snap-institutional-wallet/blob/main/packages/snap/CHANGELOG.md)

Motivation: Largely, removing annoying logs so that the snap is a good
citizen in production

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31838?quickstart=1)

## **Related issues**

None

## **Manual testing steps**

None needed - no visible changes

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [X] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

Adds better support for Solana Bridge transactions, allowing for users
to see which steps are in progress or finalized. This required the
inclusion of 2 custom UI components and a hook that maps the existing
nonEVM transaction list in order to determine which of them are bridge
originated, as it detects them as 'sends' initially.

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31546?quickstart=1)

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MMS-2110 &
https://consensyssoftware.atlassian.net/browse/MMS-2162 (this bug is
fixed with the improvements)

## **Manual testing steps**

1. With a Solana account, complete a bridge transaction.
2. Observe the transaction steps being displayed.
3. Other transaction types should remain unchanged.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**


https://github.com/user-attachments/assets/0d21ee67-0e0a-4776-8e29-e4d1313dcfa7

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

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

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

Fixes a bug introduced into 12.16.0 RC in this PR:
MetaMask/metamask-mobile#14400

Bug was that users could enter into a state where they could send NFTs
on a different network than they belonged on. This is because we are now
showing NFTs across all chains that a user has NFTs on, rather than the
constrained to the GNS currentChain.

Users could enter into NFT send flow in two ways:

1. Via the NFT detail screen. We proactively change the network on the
users behalf if they enter the send flow this way (press Send from the
detail screen of a NFT from a different chain)

2. Via the Send button on the main NFT Grid view. This is where the bug
was caught. When entering into the send flow in this way, users could
enter into a state where they could accidentally send an NFT on a
different chain than intended.

View recording below to visualize this difference.

This fix filters out NFTs in the second flow so that they only ever show
NFTs from the globally selected chain.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31850?quickstart=1)

## **Related issues**

Fixes: #31858

## **Manual testing steps**

1. Add account with NFTs on a network
2. Enter into Send flow as specified in flow 2
3. NFTs should only be listed on network that they are on.

## **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/b35ec707-fe42-4212-8343-446a048758fc

### **After**


https://github.com/user-attachments/assets/eafe05fd-9950-4446-b79e-0d5773e724d1

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Nicholas Gambino <[email protected]>
## **Description**

Use the is native funtion from bridge

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31554?quickstart=1)

## **Related issues**

Fixes: mms-1799

## **Manual testing steps**

## **Screenshots/Recordings**


### **Before**


### **After**


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

* Update Solana
* Update keyring-api
* Adding Interaction type of account for `Unknown` keyring type
* Mapping through transactions and not through outputs which failed
transactions didn't have

Assuming there is only one `from` and `to` items on the transactions, we
map now at the transaction level not on the asset level which simplifies
logic.

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31816?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Remove all your accounts
2. Start creating solana accounts
3. You should see the right formatting of transactions

## **Screenshots/Recordings**

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

### **Before**

<img width="404" alt="Screenshot 2025-04-09 at 11 04 50"
src="https://github.com/user-attachments/assets/ec8755fb-1004-4cf1-827e-033c345159dd"
/>


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

### **After**
<img width="400" alt="Screenshot 2025-04-10 at 13 07 33"
src="https://github.com/user-attachments/assets/b8baf4a2-5bba-410e-8c2f-ccbd0ef7cc6e"
/>

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

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Javier Garcia Vera <[email protected]>
<!--
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**
In this PR, we enable lint to the spec files ending with `*.spec.ts`
extension.
There are no functional changes, so skipping quality the e2e quality
gate.

Future Work: [apply lint to the other test files (like page
objects)](#31853).
This will be done in a separate PR, as it will again break lots of
files, so it will become a very big PR

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31834?quickstart=1)

## **Related issues**

Fixes: #31852

## **Manual testing steps**
No functional changes

1. Check ci / github actions

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: chloeYue <[email protected]>
<!--
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**

Use the DS Button component in `PageContainerFooter`. This impacts a
couple of screens, including the Swaps footers. These changes are meant
to be backwards compatible by mapping the previous types used to the DS
variants and applying similar styling as the legacy buttons. The new DS
button is slightly taller (48px instead of 45px), but some of the
screens override this height anyway. Newer functionality such as
`submitButtonIcon` is preserved, but some unused props are removed, e.g.
`buttonSizeLarge`.


![image](https://github.com/user-attachments/assets/20f2d49f-0424-4035-843d-d1e812703fc7)


[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31870?quickstart=1)

## **Screenshots/Recordings**


![image](https://github.com/user-attachments/assets/f870e503-3047-4c3e-813a-e50dbd55ed9f)


![image](https://github.com/user-attachments/assets/04ffe5cf-85fa-4e1f-9a99-8a8b925c0f58)


![image](https://github.com/user-attachments/assets/f8c28959-c64e-42dc-ad1c-dcc45a6a3e7b)
<!--
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 introduces a banner for the multi srp feature

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31782?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to the account overview and scroll to see the new banner

## **Screenshots/Recordings**

![Screenshot 2025-04-09 at 23 41
50](https://github.com/user-attachments/assets/b225c59f-8618-4fd6-9093-b6af43b12e2d)


<!-- 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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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 is to add property to Account Added event, to understand how many
users are using default account names.

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

Load preinstalled Snaps from JSON files instead of inlining them into
the extension bundle.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31320?quickstart=1)

## **Related issues**

Closes: MetaMask/snaps#3262

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Dario Anongba Varela <[email protected]>
Co-authored-by: David Murdoch <[email protected]>
## **Description**

Do not show unefined emoji if not available

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31537?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go a failed transaction
2. select 10% gas increase

## **Screenshots/Recordings**

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

### **Before**

<img width="388" alt="Screenshot 2025-04-02 at 23 11 09"
src="https://github.com/user-attachments/assets/0901669e-c611-404a-8ce6-ef691b8132fc"
/>

### **After**

<img width="367" alt="Screenshot 2025-04-02 at 23 54 18"
src="https://github.com/user-attachments/assets/217150c6-2b38-4dbc-8ee4-468d43d0682c"
/>


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

Extend sweepstakes end date and refactor

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31900?quickstart=1)

## **Related issues**

Fixes:
[#31902](#31902)

## **Manual testing steps**

1. Go to this home screen - observe that the banner is shown between the
dates `2025-04-09T00:00:00Z` and `2025-04-28T23:59:59Z`
2. Change dates with following command `sudo date -I 04302025` to
automatically hide banner
3. Change date back using `sudo date -I 04112025`
4. Dismiss sweepstakes banner and observe that is isn't shown anymore
5. Change dates once again after the banner has been dismissed - observe
that it is still dismissed

## **Screenshots/Recordings**

NA

### **Before**

NA

### **After**

NA

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

This PR adds 3 tests to the e2e automation script for Bridge

- ERC20 -> NATIVE tx (unapproved)
- NATIVE -> ERC20 tx
- ERC20 -> ERC20 tx

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31817?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**




https://github.com/user-attachments/assets/98ba90ca-6fbe-4308-9eb9-6c9165022fbe





### **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

 This PR displays first party snap accounts in the srp account list.

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31833?quickstart=1)

## **Related issues**

Fixes:
https://consensyssoftware.atlassian.net/browse/MMMULTISRP-160?atlOrigin=eyJpIjoiNzBiYTRmZDk1OWViNDY3NDk2MTE5YmNiYWE4NGU3NjUiLCJwIjoiaiJ9

## **Manual testing steps**

Using beta / flask.

1. Import an additional srp
2. Create a new solana account
3. Go to reveal secret recovery phrase in settings --> security 
4. See the srp list and expand the accounts to see the newly created
solana account there.

## **Screenshots/Recordings**

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

### **Before**


![Screenshot 2025-04-10 at 20 14
03](https://github.com/user-attachments/assets/168a78b9-840b-49e0-9904-72ca18e0dd98)


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

### **After**

<!-- [screenshots/recordings] -->
![Screenshot 2025-04-10 at 20 11
16](https://github.com/user-attachments/assets/928ea4ec-3180-4b77-9545-f4a1b26a871e)


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Gustavo Antunes <[email protected]>
<!--
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 missing padding in Retry (Cancel/Speed up) popover

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31904?quickstart=1)

## **Related issues**

Fixes:  #31903

## **Manual testing steps**

1. Create failed transaction
2. Go to MM
3. Go to Activity
4. Click Failed transaction
5. Observe buttons

## **Screenshots/Recordings**

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

### **Before**

![CleanShot 2025-04-11 at 09 40
59](https://github.com/user-attachments/assets/8eed32a8-65bb-4b6d-b078-a7e9f7c091ed)

### **After**

![CleanShot 2025-04-11 at 09 40
46](https://github.com/user-attachments/assets/86e5d239-e8bd-4031-b23c-4b1d13a62aeb)

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

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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**

<!--
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 triggers Solana account discovery when importing an SRP and
creates Solana accounts for all active addresses found.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Import SRP through onboarding or import SRP option in accounts menu
2. If Solana accounts have any activity, accounts should be added
automatically

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Charly Chevalier <[email protected]>
Co-authored-by: MetaMask Bot <[email protected]>
<!--
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**

</tbody><!--EndFragment-->
</body>
</html>
"_execute_browser_action" is no longer available in Chrome MV3, should
use "_execute_action". but "_execute_action" doesn't work in
Firefox(Firefox MV3 only support "_execute_browser_action" now).

**Solution**:
Add both "_execute_browser_action" and "_execute_action" in config file

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31844?quickstart=1)

## **Related issues**

Fixes: #31837

## **Manual testing steps**

1. Install the extension in Chrome
2. Open Chrome and type Alt+Shift+M
3. Check if popup opend

## **Screenshots/Recordings**
### **After**
Test in Chrome:


https://github.com/user-attachments/assets/7bfc858f-7da1-4931-b100-c44e28dfee93

Test in Firefox:


https://github.com/user-attachments/assets/32d6e330-c226-49b6-ae40-41ece5e509dd


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

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
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? When updating, if the permissions
haven't changed or there aren't more to show, the list will still render
a see all permissions button.
2. What is the improvement/solution? Add an extra check to the
conditional rendering.

## **Manual testing steps**

1. Build this branch
2. Navigate to the test snaps page and go through the update flow with
the update snap.
3. Observe the results.

## **Screenshots/Recordings**

### **Before**


https://github.com/user-attachments/assets/55b6366f-411b-4c0a-8bad-49e6743e6b0b

### **After**


https://github.com/user-attachments/assets/af57d9e2-f70c-42e8-add7-b50eb532c0ea

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
…31934)

## **Description**

This PR fixes an issue where we tried to parse a CAIP Account ID from an
invalid value.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/31934?quickstart=1)

## **Related issues**

Fixes: MetaMask/snaps#3318

## **Manual testing steps**

1. Go to test snaps
2. Use the send form example snap
3. paste a URL

## **Screenshots/Recordings**

### **Before**


https://github.com/user-attachments/assets/4b00780f-f7d6-462c-912f-49ccaafa566f

### **After**


https://github.com/user-attachments/assets/34583809-ac13-495d-87cb-6b0a4e1ba562

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
…ick (#32439)

<!--
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.
-->
No matter the build, MetaMask Solana always announced itself with the
same name.
Now we’re using the build name.

## **Description**
Cherry-pick: #32356
<!--
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? -->

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32356?quickstart=1)

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4770

## **Manual testing steps**

1. Build MetaMask Snap
2. Go this page: https://metamask.github.io/test-dapp-solana/staging/
3. Click on "Select Wallet"

## **Screenshots/Recordings**

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

### **Before**
<img width="431" alt="Screenshot 2025-04-28 at 19 04 30"
src="https://github.com/user-attachments/assets/7685f879-19c6-4b9b-90e8-2a76e8aa426d"
/>
<img width="508" alt="Screenshot 2025-04-28 at 19 28 16"
src="https://github.com/user-attachments/assets/6ee62ab8-f610-4c5f-b26c-1f623d4d6148"
/>
<img width="426" alt="Screenshot 2025-04-28 at 19 28 21"
src="https://github.com/user-attachments/assets/be7daf25-08ef-4ba0-97a2-72a030daa4dd"
/>
<img width="391" alt="Screenshot 2025-04-28 at 19 29 12"
src="https://github.com/user-attachments/assets/90fa8904-99e8-44b0-8ac1-a24585886f5e"
/>


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

### **After**
<img width="442" alt="Screenshot 2025-04-28 at 21 50 24"
src="https://github.com/user-attachments/assets/238d185f-52c6-40e3-b05a-2e5407625236"
/>
<img width="386" alt="Screenshot 2025-04-28 at 21 55 59"
src="https://github.com/user-attachments/assets/af46b25b-e778-4fd2-931e-88e3239ffa4e"
/>
<img width="406" alt="Screenshot 2025-04-28 at 21 56 03"
src="https://github.com/user-attachments/assets/62652ddc-4763-44eb-bddc-aa308ca49df5"
/>
<img width="388" alt="Screenshot 2025-04-28 at 21 56 28"
src="https://github.com/user-attachments/assets/3a437db3-06e4-4ca9-8d0c-9f5648f85dff"
/>
<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32439?quickstart=1)

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Edouard Bougon <[email protected]>
@DDDDDanica
Copy link
Contributor Author

@metamaskbot update-attributions

@metamaskbot
Copy link
Collaborator

Attributions updated

@DDDDDanica
Copy link
Contributor Author

@SocketSecurity ignore

@metamaskbot
Copy link
Collaborator

Builds ready [50d3c15]
UI Startup Metrics (1230 ± 63 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1230113414396312691345
load106393112046011181166
domContentLoaded105792411876011121159
domInteractive17143941729
firstPaint687146119542210761145
backgroundConnect74233710
firstReactRender22165272342
getState1353381927
initialActions001001
loadScripts81768694057858910
setupStore85223913
WebpackHomeuiStartup21171698253315822462336
load16531335208312617361862
domContentLoaded16441331207212417281841
domInteractive161168121353
firstPaint1716140768208312
backgroundConnect319249372866
firstReactRender20754389125336357
getState1034771225
initialActions316135
loadScripts16391330204912417261818
setupStore216289342034
FirefoxBrowserifyHomeuiStartup13911234173910414401601
load12391054147810213121427
domContentLoaded12381054147710213121426
domInteractive1103633742124182
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect19135962130
firstReactRender23195342430
getState10418018822
initialActions001001
loadScripts12211037145910212991397
setupStore10418325614
WebpackHomeuiStartup15901422213115616221986
load13621210188714313961740
domContentLoaded13611209188614313961740
domInteractive80471562085127
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2616139162643
firstReactRender37307063950
getState1253371129
initialActions102111
loadScripts13371193181813913731714
setupStore95505911
cc: @HowardBraham
Benchmark value 111 exceeds gate value 110 for firefox browserify home mean domInteractive
Benchmark value 10 exceeds gate value 9 for firefox browserify home mean setupStore
Benchmark value 27 exceeds gate value 26 for firefox webpack home mean backgroundConnect
Benchmark value 1986 exceeds gate value 1935 for firefox webpack home p95 uiStartup
Benchmark value 1740 exceeds gate value 1660 for firefox webpack home p95 load
Benchmark value 1740 exceeds gate value 1660 for firefox webpack home p95 domContentLoaded
Benchmark value 1714 exceeds gate value 1630 for firefox webpack home p95 loadScripts
Sum of mean exceeds: 3ms | Sum of p95 exceeds: 295ms
Sum of all benchmark exceeds: 298ms

@DDDDDanica
Copy link
Contributor Author

@SocketSecurity ignore

@DDDDDanica
Copy link
Contributor Author

@SocketSecurity ignore-all

runway-github bot and others added 2 commits May 1, 2025 21:04
…r cp-12.17.1 cp-12.18.0 (#32441)

- fix: (cp-12.17.1) patch notification services controller (#32391)

## **Description**

Wow, huge oopsy on my side. Urgh, a little annoyed that I didn't spot
this earlier.

After doing some thorough debugging, I found an infinite state update
loop from the NotificationServicesController.
I didn't find the full context but this controller:

- Listens to `KeyringController:stateChange` events
- When receiving an event we perform a `KeyringController:withKeyring`
action.

Somewhere above (or potentially another controller firing events or
actions?) will then fire another `KeyringController:stateChange` and the
loop repeats. This prevents other state updates and redux updates.

Controller fix: MetaMask/core#5731
However this patch can be an interim for existing releases or until the
CORE package is released.

<details><summary>Screenshot of background logs</summary>

![Screenshot 2025-04-29 at 22 43

03](https://github.com/user-attachments/assets/a1f07672-d471-4e60-8124-e6644df0b5f4)

</details> 

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32391?quickstart=1)

## **Related issues**

Fixes: Potentially fixes
#32416
#31422

## **Manual testing steps**

1. Turn on notifications
2. Try dismissing the carousel banners
3. Try switching networks
4. Try the send flow where you send sepolia

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
[7a22dbc](7a22dbc)

Co-authored-by: Prithpal Sooriya <[email protected]>
Co-authored-by: Danica Shen <[email protected]>
…n all build types cp-12.18.0 cherry-pick (#32448)

<!--
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**
Cherry-pick #32419,
#32351
<!--
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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32448?quickstart=1)

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Alex Donesky <[email protected]>
Co-authored-by: jiexi <[email protected]>
@DDDDDanica
Copy link
Contributor Author

@metamaskbot update-attributions

@metamaskbot
Copy link
Collaborator

Attributions updated

…18.0 (#32449)

- fix: remove unnecessary method call cp-12.18.0 (#32392)

## **Description**

Issue: This method call was added to prepare for this
[PR](#31223) but
hasn't been merged yet and the underlying API has issues so we don't
need it at all until its merged and the endpoint is fixed.

Solution: Remove `getNetworksWithTransactionActivityByAccounts` for now
until the PR is merged. This has no affect on the
component/functionality

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32392?quickstart=1)

## **Related issues**

Related to:
[4469](https://github.com/MetaMask/MetaMask-planning/issues/4469)

## **Manual testing steps**

1. No QA needed
2.
3.

## **Screenshots/Recordings**

NA

### **Before**

NA

### **After**

NA

## **Pre-merge author checklist**

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
[1161ad6](1161ad6)

Co-authored-by: Vince Howard <[email protected]>
Co-authored-by: Danica Shen <[email protected]>
@DDDDDanica DDDDDanica removed the INVALID-PR-TEMPLATE PR's body doesn't match template label May 1, 2025
@metamaskbot
Copy link
Collaborator

Builds ready [9384f43]
UI Startup Metrics (1189 ± 52 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1189109113375212251287
load102894611314410561111
domContentLoaded102193611224410511105
domInteractive17135961628
firstPaint609110113140710281097
backgroundConnect74919711
firstReactRender21155472137
getState1453681930
initialActions001000
loadScripts78570288243817875
setupStore84183815
WebpackHomeuiStartup21551758263218822412533
load16741358208614717861961
domContentLoaded16671354206214517821937
domInteractive16125291345
firstPaint1786633064230297
backgroundConnect309244283370
firstReactRender21556376124340364
getState1244981331
initialActions318136
loadScripts16621353203714317801913
setupStore226309392042
FirefoxBrowserifyHomeuiStartup1357118216699814121547
load12141013154810412841420
domContentLoaded12141013154810412841420
domInteractive1083622635117190
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect20135892042
firstReactRender23195252430
getState73293810
initialActions001001
loadScripts1196997153310412711402
setupStore63365612
WebpackHomeuiStartup15021344200313615621866
load12981170172112113591639
domContentLoaded12981170172112113581639
domInteractive83523053288132
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect19144052129
firstReactRender33284843543
getState84326829
initialActions001011
loadScripts12801152170112113381622
setupStore85687810
Benchmark value 2534 exceeds gate value 2454 for chrome webpack home p95 uiStartup
Sum of mean exceeds: 0ms | Sum of p95 exceeds: 80ms
Sum of all benchmark exceeds: 80ms

@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label May 2, 2025
runway-github bot and others added 2 commits May 2, 2025 16:05
…d when switching account (#32464)

- fix: cp-12.18.0 use correct networkClientId when switching account
(#32359)

## **Description**

Use correct networkClientId when switching account, currently it is
using globalNetworkClientId

## **Related issues**

Fixes: #32272

## **Manual testing steps**

1. Go to extension
2. Change network to mainnet
3. Switch account type on sepolia - it should work as expected

## **Screenshots/Recordings**



https://github.com/user-attachments/assets/f90d07e0-c3bb-4edc-9b62-a005f04d0240

## **Pre-merge author checklist**

- [X] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
[aec0e93](aec0e93)

Co-authored-by: Jyoti Puri <[email protected]>
…-12.18.0 (#32468)

- fix: add try catch to _addSolanaAccount cp-12.18.0 (#32421)

<!--
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 adds a try catch to `_addSolanaAccount` to not block the onboarding
flow if it fails.

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

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32421?quickstart=1)

## **Related issues**

Fixes: #32413

## **Manual testing steps**

1. Go through IMPORT onboarding flow (until Your Wallet is ready screen)
2. Click Manager default privacy settings
3. Click General
4. Toggle off Basic Functionality
5. Go back to main screen
6. Click Done and continue to finish onboarding
7. See that you are able to go to the wallet overview.

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Frederik Bolding <[email protected]>
[be7e29f](be7e29f)

Co-authored-by: Monte Lai <[email protected]>
Co-authored-by: Frederik Bolding <[email protected]>
@metamaskbot
Copy link
Collaborator

❌ API Spec Test Failed. View the report here.

@metamaskbot
Copy link
Collaborator

Builds ready [edc1419]
UI Startup Metrics (1243 ± 64 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1243112715716412831346
load107397513765811071159
domContentLoaded106797013665711011154
domInteractive18146491730
firstPaint667112137442910761136
backgroundConnect74182710
firstReactRender23175172440
getState1454981931
initialActions001001
loadScripts825731112156858906
setupStore96254919
WebpackHomeuiStartup21141712253517522382376
load16321304201813317261807
domContentLoaded16261300199213117191800
domInteractive15116091339
firstPaint1646630558213288
backgroundConnect26979143058
firstReactRender20754382118339357
getState1144871325
initialActions512662636
loadScripts16211299196813017161797
setupStore247289412234
FirefoxBrowserifyHomeuiStartup13711197169110714311587
load12241009156911012851440
domContentLoaded12231009156810912851438
domInteractive1013827435115155
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect21126592039
firstReactRender23195152329
getState85365822
initialActions002001
loadScripts1205996155210912651420
setupStore8418819615
WebpackHomeuiStartup15471388207013616081832
load13311190179611713771574
domContentLoaded13311190179611713771574
domInteractive81521762089123
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect2415247232345
firstReactRender35295653848
getState1044871030
initialActions002111
loadScripts13101173177911413611549
setupStore11528728814
Benchmark value 1243 exceeds gate value 1234 for chrome browserify home mean uiStartup
Benchmark value 1074 exceeds gate value 1070 for chrome browserify home mean load
Benchmark value 1068 exceeds gate value 1061 for chrome browserify home mean domContentLoaded
Benchmark value 19 exceeds gate value 17 for chrome browserify home p95 setupStore
Sum of mean exceeds: 20ms | Sum of p95 exceeds: 2ms
Sum of all benchmark exceeds: 22ms

## **Description**
Cherry-pick #32476
Any version under 5.0.1 has a vulnerability issue as per the `yarn
audit`. This forces all packages to use the version 5.0.1 or higher.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32476?quickstart=1)

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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?
-->

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/PR?quickstart=1)

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Dario Anongba Varela <[email protected]>
@DDDDDanica
Copy link
Contributor Author

@metamaskbot update-attributions

@metamaskbot
Copy link
Collaborator

Attributions updated

runway-github bot and others added 3 commits May 5, 2025 22:19
…ectAllApprovals` utility (#32513)

- fix: cp-12.18.0 Update reject data on `rejectAllApprovals` utility
(#32466)

<!--
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 the unintentionally removed rejection data `cause`
property back into `rejectAllApprovals` utility.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32466?quickstart=1)

## **Related issues**

Fixes: #32162

## **Manual testing steps**

1. Go to test-dapp
2. Trigger 3 transaction request back to back
3. Use reject all in the last one
4. Be able to trigger another transaction after "rejecting all"

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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.
[e8ca82b](e8ca82b)

Co-authored-by: OGPoyraz <[email protected]>
Co-authored-by: Danica Shen <[email protected]>
…" modal cp-12.18.0 (#32507)

- fix: text flashing on Solana's "What's New" modal cp-12.18.0 (#32469)

## **Description**

We were seeing text flashing when opening Solana's "What's New" modal.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32469?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Install the extension
2. Proceed through the onboarding picking whatever options
3. Confirm that the "What's New Modal" only shows "Create Solana
Account" or "View Solana account"

## **Screenshots/Recordings**

n/a

### **Before**

n/a

### **After**

n/a

## **Pre-merge author checklist**

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Alejandro Garcia Anglada <[email protected]>
[7fd1ad7](7fd1ad7)

Co-authored-by: Ulisses Ferreira <[email protected]>
Co-authored-by: Alejandro Garcia Anglada <[email protected]>
Co-authored-by: Danica Shen <[email protected]>
… Cherry-pick (#32506)

<!--
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.
-->
Cherry-pick: #32364
- This pull request adds support for non-EVM to the asset historical
prices chart.
- It fetches non-EVM historical prices from the snap, on demand when
user navigates to the asset page.
- It refetches the historical prices every minute to keep the components
up-to-date.
- It uses dynamic time ranges for non-EVM, based on whatever intervals
are returned by the snap and stored in
`state.metamask.historicalPrices`.
- It adapts the translations accordingly.
- It refactors the code to standardize the format of time ranges into
[ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations).
- It improves the empty states to match [the
designs](https://www.figma.com/design/TfVzSMJA8KwpWX8TTWQ2iO/Asset-list-and-details?node-id=1979-85331&t=jr11GLodt6hfdqK3-0).
- It carefully sets sizes of loading & empty states to ensure that the
layout doesn't shift vertically when switching from one state to the
other.
- It reorganizes some code into 3 hooks (2 new ones and 1 existing one)
`useHistoricalPrices.ts`, `useCurrentPrice.ts` and
`useChartTimeRanges.ts` for improved encapsulation of logic.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32364?quickstart=1)

Fixes:

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

- [ This
recording](https://www.loom.com/share/13f2d490a5fc4522a706b3136b446b90)
shows usage under normal conditions, switching across 2 accounts (Solana
account and EVM account) and across various assets and time ranges.

- [This
recording](https://www.loom.com/share/bf47a1889c64459c962e2a804856e648)
shows the 4 various states, that we've each mocked under its own time
range to easily compare them:
  - tab `1D` shows state "loading with no previous data"
  - tab `1W` shows state "loading with previous data"
  - tab `1M` shows state "empty state"
  - tab `3M` shows state "has data"

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

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

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

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

Standards](https://github.com/MetaMask/metamask-extension/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-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

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

---------

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

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/32506?quickstart=1)

## **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
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/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: Xavier Brochard <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
extension-delivery INVALID-PR-TEMPLATE PR's body doesn't match template team-extension-platform Extension Platform team
Projects
None yet
Development

Successfully merging this pull request may close these issues.