Skip to content

Version v12.13.0 #30314

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 132 commits into from
Feb 27, 2025
Merged

Version v12.13.0 #30314

merged 132 commits into from
Feb 27, 2025

Conversation

danjm
Copy link
Contributor

@danjm danjm commented Feb 14, 2025

🚀 v12.13.0 Testing & Release Quality Process

Hi Team,
Happy Friday! 🎉

We’re kicking off the testing and validation for v12.13.0 builds. 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

Review Changes: Refer to the Release Tracker for v12.13.0

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

  • Accounts
  • Assets
  • Confirmations
  • Design System
  • Dev Ops
  • Extension Platform
  • Identity
  • Ramps
  • Snaps Platform
  • Solana
  • Swaps And Bridge
  • Transactions
  • Wallet API Platform
  • Wallet Framework
  • Wallet UX

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

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

Many thanks in advance!

micaelae and others added 30 commits January 31, 2025 00:49
<!--
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 hides the network picker's back button when there's no selected
network. Currently this causes the dest network picker to navigate to
the src asset picker

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

## **Related issues**

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

## **Manual testing steps**

1. Load bridge page
2. Open dest asset picker
3. Verify that back button is not visible

## **Screenshots/Recordings**

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

### **Before**

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


https://github.com/user-attachments/assets/4bbde8e4-bdd5-4fa2-aeb5-248d433e25a2


### **After**

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


https://github.com/user-attachments/assets/731280a5-3faf-401c-9236-8e932a9f347e



## **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.
…nner is shown on dApp 1, but not on dApp 2 after adding transaction on dApp 1, and one on dApp 2 (old confirmation flow)` (#30028)

<!--
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**
The test `Queued Confirmations Queued Requests Banner Alert Banner is
shown on dApp 1, but not on dApp 2 after adding transaction on dApp 1,
and one on dApp 2 (old confirmation flow)` is flaky and fails with the
following error.:

![Screenshot from 2025-01-31
08-39-06](https://github.com/user-attachments/assets/18e9a347-7ac4-441f-8cf9-1444493fca6d)

There is one fundamental problem which is that in the test we expect
that `switchChain` will trigger a dialog, but that shouldn't be the
case, as we already have permissions to that network (comes selected by
default, see video below). Then the window management is messed up.

Roughly:
- Whenever we connect to the dapp2, we don't wait for the dialog window
to close
- We switch to dapp 1
- We trigger a switchChain request --> here we wait for the dialog to be
there. The problem is that the switchChain request don't trigger a
dialog (that's expected as that network already has permissions by
default)
- So now, depending on how fast the dialog from step 1 remains open,
will make it to the next step, or not (if the dialog is close fast
enough). That's why it doesn't fail all the time (but it should, given
the incorrect expectation of waiting for a dialog after the request to
switch chains, to an already approved chain)
- Then the subsequent actions can work with an old instance of the
dialog, but that is closed after some seconds (as it was the Connect
dialog which we already accepted) making it fail

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

## **Related issues**

Fixes: #30012

## **Manual testing steps**

1. Check [ci
run](https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121745/workflows/e5058e63-1255-4e57-9089-756879fe699f/jobs/4506977/tests)
Note: you'll see there's a spec failing but that's a different one that
will be tackled in a separate PR, issue
[here](#30029)
2. Run test locally `yarn test:e2e:single
test/e2e/tests/confirmations/alerts/queued-confirmations.spec.ts
--browser=chrome --leave-running=true`

## **Screenshots/Recordings**
See how the localhost 7777 is already selected by default. This willl
make that any request to switch to that chain won't trigger any dialog
(ExpecteD)


https://github.com/user-attachments/assets/4bafff15-5282-4362-a626-4fd9360d1ed2

See same behaviour in a prod build


https://github.com/user-attachments/assets/e35c5dbb-587c-47ff-be6c-ffa42b5015e9





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

The goal of this PR is to remove as much dead code as possible related
to the transaction confirmations that predate the redesign.

- From `ConfirmTransaction` component:
  - `ConfirmDeployContract`
  - `ConfirmSendEther`
  - `ConfirmContractInteraction`

- From `ConfirmTokenTransactionSwitch` and `ConfirmTransactionSwitch`:
  - `ConfirmApprove`
  - `ConfirmTokenTransactionBase`
  - `ConfirmSendToken`
- `ConfirmTransactionBase`, `TokenAllowance` and `ConfirmApproveContent`
that were used by the components above.

- `GasDisplay`, `ConfirmGasDisplay` and `ConfirmLegacyGasDisplay` that
were no longer used

- Edit custom nonce settings toggle, selector, action and state property
migration, and associated `custom-nonce` component for the legacy
transactions.

- Unit tests, storybook stories, styles and localization files
associated with the removed files.

<!--
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/29926?quickstart=1)

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4025

## **Manual testing steps**

Confirm the remaining confirmations (Transactions, Signatures, Encrypt /
Decrypt, Add/Switch Ethereum Chain Snaps) still work.

## **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.
…let_addEthereumChain` (#29837)

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

## **Description**

Fixes bug with the automatically permittedChains permission grant when
triggered via wallet_addEthereumChain in certain scenarios. See ticket
for details.

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

## **Related issues**

Fixes: MetaMask/MetaMask-planning#3814

## **Manual testing steps**

1. Add a new network to the dapp via
[wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/)
2. After approval, the dapp should also have
`endowment:permitted-chains` permission for the recently added chain via
`wallet_getPermissions`
3. switch the dapp to a different chain via the wallet UI
4. revoke dapp permissions via the wallet UI
6. Add a new network to the dapp via
[wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/)
using a DIFFERENT rpc endpoint, but for the same chainId added in step 1
7. After approval, the dapp should also have
`endowment:permitted-chains` permission for the recently added chain via
`wallet_getPermissions`
8. switch the dapp to a different chain via the wallet UI
9. revoke dapp permissions via the wallet UI
10. Add a new network to the dapp via
[wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/)
using the SAME rpc endpoint in step 1 (i.e. repeat step 1 exactly)
11. You should get an approval for chain switch, NOT network adding.
Approve it.
12. After approval, the dapp should also have
`endowment:permitted-chains` permission for the recently added chain via
`wallet_getPermissions`


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

Use the new Snap keyring version that no longer rely on a
`SnapController` reference. Instead it uses the messaging system.

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

> [!NOTE]
> This PR is blocking other features for the moment, so not every peer
deps (related to the `AccountsController`) have been updated here. This
will be done in a separate PR:
> - #30011

## **Related issues**

- MetaMask/core#5190

## **Manual testing steps**

N/A

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

---------

Co-authored-by: MetaMask Bot <[email protected]>
## **Description**
- This is a non-fork mirror of @darkwing's PR:
#30005

Wraps the NFT list within the Send flow such that it will not overflow

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

## **Related issues**

Fixes: #29974

## **Manual testing steps**

1. Use an account with many NFTs
2. Start send flow
3. Click the AssetPicker, choose NFTs
4. See the wrapped NFTs

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

<img width="521" alt="SCR-20250130-hbwm"
src="https://github.com/user-attachments/assets/abeb3b78-be50-4aa4-841f-f8441ba4103f"
/>



## **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: David Walsh <[email protected]>
…29443)

## **Description**

- The first commit
(6fcb2af)
fixes errors in the messenger types for `Bridge{,Status}Controller`.
- The second commit
(d7368f5)
is optional, but strongly recommended. Under the `BaseController` API
with which the `Bridge{,Status}Controller` are defined,
`BridgeControllerState` and `BridgeStatusControllerState` should be
considered as reserved keywords.
- The current set of types violates guidelines:
https://github.com/MetaMask/core/blob/main/docs/writing-controllers.md#define-and-export-a-type-for-the-controllers-state.
- Deviating from this convention breeds confusion and silently-failing
errors as per the examples fixed in the first commit.
- This also affects downstream consumers and dependent modules of the
bridge controllers, as the expected functionality for the reserved
keywords is not fulfilled.
- The type expressions `{ bridgeState: BridgeControllerState }`, `{
bridgeStatusState: BridgeStatusControllerState }` are being used
redundantly and should be de-duplicated. However, defining these types
using anything other than the reserved keywords will cause further
unnecessary confusion.

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

## **Related issues**

- Supersedes #28971

## **Manual testing steps**

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
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.
…yup.ts` (#28393)

I've ported Foundry's foundryup bash script to TypeScript. It downloads
a pinned version of the `anvil` binary on `yarn install`.

While you don't need to do anything, other than run `yarn` (or `yarn
install`), you can customize the installation options by running `yarn
foundryup <options>`. Try running `yarn foundryup --help` to see all
that it can do.

An explanation of how it works:

The `yarn foundryup` command caches (to `.metamask/cache/*`) the
downloaded binaries (defaults to only `anvil`, but it _can_ install all
the others) and symlinks them from the cache into
`node_modules/.bin/<binary name>`. This makes successive installs nearly
instant.

In CI the cache itself is cached (same process as for the `.yarn/cache`
cache), so that CI doesn't have to redownload binaries on every
workflow.

The `foundryup` code is intended to be generic, and could eventually be
a partial replacement for the `ganache` package for most users (for cli
users only, not for programmatic use cases). For this reason, the script
uses defaults that are not tailored to our needs; instead we use a new
`package.json` property _`foundryup`_ to describe what defaults we do
want, and the script uses those values.

In addition to the original `foundryup` bash script features, this
script supports checksumming the downloaded binaries; a feature
requested by the MM security team. See the `foundryup` property in our
`package.json` for more details.

A feature that is _missing_ from this script, but is in the original
`foundryup` bash script,is support for downloading the `man` pages. I
don't really care about this feature and don't think anyone would use
it.

This script _should_ support the following platforms, but I've only
tested Linux+AMD:

Linux on ARM and AMD
Mac on ARM and AMD
Windows on AMD (likely works on arm-based Windows machines via OS's
emulation)

--

This also adds a new yarn command: `anvil`. You can use it just like you
did with `yarn ganache`, i.e., `yarn anvil`; note: the defaults and CLI
options are not going to be exactly the same as `ganache`.


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


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

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

### **Before**


### **After**


## **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/develop/.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/develop/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

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

-->

---------

Co-authored-by: seaona <[email protected]>
Co-authored-by: seaona <[email protected]>
Co-authored-by: Howard Braham <[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**

An unordered metric event makes the test fail, as we see the signature
one (performed after in 8081) instead of the tx one (performed first in
8080)

![Screenshot from 2025-01-31
17-28-34](https://github.com/user-attachments/assets/2e914122-b86a-409d-8f1a-0bf62fd7f148)

After looking at the logs, we can see how the 8081 event refers to the
signature event that happens after the transaction


![image](https://github.com/user-attachments/assets/b56e0e16-dfba-4987-a30e-92fe5e88f971)

Furthermore, the wait for chainID added here was pointing to the old
chainId, so now it's corrected and fixes remaining flakiness

- Firefox
https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121815/workflows/09665d6e-9173-434a-817f-f462ee489622/jobs/4508139
- Webapck
https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121815/workflows/09665d6e-9173-434a-817f-f462ee489622/jobs/4508106

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/30031?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.
…on multple accounts from inside MetaMask when a user has balances on more accounts than previously synced, it should be handled gracefully` (#30044)

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

## **Description**

Test times out from time to time, as it's very long.


https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121879/workflows/9dc68e75-c842-4b3d-83c5-eaacbca0c5aa/jobs/4509367/tests#failed-test-0

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

## **Related issues**

Fixes: #30057

## **Manual testing steps**

1. Run locañlly
2. Check ci

## **Screenshots/Recordings**

![Screenshot from 2025-02-01
11-35-48](https://github.com/user-attachments/assets/95829ce4-043d-469d-aab8-1619217a4a98)


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

This PR addresses the issue where clicking on an inline alert 'Speed'
warning in the Confirmation screen causes the extension to break. The
fix ensures that all hooks are called before the early return statement
in the `AlertModal` component, maintaining consistent hook rendering and
preventing errors. This change ensures that the modal behaves correctly
even when the alert disappears when a user is creating another
transaction.

<!--
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/29825?quickstart=1)

## **Related issues**

Fixes: #29648

## **Manual testing steps**

- Trigger two STX
- Wait until the first STX is confirmed and click 'Alert' on the
Confirmation screen

## **Screenshots/Recordings**

[Screencast from 2025-01-21
10-06-37.webm](https://github.com/user-attachments/assets/13c950b3-8ad6-49bd-9c5f-3d35b8f01d4e)

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

Balances should be displayed on the swap from picker

core PR: MetaMask/core#5257

<!--
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/30046?quickstart=1)

## **Related issues**

Fixes: #30040 

## **Manual testing steps**

1. Choose popular network on the network tokens filter
2. Click on swap button
3. balances should be displayed on the from and to picker 

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

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

This Change will introduce a new workflow that invokes a set of
re-useable shared workflows used across both extension and mobile
codebases

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

## **Related issues**

Fixes:
MetaMask/MetaMask-planning#3641 

## **Manual testing steps**

Testing manually using ci/cd runs - example outputs/runs can be viewed
here

Example Release Branch PR 
#29981

Example Changelog PR
#29982

Sample CI Output Run

https://github.com/MetaMask/metamask-extension/actions/runs/13038614194/job/36375005985



[1:15](https://consensys.slack.com/archives/C08APSA5135/p1738178122258199)
here's the CI output/run -
https://github.com/MetaMask/metamask-extension/actions/runs/13038614194/job/36375005985

## **Screenshots/Recordings**

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

### **Before**

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

N/A CICD Only

### **After**

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

N/A CICD Only

## **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: Norbert Elter <[email protected]>
## **Description**

This PR introduces circular dependency detection, tracking, and
CODEOWNERS.

Here are the key changes:

1. Added a new circular dependency detection system:
- New script `development/circular-deps.ts` that uses `madge` to detect
circular dependencies
   - New config file `.madgerc` for TypeScript-specific settings
- Generated baseline file `development/circular-deps.json` containing
current circular dependencies

2. Added new yarn scripts in `package.json`:
- `yarn circular-deps:check` - Verifies circular dependencies match
baseline
- `yarn circular-deps:update` - Updates baseline with current circular
dependencies

3. Added CI integration:
- Added `.github/workflows/test-circular-deps.yml` to run circular
dependency check

4. Assigning appropriate CODEOWNERS to `circular-deps.jsonc`

The PR essentially sets up a process to track new circular dependencies
while acknowledging existing ones in the codebase.

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

## **Related issues**

* Fixes: MetaMask/MetaMask-planning#3088

## **Manual testing steps**

1. Remove (or add) a circular dependency in the code.
2. Run `yarn circular-deps:check` => should report that codebase is out
of sync with `circular-deps.jsonc`
3. Run `yarn circular-deps:update` => should update
`circular-deps.jsonc` to match the codebase. Inspect the diff.
4. Run `yarn circular-deps:check` => should pass.

## **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: MetaMask Bot <[email protected]>
Co-authored-by: Howard Braham <[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**

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

Rename `RestrictedControllerMessenger` to `RestrictedMessenger` and
`ControllerMessenger` to `Messenger`.

No functional changes.

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

## **Related issues**

Fixes:

Relates to [#4538](MetaMask/core#4538)

## **Manual testing steps**

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] 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 PR removes the segmented tab on the confirm import token modal as
described in this issue:
#26788

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

## **Related issues**

#26788

## **Manual testing steps**

1. Start the procedure to import a token
2. Confirm the token to be imported
3. On the confirmation page, the tab should no longer be visible

## **Screenshots/Recordings**

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

### **Before**

### **After**


https://www.loom.com/share/b3a522ccf9974c06a73ea6236db89cc6?sid=b56a3ed9-6a06-4a23-8ed1-eecc1fa73d8a

## **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: David Walsh <[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**

<!--
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/30072?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.
## **Description**
Add/enable destructive (danger) button in Snaps UI custom footer.

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

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

## **Manual testing steps**
1. Install a Snap with footer buttons that have `destructive` variant.
2. Confirm that the buttons look as expected.
3. Make a button that has both states, `destructive` and `disabled` and
check if it's rendered correctly.
4. Try different variants with non-destructive buttons and confirm that
there are no regressions.

Example:
```typescript
<Footer>
    <Button name="cancel" variant="destructive">
      Cancel
    </Button>
    <Button name="confirm" variant="destructive" disabled={true}>
      Confirm
    </Button>
</Footer>
```

## **Screenshots/Recordings**
### **Before**
![Screenshot 2025-01-29 at 15 45
55](https://github.com/user-attachments/assets/ccf4a5d3-2b19-4b46-8f72-7eda8b3ae35d)
![Screenshot 2025-01-29 at 15 46
47](https://github.com/user-attachments/assets/3b0cf71d-fd86-4d0a-8f37-17e8a36c8b24)
![Screenshot 2025-01-29 at 15 48
12](https://github.com/user-attachments/assets/5929c1e2-6bb8-4d0e-b701-bd6ace106fc8)
![Screenshot 2025-01-29 at 15 53
07](https://github.com/user-attachments/assets/fb69a6e7-404d-4fcb-9914-ce39525b64eb)

### **After**
![Screenshot 2025-01-29 at 15 29
22](https://github.com/user-attachments/assets/60eac7d3-da78-46b7-84bc-80287935556b)
![Screenshot 2025-01-29 at 15 24
24](https://github.com/user-attachments/assets/0bc749a8-690c-412e-9534-f13f9fba95ee)
![Screenshot 2025-01-29 at 15 32
12](https://github.com/user-attachments/assets/22f0567a-146d-43d6-8389-9f46aa0d4fc3)
![Screenshot 2025-01-29 at 16 01
07](https://github.com/user-attachments/assets/e4285b01-1a02-4abc-8594-794e15931383)

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

This PR adds the new transaction details modal for the non-evm networks,
BTC and SOL.

![Screenshot 2024-12-18 at 14 42
18](https://github.com/user-attachments/assets/95413caf-fb72-4811-98c4-f0d4416fa816)


https://github.com/user-attachments/assets/d19da5a3-46af-4d8c-a220-59bbd663624a

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/SOL-80

## **Manual testing steps**

Testing this is a bit extensive, but if you still want to give it a go
these are the steps:

1. Checkout this branch and run `yarn`
2. Update the file `shared/lib/accounts/solana-wallet-snap.ts` with:
`export const SOLANA_WALLET_SNAP_ID: SnapId =
'local:http://localhost:8080' as SnapId;`
3. Update the filtering code in MultichainTransactionsController under
node modules to return transactions for devnet, currently only returns
for mainnet. It's under
`node_modules/@metamask/multichain-transactions-controller/dist/MultichainTransactionsController.mjs`
and
`node_modules/@metamask/multichain-transactions-controller/dist/MultichainTransactionsController.cjs`
with:
```
MultichainNetwork.SolanaDevnet
instead of
MultichainNetwork.Solana

```
4. Run the extension with `yarn start:flask`
5. Run the Snap: https://github.com/MetaMask/snap-solana-wallet
    - Clone it
    - Run `yarn`
    - Run `yarn start`
6. Go to http://localhost:3000/
7. Install the Snap
8. In the extension, go to the Settings > Experimental > Enable Solana
account
9. Create a Solana account from the account-list menu
10. Fund the new Solana account with some SOL, use a faucet like
https://faucet.solana.com/
11. the initial Tx with funds from the faucet will display in the
activity tab
12. Click in it and you will see the Tx details modal
13. Thats it! 🎉

## **Screenshots/Recordings**

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

### **Before**

Didn't exist.

### **After**

![Screenshot 2024-12-18 at 14 42
18](https://github.com/user-attachments/assets/95413caf-fb72-4811-98c4-f0d4416fa816)

## **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: MetaMask Bot <[email protected]>
Co-authored-by: Charly Chevalier <[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**

Bump Snaps packages and handle any required changes.

Summary of Snaps changes:
- Add support for onProtocolRequest + the `endowment:protocol`
permission
- Add `URLSearchParams` as a default global
- Add disabled states for all input components

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

## **Related issues**

Closes #29669

---------

Co-authored-by: David Drazic <[email protected]>
Co-authored-by: Maarten Zuidhoorn <[email protected]>
## **Description**

IPFS images in the grid view were not correctly identified and therefore
were not fetched/displayed.

This copies the logic in the details page to ensure that we correctly
show IPFS NFTs.

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

## **Related issues**

Fixes: #30063

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

![main
branch](https://github.com/user-attachments/assets/edb23d23-444b-4052-ae94-dcc7ae3fd712)

### **After**

![Screenshot 2025-02-04 at 11 33
34](https://github.com/user-attachments/assets/5ea12448-a171-4fde-9dd6-e193f3d7fc2e)

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

On #29884, a lot of
code related to MetaMask Institutional was removed.

The `<CancelSpeedupPopover />` component was removed, probably because
it was conditionally rendered when a custodian was not present (for
non-MMI code only), and someone mechanically removing code might have
thought it wasn't needed anymore. What we wanted to do instead was to
remove the condition and render the modal unconditionally.

This PR reintroduces the component. 

<img width="837" alt="Screenshot 2025-02-04 at 11 35 57"
src="https://github.com/user-attachments/assets/f74ebbbc-98b2-4115-b3a3-210fb58c0b7c"
/>


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

## **Related issues**

Fixes: #30027

## **Manual testing steps**

1. Submit a transaction with low gas parameters
2. Once it is pending, speed up or cancel it from the activity list

## **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.
In the review permissions screen for snaps, the origin of the snap was
missing. This PR fix that

## **Related issues**

Fixes: #30088 

## **Manual testing steps**

1. Connect extension to Snap 
2. Click on getAccounts
3. The review permissions screen should show Dapp Origin

## **Screenshots/Recordings**

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

### **Before**
![Screenshot 2025-02-04 at 11 40
35 AM](https://github.com/user-attachments/assets/2c27db18-7dcd-42a4-a64f-4c06b5200637)


### **After**
![Screenshot 2025-02-04 at 11 42
43 AM](https://github.com/user-attachments/assets/36342dc9-f091-49e5-ad37-2e7a3fed87da)


## **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.
…/snaps-sdk` to `^6.17.1` (#30097)

## **Description**

This bumps `@metamask/snaps-controllers` to `^9.19.1` and
`@metamask/snaps-sdk` to `^6.17.1`, which fixes a couple minor issues.

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

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

Add updated Celo svg logo

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to add network
2. Add celo networks
3. celo networks should have updated logo

## **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: Christian Montoya <[email protected]>
Co-authored-by: Salim TOUBAL <[email protected]>
Co-authored-by: Howard Braham <[email protected]>
Co-authored-by: Mark Stacey <[email protected]>
## **Description**

Upgrade `@metamask/transaction-controller` to prevent transactions being
resubmit on multiple endpoints.

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

## **Related issues**

Fixes: #30061 

## **Manual testing steps**

1. Add additional endpoint for network.
2. Open `Network` tab of developer console.
3. Select first endpoint.
4. Send transaction.
5. Verify all RPC requests are to the correct endpoint.
6. Select second endpoint.
7. Send transaction.
8. Verify all RPC requests are to the correct endpoint.

## **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.
## **Description**
If there are network-specific feature flags for smart transactions, they
will take priority over shared smart transaction feature flags.

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

## **Related issues**

Fixes:

## **Manual testing steps**

1. Turn off some feature flag which is network-specific for smart
transactions (e.g. `bsc.smartTransactions.extensionActive = false`)
2. See that it's being used over a shared one
(`smartTransactions.extensionActive`)

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

Recently we removed all CI steps related to MMI, in preparation for
removing MMI. However, the lack of policy validation for the MMI
LavaMoat policy has led to churn/conflicts from local updates to the
policy.

The CI config has been updated to restore MMI LavaMoat policy
validation/updates temporarily. We expect we'll be able to delete this
again very soon, but it is easiest to keep this until we're ready to
delete the MMI build type.
[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/30106?quickstart=1)

## **Related issues**

N/A

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

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.
…o 15min (#30102)

<!--
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 feature flags cache duration from 24 hours to 15 minutes in
extension side by passing a customized `fetchInterval` value to
controller and overwrite original value `DEFAULT_CACHE_DURATION` from
controller:

https://github.com/MetaMask/core/blob/main/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts#L142

<!--
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/30102?quickstart=1)

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4098

## **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.
…provider (#30111)

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

Previously the inpage provider would withhold events for chainChanged
events (and property value updates, i.e. window.ethereum.chainId and
.networkVersion) when the dapp's network was changed to an rpc endpoint
that was unresponsive or did not support net_version. The dapp would
instead receive a disconnect event.

Now the inpage provider always emits chainChanged and networkChanged
events (and exposes the correct values on window.ethereum.chainId and
.networkVersion) when the selected network for the dapp has changed
regardless of if the network being changed to is responsive or if it
supports net_version requests. It does this by having the wallet send a
loading for networkVersion when it cannot be resolved (same behavior as
before) AND a new isConnected property in the metamask_getProviderState
request and metamask_chainChanged events (these are different from the
events emittted by window.ethereum). isConnected is derived from whether
the NetworkController.state.networkMetadata[].status value is the
Available constant.

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

## **Related issues**

See: #29936
Providers patch from commit (d919ab6b):
MetaMask/providers#404

## **Manual testing steps**
```
window.ethereum.on('accountsChanged', (data) => console.log('accountsChanged', data))
window.ethereum.on('chainChanged', (data) => console.log('chainChanged', data))
window.ethereum.on('networkChanged', (data) => console.log('networkChanged', data))
window.ethereum.on('connect', (data) => console.log('connect', data))
window.ethereum.on('disconnect', (data) => console.log('disconnect', data))
```
1. Go to a webpage. Enter the following in console
2. Change to Linea, see that the correct values are emitted for the
`chainChanged` and `networkChanged` events
3. Change to Sepolia, see that the correct values are emitted for the
`chainChanged` and `networkChanged` events
4. Change to a network that is non-responsive, see that `chainChanged`
emits with the correct chainId, but `networkChanged` emits with a null
value, AND there is a `disconnect` event emitted
5. Change back to a working network, see that the correct values are
emitted for the `chainChanged` and `networkChanged` events, AND there is
a `connect` event emitted with the new chainId
6. Do the same above with a responsive network that does not have
`net_version` implemented. Se that the correct values are emitted for
the `chainChanged`, that `networkChanged` emits null, and that there is
no `disconnect` event emitted


## **Screenshots/Recordings**

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

### **Before**

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

### **After**

![Screenshot 2025-02-04 at 8 34
13 AM](https://github.com/user-attachments/assets/f6558363-f848-445a-811e-d1a052a4e6c0)

![Screenshot 2025-02-04 at 8 39
33 AM](https://github.com/user-attachments/assets/12bff524-bb3c-4bf8-b4d2-c6a01ce63b33)



## **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.
@danjm danjm requested review from a team and HowardBraham as code owners February 26, 2025 15:21
…middleware if cause is "rejectAllApprovals" (#30448)

- fix: cp-12.13.0 Disable origin throttling middleware if cause is
"rejectAllApprovals" (#30388)

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

## **Description**

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

This PR aims to fix `release-blocker` in `v12.13.0` which disables
origin throttling middleware if `cause` is `rejectAllApprovals`.

Patch note: 
Currently bumping `transaction-controller` is blocked because it's
breaking e2e tests

https://consensys.slack.com/archives/CTQAGKY5V/p1739968847746929?thread_ts=1739869734.799669&cid=CTQAGKY5V
To avoid applying version newer version of `transaction-controller`
needed change patched in this PR. Required change is already in the core
repository MetaMask/core#5355. And will most
likely be released in version `46.0.1`. Then we will most likely bump
`transaction-controller` in `main`.

[![Open in GitHub

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

## **Related issues**

Fixes: #30333

## **Manual testing steps**

See the task details

## **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]>
[42bd11d](42bd11d)

Co-authored-by: OGPoyraz <[email protected]>
Co-authored-by: MetaMask Bot <[email protected]>
Co-authored-by: Dan J Miller <[email protected]>
dbrans
dbrans previously approved these changes Feb 26, 2025
Copy link
Contributor

@dbrans dbrans left a comment

Choose a reason for hiding this comment

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

LGTM!

@danjm danjm marked this pull request as draft February 26, 2025 15:53
@metamaskbot
Copy link
Collaborator

Builds ready [af01b27]
Page Load Metrics (1735 ± 70 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint26721041661351168
domContentLoaded15112030169813364
load15442106173514570
domInteractive249941188
backgroundConnect1081382612
firstReactRender1471382311
getState54814136
initialActions01000
loadScripts10911545124712158
setupStore7511294
uiStartup17632366196214871

Cherry pick
[e957fed](e957fed)
to v12.13.0

## **Description**

Removed the SRP video during wallet creation flow and replaced it with a
SRP lock design

[![Open in GitHub

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

## **Related issues**

Fixes:

## **Manual testing steps**

1. Freshly installed app
2. Create wallet
3. Create password
4. During the wallet phrase flow you should see no video and a new
design

## **Screenshots/Recordings**

NA

### **Before**

<img width="1840" alt="Screenshot 2025-02-26 at 10 23 07 AM"
src="https://github.com/user-attachments/assets/8ddcfd34-0fe4-4b53-afaf-04dab0639876"
/>

### **After**

<img width="1840" alt="Screenshot 2025-02-26 at 10 23 37 AM"
src="https://github.com/user-attachments/assets/3db6ea6b-4bbd-4be4-9951-ce12a35e4284"
/>

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

<!--
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/30590?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: Vince Howard <[email protected]>
…th 2D version (#30597)

- fix: cp-12.13.0 replace 3D flask mascot with 2D version (#30592)

## **Description**

Issue: The new Flask 3D asset isn't fully supported

Solution: Replace all instances of the 3D asset for Flask with the 2D
counterpart temporarily until we fix the issue

[![Open in GitHub

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

## **Related issues**

Fixes:
[#30338](#30338)

## **Manual testing steps**

1. Run `yarn start:flask`
2. Confirm that the 2D flask logo is visible in the following flows
3. Swap Quote flow 
4. Create Wallet flow
5. Login

## **Screenshots/Recordings**

`ui/pages/onboarding-flow/welcome/welcome.js`
| Before  | After  |
|:---:|:---:|


|![before_welcome](https://github.com/user-attachments/assets/5acd7341-ac4f-4c3f-9279-01f31b8a1e51)|![after_welcome](https://github.com/user-attachments/assets/4891ba78-23d2-4e7f-98f3-610131fd8134)|

`ui/pages/swaps/awaiting-swap/awaiting-swap.js`
| Before  | After  |
|:---:|:---:|


|![before_await_swap](https://github.com/user-attachments/assets/81dec14b-9f93-431e-8e2e-8baa546513ab)|![after_await_swap](https://github.com/user-attachments/assets/a096033c-357f-47de-b74b-123824d80a52)|

`ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js`
| Before  | After  |
|:---:|:---:|


|![before_loading_swap_quote](https://github.com/user-attachments/assets/2fca315b-8ff4-4f7a-904f-13fcb630f0b1)|![after_loading_swap_quote](https://github.com/user-attachments/assets/cca208b1-f45d-4583-a35b-7d9a851624a0)|



`ui/pages/swaps/mascot-background-animation/mascot-background-animation.js`
| Before  | After  |
|:---:|:---:|


|![before_background_animation](https://github.com/user-attachments/assets/d9869718-04ab-41c1-8371-4aca613c4a79)|![after_background_animation](https://github.com/user-attachments/assets/f50c948c-c3e4-45a3-999c-152ab0f7b7df)|

`ui/pages/unlock-page/unlock-page.component.js`
| Before  | After  |
|:---:|:---:|


|![before](https://github.com/user-attachments/assets/4267afb5-2d28-4cd9-8f34-6027bf9308ed)|![after](https://github.com/user-attachments/assets/32f8eec7-e5ba-4c97-afe8-207f100b1828)|

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

Co-authored-by: Vince Howard <[email protected]>
@metamaskbot
Copy link
Collaborator

Builds ready [8de0364]
Page Load Metrics (1704 ± 90 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint30519791629356171
domContentLoaded14221969167518187
load14381981170418790
domInteractive21127382412
backgroundConnect876322412
firstReactRender14101472813
getState67217189
initialActions01000
loadScripts10061493122115273
setupStore693162010
uiStartup165827662001304146

@danjm danjm marked this pull request as ready for review February 27, 2025 05:01
@danjm danjm merged commit ba1bc15 into master Feb 27, 2025
110 checks passed
@danjm danjm deleted the Version-v12.13.0 branch February 27, 2025 05:03
@github-actions github-actions bot locked and limited conversation to collaborators Feb 27, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
INVALID-PR-TEMPLATE PR's body doesn't match template release-12.13.0 Issue or pull request that will be included in release 12.13.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.