Skip to content

Conversation

@ieow
Copy link

@ieow ieow commented May 16, 2025

Description

This pr remove the enable automatic security check option in the security settings and hide/disable the check prompt on login addressing issue ##
This will resultant the minimum version will always been checked.

Another pr will remove all the logics and metrics

Related issues

Fixes:

Manual testing steps

  1. Go to this page...

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

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

@github-actions
Copy link

github-actions bot commented May 16, 2025

CLA Signature Action:

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

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

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

42 out of 60 committers have signed the CLA.
@ieow
@jpuri
@matthewwalsh0
@sahar-fehri
@georgeweiler
@bfullam
@httpJunkie
@owencraston
@davibroc
@Prithpal-Sooriya
@zone-live
@chrisleewilcox
@AugmentedMode
@vinnyhoward
@sethkfman
@georgewrmarshall
@mathieuartu
@adonesky1
@digiwand
@smilingkylan
@dan437
@infiniteflower
@Matt561
@EtherWizard33
@AxelGes
@Cal-L
@dawnseeker8
@ccharly
@bergarces
@tommasini
@ziad-saab
@vinistevam
@jvbriones
@FrederikBolding
@cryptodev-2s
@abretonc7s
@montelaidev
@jiexi
@frankvonhoven
@C-Ivan
@salimtb
@imblue-dabadee
@ffmcgee725
@wachunei
@Andepande
@gantunesr
@OGPoyraz
@mikesposito
@cortisiko
@mcbridemarci
❌ @V00D00-child
❌ @weitingsun
❌ @SteP-n-s
❌ @aganglada
❌ @wenfix
❌ @saraantole
❌ @baptiste-marchand
❌ @Julink-eth
❌ @PatrykLucka
❌ @Tyschenko

@ieow ieow marked this pull request as ready for review May 17, 2025 03:41
jpuri and others added 24 commits May 27, 2025 06:03
## **Description**

On batched transaction page, Display tag with batched transaction count.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4948

## **Manual testing steps**

1. Enable 7702 locally
2. Submit 5792 transaction on test-dapp
3. Check tag with transaction count

## **Screenshots/Recordings**
<img width="401" alt="Screenshot 2025-05-16 at 9 19 50 PM"
src="https://github.com/user-attachments/assets/1bc5d556-fc13-4c92-90c1-effe6caf7a21"
/>

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: OGPoyraz <[email protected]>
…etaMask#15493)

## **Description**

Fix updating blockaid validation result in batched confirmation

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4964

## **Manual testing steps**

1. Enable 7702 locally
2. Submit a batched confirmation
3. Check that blockaid validation result is added to the confirmation

## **Screenshots/Recordings**
NA

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

When validating the balance in the legacy transaction confirmations,
ensure the relevant chain balance is used, rather than the global
network balance.

## **Related issues**

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

## **Pre-merge reviewer checklist**

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

Patches [changes](MetaMask/core#5726) on
tokenBalancesController state update.

PR does not introduce any new functionalities.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Import new accounts
2. You should be able to see tokens and balances correctly
3. Import new tokens and you should be able to see balances correctly
4. Remove an account
5. Check state in tokensController and tokenBalancesController, you
should not see data for the deleted account


## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Nick Gambino <[email protected]>
…Mask#15647)

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

- Replaces the mock SDK calls with real ones via `useDepositSDKMethod`
- Adds email validation and OTP code input validation
- moves `email` state to the deposit context, available via
`useDepositSDK` hook
- refactors deposit translation object and adds missing translations
- adds test cases and refactors test


## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Pedro Pablo Aste Kompen <[email protected]>
Co-authored-by: AxelGes <[email protected]>
…etaMask#15498)

<!--
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 "minimum version" awareness to the `bridge-config` feature flag
selector. If minimum version is not met, a generic `disabled` config is
returned.

This PR introduces a patch for `BridgeController` as upgrading to
[v26](https://github.com/MetaMask/core/blob/main/packages/bridge-controller/CHANGELOG.md#2600)
also involves updating the following:
- `MultichainTransactionsController` to `v1`
- `AccountsController` to  `v29`
- `TransactionsController` to `v56`
-  `KeyringController` to `v22`.

Since these would be significant cross-team efforts, in the interest of
time, we've decided to use a patch instead. I've opened an issue to
remove the patch and upgrade all required packages
[here](https://consensyssoftware.atlassian.net/browse/MMS-2512?atlOrigin=eyJpIjoiYmVlMGI4ZGNlM2U4NDEyM2EzMjE5MzAxODQzZjQ4YTciLCJwIjoiamlyYS1zbGFjay1pbnQifQ).

As of this writing:
- [MultichainTransactionsController bumped to
v1](MetaMask#15673)
- [Ongoing efforts for Keyring and Accounts controller
bumps](MetaMask#15356)

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

## **Related issues**

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

The patch branch:
https://github.com/MetaMask/core/compare/patch-%40metamask/bridge-controller%4023.0.0-bridgeConfigV2

## **Manual testing steps**

1. Adjust LD minimum version in `main-dev` to below the current app
version
1. Try to go to Bridge
2. It should be disabled
3. Adjust LD minimum version in `main-dev` to the current app version
4. Try to go to Bridge
2. It should be enabled

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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



https://github.com/user-attachments/assets/927fef49-06c9-4c9f-9d76-359f896cbcfe



## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: IF <[email protected]>
…PC endpoints usage (MetaMask#15290)

## **Description**

This PR implements GitHub [Issue
MetaMask#2707](https://github.com/MetaMask/MetaMask-planning/issues/2707) by
adding the ability to track what type of RPC endpoint users are
connecting to in MetaMask Mobile. We now capture whether users connect
to Ethereum using:

- Infura provider (default)
- Other providers (like tenderly.co or alchemy.com)
- Private IP addresses
- Localhost

The implementation includes:

- A utility function `extractRpcDomain` that parses RPC URLs and returns
just the domain part
- A domain categorization system that identifies known vs private
endpoints
- Extension of transaction metrics to include an `rpc_domain` property
for all transaction events including "Transaction Submitted",
"Transaction Approved", and "Transaction Finalized"
- Integration with the NetworkController to retrieve the correct RPC URL
for a given chain
- **Fixed a bug where `rpc_domain` was missing from failed transaction
events specifically**

This data will allow us to better understand the most popular RPC
endpoints and what percentage of users customize them, helping us
optimize our UX accordingly.

### **Key Improvements**

- **Consistent RPC domain tracking**: Fixed an issue where `rpc_domain`
was missing from "Transaction Finalized" events, particularly for failed
transactions
- **Enhanced error resilience**: Added robust error handling to ensure
the RPC domain is correctly extracted and included in all cases
- **Transaction metrics consistency**: Ensured all transaction events
have the same properties for better analytics comparisons
- **Refactoring**: Of metrics.ts and useSafeChains.ts

### **Privacy and Security Considerations**

- Only stores domains from well-known public RPC providers
- Returns "private" for custom/unknown endpoints to protect user privacy
- Uses locally cached chain data instead of making network requests
- Works with Mobile's network settings and preferences

### **Implementation Notes**

- Implementation follows the same approach used in the MetaMask
Extension
- Adapts the design to Mobile's architecture and controller structure
- Includes proper error handling and edge case management
- Enhanced `handleTransactionFinalizedEventForMetrics` to explicitly
retrieve and include RPC domain information

### **Possible values for `rpc_domain`**

- Public RPC provider domains: e.g., `mainnet.infura.io`,
`eth-mainnet.alchemyapi.io`
- Private/Custom endpoints: `private`
- Invalid URLs (if encountered): `invalid`

## **Related issues**

[MetaMask-planning -
MetaMask#2707](https://github.com/MetaMask/MetaMask-planning/issues/2707)

## **Manual testing steps**

Set up MetaMask Mobile with different RPC endpoints:

1. Default Infura provider
2. Custom provider (e.g., Alchemy)
3. Private IP/localhost

Submit transactions on these networks and verify that the transaction
metrics events include the correct `rpc_domain` property in the
analytics data. Specifically test:
- Submitted transactions
- Approved transactions
- Failed transactions
- Completed transactions

Verify that the `rpc_domain` is present and correct in all cases.

## **Screenshots/Recordings**

**Submitting a Send:**
<img width="807" alt="Screenshot 2025-05-27 at 10 44 56 AM"
src="https://github.com/user-attachments/assets/e7feb1e4-df43-4c80-b021-ada3867b33c1"
/>

```json
"properties": {
  "chain_id": "0x1",
  "rpc_domain": "mainnet.infura.io",
  "smart_transaction_proxied": false,
  "smart_transaction_timed_out": false,
  "source": "MetaMask Mobile",
  "status": "confirmed",
  "transaction_envelope_type": "0x2",
  "transaction_internal_id": "a7108420-3b08-11f0-b0a1-5d6d0fa435b7",
  "transaction_type": "simple_send"
},
```

**Submitting a Swap:**

<img width="250" alt="Screenshot 2025-05-21 at 6 01 30 AM"
src="https://github.com/user-attachments/assets/92e5c0d5-c165-4610-b225-c502ba0aa729"
/>

**Data Sent to Metrics:**

```json
{
  "name": "Transaction Finalized",
  "properties": {
    "chain_id": "0x1",
    "status": "confirmed",
    "source": "MetaMask Mobile",
    "transaction_type": "swap",
    "transaction_envelope_type": "swap",
    "rpc_domain": "mainnet.infura.io",
    "transaction_internal_id": "d0100642-7830-42c9-95bd-e209b04a3a1c"
  },
  "sensitiveProperties": {
    "value": "0x5af3107a4000",
    "to_address": "0x881d40237659c251811cec9c364ef91dc08d300c",
    "from_address": "0x7e52459c31989ef14c7e61d5b3b03d0a8e6a5ba6"
  },
  "saveDataRecording": true
}
```

**Failed Transactions Case:**

The `rpc_domain` property is now consistently included across all
transaction statuses, and it correctly shows _**"mainnet.infura.io"**_
instead of **_"private"_** for the Infura domains, thanks to our updated
`extractRpcDomain` function and updates to the
`generateDefaultTransactionMetrics` function to remove the conditional
logic that previously only added RPC domain information for 'submitted'
or 'confirmed' transactions.

<img width="250" alt="Screenshot 2025-05-27 at 10 50 21 AM"
src="https://github.com/user-attachments/assets/22326e9f-ee19-4b8a-b923-fb5569b58832"
/>

<img width="250" alt="Screenshot 2025-05-21 at 8 31 57 AM"
src="https://github.com/user-attachments/assets/8a695ba1-f7e7-4d2f-a526-17692aae92ad"
/>


https://github.com/user-attachments/assets/f77f5cbf-057a-4d31-a219-46c42274caec

```
LOG METRICS BEING SENT - properties: {
  "chain_id": "0x1",
  "status": "failed",
  "source": "MetaMask Mobile",
  "transaction_type": "contractInteraction",
  "transaction_envelope_type": "contractInteraction",
  "error": "Error: Returned error: execution reverted",
  "rpc_domain": "mainnet.infura.io",  // This is now included
  "simulation_response": "transaction_revert",
  "simulation_latency": 0.092,
  "simulation_receiving_assets_quantity": 0,
  "simulation_receiving_assets_type": [],
  "simulation_receiving_assets_value": [],
  "simulation_sending_assets_quantity": 0,
  "simulation_sending_assets_type": [],
  "simulation_sending_assets_value": [],
  "transaction_internal_id": "7ff9afcb-2eee-11f0-9207-cdd28454b630"
}
```

### **Before**

N/A

### **After**

* See Above screenshots and proof of data being sent to MetaMetrics

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: OGPoyraz <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Nico MASSART <[email protected]>
…ask#15693)

<!--
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 specifies shorter date formates for the dates shown on the
Bridge transaction details page.

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

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to swaps
2. Submit swap
3. Go to tx activity page
4. Select bridge tx
5. See shortened date strings

## **Screenshots/Recordings**

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

### **Before**

![image](https://github.com/user-attachments/assets/2a32e9ed-58f3-4e31-bbbb-8f0c08264931)

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

### **After**
<img width="347" alt="Screenshot 2025-05-26 at 16 58 27"
src="https://github.com/user-attachments/assets/deea24d6-05a1-405f-b33d-03a5a7b19ef9"
/>

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

This PR fixes a bug where the QR account details/receive were adding the
prefix ethereum:<public address>. This is meant to handle deeplinking
but since we do not support deeplinking on Solana this would simply just
break. Instead, for sol accounts, we should simply not render this
prefix. This is the same behaviour that we have on extension.

## **Related issues**

Fixes: MetaMask#15395
Resolves https://consensyssoftware.atlassian.net/browse/MUL-238

## **Manual testing steps**

1. You need to run the app on a physical device to test this change. The
easiest way to do this is with expo and an Android phone. See the
metamask readme for instructions.
2. import the wallet
3. create a solana account either with the popup or by selecting the
account selector, clicking add new account or hardware wallet and
selecting solana
4. once your solana account is created and set as the current account,
click on the scan icon at the top of the wallet view beside your account
name
5. this will open the camera, allow the permissions and then click on
your account
6. a qr code with your solana public address should appear
7. scan the qr code with another phone.
8. the qr code should NOT have the `ethereum:` beside the address
9. then go back to the wallet view
10. click on the blue actions button in the middle of the bottom tab
menu
11. click on Receive, again, a qr code should render
12. scan this qr code with another phone and notice that it DOES NOT
have the ethereum prefix before the public address.
13. Repeat the above steps but change your selected account to an
ethereum account
14. the ethereum prefix should be present. If you have metamask
installed, it should prompt you to deeplink into the app (this prefix is
used for deeplinks)

## **Screenshots/Recordings**

### **Before**
<image
src="https://github.com/user-attachments/assets/6a1c9323-ca72-4923-a09f-c6fbe3117bdb"
height="500" width="300"/>

<image
src="https://github.com/user-attachments/assets/465a3485-36bc-4085-a9cb-86e178421ff8"
height="500" width="300"/>


### **After**


<image
src="https://github.com/user-attachments/assets/8d77ade6-0ee0-4441-8c49-9b3c89609e98"
height="600" width="300"/>

<image
src="https://github.com/user-attachments/assets/12940113-2c0c-4eb8-af72-2c461ac66936"
height="600" width="300"/>

#### Ethereum still contains the correct prefix

<image
src="https://github.com/user-attachments/assets/f626a620-a8f6-46af-a8b7-6109f06d632e"
height="600" width="300"/>


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR brings Solana Dapp Connectivity via Multichain API to Metamask
Mobile.

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

## **Related issues**

MetaMask/MetaMask-planning#4914
Related extension changes:
MetaMask/metamask-extension#29887

## **Manual testing steps**

- Run this in a flask build
- Create Solana Accounts
- Go to the [Multichain Test
Dapp](https://metamask.github.io/test-dapp-multichain/latest/) (which
now supports Solana!):

[Video Demo of Testing with the Test
Dapp](https://github.com/user-attachments/assets/5e974f2d-c1ae-4ca7-95a9-8455bf297f36)

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Jiexi Luan <[email protected]>
Co-authored-by: Alex <[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**

The token chart are failing but on Bitrise but we don't know the cause.
While we investigate the issue I am moving these tests to quarantine

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [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.
…rice overview (MetaMask#15711)

## **Description**

We were not providing the correct type when rendering the price
overview.
E.g. we were passing in '1697241014535' when it expects a number/Date.
(new Date('1697241014535').valueOf() is NaN)

## **Related issues**

Fixes: MetaMask#15596

## **Manual testing steps**

See issue repro steps

1. Select Solana Asset
2. Scrub the price overview chart
3. Expected - no NaN prices that causes the UI to jump.

## **Screenshots/Recordings**

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

### **Before**


https://www.loom.com/share/ec5b401b633f424187edc735ba9fbdc1?sid=55665c97-ae97-439a-9713-8890b62e2b05

### **After**


https://www.loom.com/share/9f5d0a2a2eae47c0bfc595f146371b76?sid=45089be5-fd7e-4e0d-9c9d-d0535ffb8df6

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

Reduces re-renders from the `useMetrics` hook.

React Compiler will help somewhat by preventing children from rendering,
however it does not prevent components that consume hooks from
re-rendering. [Example react compiler
playground](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAHQHYHosAIASEEA1rgIy4CWYuGEALrhAA72UC21CAJgDRWMA7pQA2I3DAT1YGXAENaCQUwBGAKwRx6mHLgAqAC2q5hY3HDlQwCXPQM24EdswgYEGRnbmMrCGnZsDIlJ6CAl3bgQYHTwAIShPe3MjEW5JWVNxOkZ0yOi3AA8XGEYAMygMLUpXXF8AWQBPQhIyAAoASlxgTFxw6RhZbtle3FKiZFwAchU5GEme3ABfTGWMGIJg3AAmKhoWNk5rbnWA81cwKE4MAHMz51d3RjkMbmTRNPcTUSyGcJeo9alGBOWxGGhBEiYBBFCAlUYVKo1epNYJbDpdBaSfqyeoIdgQVrogC8AD5cK0hiNRuMpjM5gtFu1+ABtAC67RWmChMLhkVKlhEZQRbBqjQAgsxmOjKWcMGBGMBqRAJmMIBRFrgibVrI1msQ2hzho45QqlSqiDsNVrkXq0YbeliZLgADzcSgANxJC16ro9JPwCDEYQA6rDUs6sG7Pd6XXo-PQAMJOFxuDy2eNE4CqsgarBe4Y+uPypP3VOeDNZi25-M+yN+gDcnLWGHKlRFsiLieTDw8FPT8qWnRljoGLqjJOA9Hjiwj45WIEWQA).

I'm not saying we should do this for all hooks (this is an over
optimisation). However this hook is used everywhere, and did help reduce
1 render cycle on this PoC performance PR:
MetaMask#15634

## **Related issues**

Fixes:

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Makes "continue" button context aware, displaying "Confirm Swap" or
"Confirm Bridge" for EVM networks and "Continue" for Solana.

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

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to EVM bridge
2. Get quotes
3. See button says "Confirm Bridge" instead of "Continue'

## **Screenshots/Recordings**

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

### **Before**

![image](https://github.com/user-attachments/assets/9d5cb77f-38b6-4d9c-95e3-ec222da48543)

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

### **After**
<img width="355" alt="Screenshot 2025-05-27 at 15 55 14"
src="https://github.com/user-attachments/assets/390c8068-2beb-4b46-92e5-68ae0b697e4a"
/>

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

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

Adds the verify identity page to the deposit flow which is rendered
after the email OTP. Eventually, this page will need to be dynamically
rendered depending on the Transak user properties. For now this will add
the verify page as part of the MVP UX.

![Simulator Screenshot - iPhone 16 Pro - 2025-05-25 at 22 31
13](https://github.com/user-attachments/assets/6928d6f1-8b89-4680-bee6-696fbc990cc2)





## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Pedro Pablo Aste Kompen <[email protected]>
Co-authored-by: AxelGes <[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**

Bumps `@metamask/solana-wallet-snap` to version `1.30.4`.

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

Co-authored-by: Nico MASSART <[email protected]>
This commit modifies the `bitrise.yml` file by re-enabling the
`run_ios_api_specs` workflow while commenting out several other
workflows related to smoke tests for iOS and Android. This change is
part of ongoing adjustments to the CI/CD pipeline.

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

## **Description**

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

## **Related issues**

Fixes: MetaMask#14523

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

This pull request removes the `isLinkSafe` utility function and its
associated logic, tests, and references. This logic to remove malicious
links has been moved to the core repo inside the nft controller in this
PR MetaMask/core#5598

### Removal of `isLinkSafe` functionality:

* Removed the `isLinkSafe` function from `app/util/linkCheck.ts`, along
with its dependencies on `Url`, `is-url`, and `phishingDetection`. This
eliminates the logic for checking link safety based on protocols,
domains, and phishing detection.
* Deleted the corresponding test file `app/util/linkCheck.test.ts`,
which contained unit tests for the `isLinkSafe` function.

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

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR fixes a check for cases there are no quotes and no custom
actions available in the ramps feature.

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

**Issue:** When a dapp is requesting permissions for a network that
hasn't been given yet, the flow enters what looks to be a broken state
to the user. The functionality works but the user experience is
degraded.

**Solution:** Give the component options to opt out of the tab view and
only show the account permissions or the network permissions. So when
the user is prompted to give permissions to a network, they are only
shown the network permissions view

## **Related issues**

Fixes: MetaMask#15619

## **Manual testing steps**

1. Goto https://pancakeswap.finance/
2. Enable all networks except 1 network (or several doesn't matter)
3. Click update
4. In pancake swap click on a network that doesn't have permissions
5. The view with the broken state will apepar

## **Screenshots/Recordings**

| Before | After |
|:---:|:---:|

|![before](https://github.com/user-attachments/assets/bdf14657-f26d-4057-82b6-6d06a91ffdc1)|![after](https://github.com/user-attachments/assets/73a96f50-7f9f-4777-976a-8c4606dcb5e9)|

### New Props
When  the new props`showAccountsOnly` is `true`
<img
src="https://github.com/user-attachments/assets/b52b59b4-ecdd-4946-b2cc-75f1bf2b5bea"
width="375">

When  the new props`showPermissionsOnly` is `true`
<img
src="https://github.com/user-attachments/assets/09ac64e8-9349-4f54-8134-ee3a407507a0"
width="375">

When both are `true`. Accounts are 0 because there aren't any account
props passed. This is just an example of what it would look like
<img
src="https://github.com/user-attachments/assets/c7c00052-1d82-4d74-a947-3e3475527672"
width="375">

### **Before**

NA

### **After**

NA

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [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 the `pre-release` build as an exclusion for the `isTest`
variable that enables test features in the app.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Build a pre-release build 
2. See that it doesn't include test features

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

Build: https://app.bitrise.io/build/13e63a86-2b26-4f52-8e61-3aed43fb3f4c

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR adds end-to-end tests for key Solana functionality, including
the **Create Account** and **Send Token** flows across both iOS and
Android.

###  Coverage & Changes

####  Create Account Flow
- Creates a Solana account via the **new feature sheet**
- Creates a Solana account from the **Add Account modal**
- Renames Solana accounts
- Switches between multiple Solana accounts
- Utilises fixtures for core Solana flows
- Adds `testID`s to relevant Snap components and Solana-specific UI
elements

#### Send Token Flow
- Imports wallet using `importWalletWithRecoveryPhrase`
- Creates a Solana account
- Validates recipient address
- Sends SOL tokens and confirms success

### Implementation Notes
- **Fixtures** are used in the create account flow tests
- The **send token flow uses an imported SRP** via environment variable,
as Solana testnet support is not yet available
- A **mainnet account with funds** is used for send tests
- Snap updates
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

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

## **Manual testing steps**

Local test runs [](url)

## **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/a9f29399-f025-477b-8110-0d1d8e960139



### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Jyoti Puri <[email protected]>
…aMask#15642)

## **Description**

This PR removes design and tech debt by cleaning up unused icon assets
and modernizing the SmartAccountUpdateSplash component implementation.

**What is the reason for the change?**
- The previous implementation in PR MetaMask#15355 added new filled icon
variants (SpeedometerFilled, SparkleFilled, PetrolPump) when existing
icons could be used
- The component was using the older Icon component instead of the modern
AvatarIcon component
- Unused SVG assets were taking up space in the codebase

**What is the improvement/solution?**
- Removed 3 unused SVG files and their corresponding imports/enum
entries
- Replaced Icon component with AvatarIcon component for better design
consistency
- Updated icon names to use existing variants: SpeedometerFilled →
Speedometer, PetrolPump → Gas, SparkleFilled → Sparkle
- Added proper theming support with useTheme hook
- Improved component structure by converting ListItem from arrow
function to proper function component

## **Related issues**

Fixes: N/A

## **Manual testing steps**

1. Navigate to a confirmation flow that triggers the Smart Account
Update Splash
2. Verify that all three list items display with correct icons
(speedometer, gas pump, sparkle)
3. Confirm that icons use proper theming (primary color with muted
background)
4. Test in both light and dark themes to ensure proper color application
5. Verify that icon functionality and accessibility remain unchanged

## **Screenshots/Recordings**

### **Before**
- Used filled icon variants (SpeedometerFilled, SparkleFilled,
PetrolPump)
- Used basic Icon component without proper theming
- Extra SVG files in codebase

<img width="398" alt="Screenshot 2025-05-15 at 3 36 37 PM"
src="https://github.com/user-attachments/assets/e04a2658-19fa-4d2f-ba54-ad383c06ab24"
/>

### **After**
- Uses standard icon variants (Speedometer, Gas, Sparkle)
- Uses modern AvatarIcon component with proper theming
- Cleaner codebase with removed unused assets

<img width="447" alt="Screenshot 2025-05-24 at 10 26 23 AM"
src="https://github.com/user-attachments/assets/2d95298c-2ae3-47d8-97e2-e41f1f10a363"
/>


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

Smart account upgrade splash page should be displayed for the user only
once.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5001

## **Manual testing steps**

1. Enable 7702 locally
2. Go to test dapp and submit 5792 send calls
3. Acknowledge splash page, but cancel confirmation
4. Submit the request again and check that splash page is not displayed

## **Screenshots/Recordings**
NA

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
georgeweiler and others added 29 commits June 4, 2025 11:49
…MetaMask#15998)

<!--
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 is a directory restructure of the ramp directory to include both
the Deposit and Aggregator experiences. These experiences are developed
by the ramp-dev-team and there will be a number of shared components,
hooks, files, utils, and data. This restructure will make it more clear
which components are shared between these experiences.

This issue is an example of the need for such a change. Utils/components
etc that are scoped inside of ramps should not be used outside of the
experience directory:
MetaMask#13020

key changes:
- Ramps files have been moved to `/Ramps/Aggregator`
- Deposit files have bee moved to `/Ramps/Deposit`


Follow up:
- Move shared files into the `/Ramps` directory, one level up from
`/Aggregator` and `/Deposit`

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

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Pedro Pablo Aste Kompen <[email protected]>
… engine bug. (MetaMask#16031)

<!--
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 will fix the issue MetaMask#15487 
Basically the main cause of this bug is from hermes engine
facebook/hermes#1495
TypedArray in hermes has been spec compliant and break the Buffer code.
please refer to above issue record for detail.

In order to minimise the impact to other area with system, i have
discussion with Tomas and only apply patch to ledgerhq/hw-eth-app
library. the way to fix it is to use Buffer wrapper to convert
TypedArray back to Buffer so that toString('hex') will work again. this
fix will make sure iOS and android have same behaviour aslo have
following following benefit.

This PR also upgrade all bluetooth libraries and ledgerhq libraries to
latest to prevent old versions of libraries may have impact to system.

The Buffer.from() wrapper ensures that:
* Consistent behavior: Both iOS and Android will now produce proper hex
strings instead of byte arrays
* Hermes compatibility: This bypasses the Hermes engine's broken
subarray() inheritance behavior
* No performance impact: Buffer.from() with a TypedArray is very fast as
it doesn't copy data, just creates a new view
* Backward compatibility: Works on both old and new JavaScript engines

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

## **Related issues**

Fixes: MetaMask#15487 

## **Manual testing steps**

Need to retests all ledger flow in both iOS and Android.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Copilot <[email protected]>
…#16019)

## **Description**

Displaying nested transaction data in advance section

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5069

## **Manual testing steps**

1. Go to test dapp
2. Submit 5792 send request
3. Check nested transaction data in advance section

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/0c064023-2414-48d4-a879-a87cc30b592d

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

This PR adds network logo for `Katana network`.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Open the app
2. Click on the Networks dropdown menu on the top left corner
3. Click on `Add a custom network`
4. Fill in the RPC information for Katana: 
        Name: Katana
        ChainId: 747474, 
        Symbol: ETH, 
RPC (temporary):
https://rpc-katana.t.conduit.xyz/BrEMKtZpcC8zqdMB9McEZg49crMVPJcto
6. The icon should show correctly

## **Screenshots/Recordings**

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

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

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

## **Related issues**

Extension PR: MetaMask/metamask-extension#31705

## **Manual testing steps**

1. Run a flask build
 a. `yarn setup:flask && yarn start:ios:flask`
 b. `yarn watch`, then press `i` and open MetaMask Flask
3. Navigate to https://metamask.github.io/test-dapp-solana/latest/
4. Connect with MetaMask

## **Screenshots/Recordings**

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

### **Before**

### **After**

![Simulator Screenshot - iPhone 13 Pro - 2025-05-27 at 09 52
32](https://github.com/user-attachments/assets/ad126657-f114-41b1-b2ea-04b6d32b732a)

![Simulator Screenshot - iPhone 13 Pro - 2025-05-27 at 09 52
40](https://github.com/user-attachments/assets/f9924bc9-1b7a-44de-a91a-111b17a867ef)

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

<!--
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 clicking the "switch" button when bridging will break the
quotes. This fixes that by ensuring the destination chain ID is properly
set.
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this bridge
2. Get quote
3. Switch tokens
4. Get quote

## **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/322c17ed-6a13-4b67-bd31-d517f3495ab0


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

### **After**


https://github.com/user-attachments/assets/f2968aab-ade1-4dbd-a0b2-cdadc4d588ab


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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Add logos for Genesys.

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

## **Related issues**

Fixes:

## **Manual testing steps**

1. Open extension
2. Go to https://chainlist.org/
3. Add the network Genesys
4. After accepting, It should add the network to your MetaMask
5. The network icon should show correctly 


## **Screenshots/Recordings**

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

### **Before**

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

### **After**


![image](https://github.com/user-attachments/assets/d53ca22d-3400-4bca-a473-466493f0f616)

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

<!--
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 useIsInsufficientBalance hook currently breaks when attempting to
parse an amount with more decimals than the decimals of the token. This
PR adds a safety check to validate decimals before parsing.
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Related issues**

Fixes: MetaMask#16062

## **Manual testing steps**

1. Select a Solana account
2. Go to swaps
3. While SOL token is selected as source input the amount "0.123123123"
4. Switch the source token to USDC or PONK

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

## **Related issues**

Removes extra 8 px padding for simulations in staking deposit

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

Adding alerts for un-used approvals in batched confirmations.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5047

## **Manual testing steps**

Detailed here: MetaMask/metamask-extension#33237

## **Screenshots/Recordings**
TODO

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: Vinicius Stevam <[email protected]>
…k#15595)

<!--
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 ability for a user to create an Ethereum or Solana
account in the dapp connection flow.

Changes:
1. `AccountConnectMultiSelector`
2. Added `AddAccount` bottom sheet to the `AccountConnect` flow
3. Updated `AddNewAccount` to be a component and created a bottom sheet
for it to be accessible.
4. `MultichainWalletSnapClient` now returns an account when calling
createAccount
5. `actions/multiSrp` how returns an InternalAccount instead of void
when creating a hd account.

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

## **Related issues**

Fixes:
https://consensyssoftware.atlassian.net/browse/MUL-153?atlOrigin=eyJpIjoiMmI1Yzk3NGU1YjJmNDhhZjg2YTI0Y2E0ODU4MTIzNWUiLCJwIjoiaiJ9

## **Manual testing steps**

1. Open the [test
dapp](https://metamask.github.io/test-dapp-multichain/latest/)
2. Click on a scope and then create a session
7. Click edit accounts.
8. See that there is an add account option.
9. Create a eth and solana account. 

## **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/ee59681c-a3d5-4ff7-8522-9a58153cc165



### **After**


https://github.com/user-attachments/assets/3118615f-8b99-42b4-b803-64b6e102f595



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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

1.3
Update New SRP onboarding flow as per figma design

https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign?node-id=434-55200&t=wmEoQSF9g9lFtkwp-0

This PR is part 3 of 7 for the new SRP ui update

This PR cover

 - new ui create srp
 - new ui for import srp

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


https://github.com/user-attachments/assets/a4e8578a-63a1-4393-8237-ef2b339a34bd


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

---------

Co-authored-by: smgv <[email protected]>
Co-authored-by: Chaitanya Potti <[email protected]>
Co-authored-by: hieu-w <[email protected]>
Co-authored-by: hieu-w <[email protected]>
Co-authored-by: tommasini <[email protected]>
…#16011)

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

## **Description**

This PR adds a loading indicator while the balance is being fetched,
instead of showing `undefined`.


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

## **Related issues**

Fixes: MetaMask#15396 

## **Manual testing steps**

1. Go Account list
2. check the balance

**in order to reproduce , you can test on android and create a slow
device emulator, then add a new Solana account**


## **Screenshots/Recordings**

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

### **Before**

<!-- [screenshots/recordings] -->
<img width="590" alt="Screenshot 2025-06-03 at 10 52 41"
src="https://github.com/user-attachments/assets/614d2ce0-5232-4a10-8d18-40de9db8b253"
/>



### **After**

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

<img width="381" alt="Screenshot 2025-06-03 at 10 52 34"
src="https://github.com/user-attachments/assets/3069e841-12b5-4474-b218-7077baa0b3ba"
/>


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

**Problem**: Bitcoin networks were appearing in main/beta builds where
they should be hidden. The `selectNonEvmNetworkConfigurationsByChainId`
selector was not properly code fenced, causing Bitcoin to show up

**Solution**: Implemented proper conditional compilation using code
fencing to ensure Bitcoin networks are only included when the bitcoin
feature is enabled

## **Related issues**

Fixes:

## **Manual testing steps**

1. run `yarn clean && yarn setup` and observe during the permissions
flow that BTC doesn't exist

## **Screenshots/Recordings**

### Main build
<img
src="https://github.com/user-attachments/assets/72895849-23ef-44c3-b378-1bee60c840e8"
width="350" >

### **Before**

`-`

### **After**

`-`

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

This PR aims to adjust e2e tests and infrastructure.

**E2e tests changes:**
- Adds
`e2e/specs/confirmations-redesigned/transactions/wallet-initiated-transfer.spec.js`
   - Basic send flow e2e tests
   - Use max e2e test
- Adds
`e2e/specs/confirmations-redesigned/transactions/dapp-initiated-transfer.spec.js`
   - EIP1559 transfer button in test-dapp
- Adds
`e2e/specs/confirmations-redesigned/transactions/contract-interaction.spec.js`
   - Basic ERC721 mint interaction
- Re-enable skipped security alert API e2e

**Infrastructure changes:**
- Remove section ids as we are using "rows" now
   - Rename existing sections into rows.
- Add `ignoreFields` support to `mock-server` in case if we want to
ignore fields from request - this gives us flexibility of mocking
requests.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4874
Fixes: MetaMask#15726

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

Solana account discovery failure was breaking the entire
wallet creation/restoration flow, causing users to get locked out and
restart onboarding.

**Key Changes:**
1. Non-blocking Discovery: Solana account discovery now runs
asynchronously and can't break wallet creation
2. Automatic Retries: Built-in exponential backoff retry (3 attempts,
up to 10s delay)
3. Persistent Retry: If all immediate retries fail, it stores a flag and
retries on next app unlock
4. Clean Success: Removes retry flags when discovery succeeds

## **Related issues**

Fixes: MetaMask#15965
Jira ticket: https://consensyssoftware.atlassian.net/browse/MUL-251

## **Manual testing steps**
1. Import SRP with multiple accounts with funds
2. Type the new password
3. Password screen should not appear
4. If only 1 accounts has been created, after few seconds other accounts
should be restored as well

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

PR if doing some refactoring of origin-throttling spam detection and
also enable it for `wallet_sendCalls`.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5024

## **Manual testing steps**

1. Enable 7702 locally
2. Submit 5792 request 3 times and reject it
3. Check the origin throttling modal appears

## **Screenshots/Recordings**

<img width="401" alt="Screenshot 2025-05-30 at 11 40 55 AM"
src="https://github.com/user-attachments/assets/967c4307-3299-4d74-bd5b-c151e03aaa0d"
/>

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

To make this E2E test work I had to update **fixtures** with an empty
**favourites** array for the browser. Otherwise, app is throwing an
error **[MetaMask DEBUG]: Error fetching or caching favicon: [TypeError:
Cannot read property 'find' of undefined]** and not loading SVG icons.

Additionally, I have to turn off **testSpecificMock**. If it's turned
on, we load SVG icons via mockServer
(http://10.0.2.2:8000/proxy?url=https://app.ens.domains/favicon.svg) and
this url returns incorrect Content-type header **text/html** which is
filtered out in the patch (react-native-svg+15.11.2.patch, line 16),
but in prod app we load URL https://app.ens.domains/favicon.svg which
returns Content-type **image/svg+xml**

I added E2E test for it which fails if Icon is not loading or if App is
crashing. Video:

https://github.com/user-attachments/assets/2efa7fac-83e6-4f3d-a72c-4b8670984784


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

Uses the shortened currency symbol to provide consistency throughout the
app. This was only visible since I am testing under an `en-GB` locale.

## **Related issues**

Fixes:

## **Manual testing steps**


1. force change the device locale (or move to the UK)
2. Open app 
3. Expected - we are using `$xx.yy` and not `UX$xx.yy` throughout the
app. There should be currency consistency.

## **Screenshots/Recordings**

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

### **Before**

![Screenshot 2025-06-04 at 17 03
00](https://github.com/user-attachments/assets/21caee08-a96d-4b66-b5cc-a64ec2bd21bc)

### **After**

![Screenshot 2025-06-04 at 17 05
35](https://github.com/user-attachments/assets/76b62bce-b331-4b7c-a610-6ea6e5a2d839)


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

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

## **Description**

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

## **Related issues**

Fixes: MetaMask#14504 

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Related issues**

Fixes: MetaMask#13784

**You will notice that this gracefully handles both the
`UrlAutocomplete` issue with bottom of results being cut off, and also
the WebView input UI glitch.

## **Manual testing steps**

1. Open MM mobile app
2. Go to WebView
3. Go to https://portfolio.metamask.io
4. Click upper-right "hamburger" icon
5. Click "Send"
6. Click on the "to" field to focus it
7. Check UI

## **Screenshots/Recordings**


### **Before**


https://github.com/user-attachments/assets/294561e9-0619-4a24-81b9-2efbf6c5b0ca

### **After**


iOS:



https://github.com/user-attachments/assets/ff07109f-58e6-47db-9dce-bab927d5da90



Android:


https://github.com/user-attachments/assets/5103a521-4239-460d-8cc8-5cd22dd341c9


## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

This PR fixes a bug where users were automatically redirected to the
"Accounts" tab after editing network permissions, instead of staying on
the "Permissions" tab they were originally viewing. The fix is just
adding the state for tab in the parent component.

I have also improved and added tests to the permission summary tests

## **Related issues**

Fixes: MetaMask#15875

## **Manual testing steps**

1. Connect to any dapp
2. Click on the top right (the account icon)
3. Manage your permissions by editing the accounts/networks connected
4. Click accept or back and observe you're in the correct tab as before

## **Screenshots/Recordings**

NA

### **Before**


https://github.com/user-attachments/assets/aaa3f06f-cfc7-47e4-9685-6b21c444df3a

### **After**


https://github.com/user-attachments/assets/48e88309-3f36-45a5-aae7-452358a7bd07

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
We're working on adding new Workflows to Bitrise to support more
granular customisation of builds for Android and iOS.

Ticket: MetaMask#15565

Target state:
https://docs.google.com/spreadsheets/d/1tj3Pi2RpOmGs0cnQfv219khs7JSyzW8Raz7eHXlGBqE/edit?pli=1&gid=0#gid=0

In this PR I've added only 6 workflows, below you can find examples of
their runs:
1. build_ios_main_prod
https://app.bitrise.io/build/665389f1-a3bb-4651-a44d-ed7899092416
2. build_ios_main_beta
https://app.bitrise.io/build/e318e232-8eb4-401b-b134-0510ffe1387d
3. build_ios_main_rc
https://app.bitrise.io/build/96cca5c2-a0d0-44df-8684-4180fe0820d9
4. build_android_main_prod
https://app.bitrise.io/build/1c657bf4-8a94-4c85-ac91-01e6f28c97d1
5. build_android_main_beta
https://app.bitrise.io/build/2c9339e9-b4dd-49c6-b7e2-44b05695ed38
6. build_android_main_rc
https://app.bitrise.io/build/e56fb2e7-242f-46e0-a591-17254679be58

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

<!--
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 reverts commit 5d87b79.
MetaMask#15653

This PR is causing e2e failures on our main pipeline. 


## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR sets the Deposit SDK Environment

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

## **Related issues**

Fixes: MetaMask#15267 

## **Manual testing steps**

1. Go to import token page
2. go to custom import
3. click on select network then try to scroll

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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



https://github.com/user-attachments/assets/441e7fd0-05eb-4f27-a3c3-6f7163f4cbd7



## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

There's a flaky test that makes smoke runs to fail, I'm putting this in
quarantine until we have time to check and fix this issue.

## **Related issues**

Fixes: Fails in smoke runs

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
}
// Special case for Infura subdomains - always return the actual domain
// even if not in the known domains list
if (domain.includes('infura.io')) {

Check failure

Code scanning / CodeQL

Incomplete URL substring sanitization High

'
infura.io
' can be anywhere in the URL, and arbitrary hosts may come before or after it.

Copilot Autofix

AI 7 months ago

To fix the issue, replace the substring check domain.includes('infura.io') with a more robust validation that ensures the domain is either infura.io or a valid subdomain of infura.io. This can be achieved by checking if the domain ends with .infura.io and ensuring there is no trailing dot before the suffix. This approach prevents arbitrary hosts from being incorrectly identified as valid subdomains.

Changes to make:

  1. Replace the domain.includes('infura.io') check with a validation that uses domain.endsWith('.infura.io') or checks for exact matches with infura.io.
  2. Ensure that the domain is not malformed (e.g., evil-infura.io.example.com).

Suggested changeset 1
app/util/rpc-domain-utils.ts

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/app/util/rpc-domain-utils.ts b/app/util/rpc-domain-utils.ts
--- a/app/util/rpc-domain-utils.ts
+++ b/app/util/rpc-domain-utils.ts
@@ -129,3 +129,3 @@
   // even if not in the known domains list
-  if (domain.includes('infura.io')) {
+  if (domain === 'infura.io' || domain.endsWith('.infura.io')) {
     return domain;
EOF
@@ -129,3 +129,3 @@
// even if not in the known domains list
if (domain.includes('infura.io')) {
if (domain === 'infura.io' || domain.endsWith('.infura.io')) {
return domain;
Copilot is powered by AI and may make mistakes. Always verify output.
return domain;
}
// Special case for Alchemy subdomains
if (domain.endsWith('alchemyapi.io')) {

Check failure

Code scanning / CodeQL

Incomplete URL substring sanitization High

'
alchemyapi.io
' may be preceded by an arbitrary host name.

Copilot Autofix

AI 7 months ago

To fix the issue, the code should validate the domain against an explicit whitelist of allowed hosts, ensuring that only legitimate domains are accepted. This involves replacing the domain.endsWith('alchemyapi.io') check with a comparison against a predefined list of trusted Alchemy domains. The fix should also ensure that the domain variable is parsed correctly to extract the host component, avoiding substring-based checks.

Steps to implement the fix:

  1. Define a whitelist of allowed Alchemy domains (e.g., ['alchemyapi.io']).
  2. Replace the domain.endsWith('alchemyapi.io') check with a validation against the whitelist using strict equality.
  3. Ensure that the domain variable is parsed correctly to extract the host component before performing the validation.
Suggested changeset 1
app/util/rpc-domain-utils.ts

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/app/util/rpc-domain-utils.ts b/app/util/rpc-domain-utils.ts
--- a/app/util/rpc-domain-utils.ts
+++ b/app/util/rpc-domain-utils.ts
@@ -133,3 +133,4 @@
   // Special case for Alchemy subdomains
-  if (domain.endsWith('alchemyapi.io')) {
+  const allowedAlchemyDomains = ['alchemyapi.io'];
+  if (allowedAlchemyDomains.includes(domain)) {
     return domain;
EOF
@@ -133,3 +133,4 @@
// Special case for Alchemy subdomains
if (domain.endsWith('alchemyapi.io')) {
const allowedAlchemyDomains = ['alchemyapi.io'];
if (allowedAlchemyDomains.includes(domain)) {
return domain;
Copilot is powered by AI and may make mistakes. Always verify output.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.