Skip to content

[pull] main from MetaMask:main#33

Merged
pull[bot] merged 14 commits into
Reality2byte:mainfrom
MetaMask:main
Jul 31, 2025
Merged

[pull] main from MetaMask:main#33
pull[bot] merged 14 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull

@pull pull Bot commented Jul 31, 2025

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.3)

Can you help keep this open source service alive? 💖 Please sponsor : )

pnarayanaswamy and others added 14 commits July 31, 2025 12:59
<!--
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 does the following:

- Logs are now shown whenever a request is sent to a live server or
redirected to the catch-all mock, making it easier to debug unexpected
network calls.
- A temporary URL and domain allowlist has been added to permit specific
requests to reach real servers. The long-term goal is to reduce this
list to zero.
- Merging this PR will only log a warning for new, non-mocked requests
and the tests will not fail yet. This allows teams time to mock missing
URLs without blocking CI.

What's Next:
- Extend the allowlist to include all current live URLs used in existing
tests, preserving the current behavior.
- Enforce stricter validation in the test setup: throw an error if new
tests access live URLs that are not in the allowlist and haven’t been
mocked.
- Collaborate across teams to fully mock all URLs in the allowlist

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:
[MMQA-805](https://consensyssoftware.atlassian.net/browse/MMQA-805)

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


[MMQA-805]:
https://consensyssoftware.atlassian.net/browse/MMQA-805?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

- Bug 1: #17690
- Bug 2: #17596
- Bug 3:
https://www.notion.so/metamask-consensys/Save-your-SRP-blurry-text-should-be-dark-for-dark-mode-23ef86d67d6880d38c77f1c2a20e651a?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 4:
https://www.notion.so/metamask-consensys/Remove-extra-space-after-Learn-how-on-the-wallet-is-ready-screen-23ef86d67d6880178aefe8060287cabd?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 5:
https://www.notion.so/metamask-consensys/Remove-Learn-more-on-the-wallet-recovery-screen-in-settings-and-the-R-in-the-title-should-be-low-23ef86d67d6880cca1dbd8d7158e42d7?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 6:
https://www.notion.so/metamask-consensys/Remove-white-part-in-graphics-23ff86d67d6880459efec45fee8047e0?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 7:
https://www.notion.so/metamask-consensys/Remove-back-button-from-Save-your-SRP-screen-23ff86d67d6880f29d78e0b25bf0897a?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 8:
https://www.notion.so/metamask-consensys/Capitalise-G-and-A-in-Google-and-Apple-in-settings-23ff86d67d688043b81fe446fb9c8ba2?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 9:
https://www.notion.so/metamask-consensys/Copy-issues-in-Forgot-your-password-screens-23ff86d67d68809b9eaef9e204509ccd?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to the app
2. please follow the given steps in each bug.
3.

## **Screenshots/Recordings**

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

### **Before**

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

- Bug 1: #17690
- Bug 2: #17596
- Bug 3:
https://www.notion.so/metamask-consensys/Save-your-SRP-blurry-text-should-be-dark-for-dark-mode-23ef86d67d6880d38c77f1c2a20e651a?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 4:
https://www.notion.so/metamask-consensys/Remove-extra-space-after-Learn-how-on-the-wallet-is-ready-screen-23ef86d67d6880178aefe8060287cabd?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 5:
https://www.notion.so/metamask-consensys/Remove-Learn-more-on-the-wallet-recovery-screen-in-settings-and-the-R-in-the-title-should-be-low-23ef86d67d6880cca1dbd8d7158e42d7?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 6:
https://www.notion.so/metamask-consensys/Remove-white-part-in-graphics-23ff86d67d6880459efec45fee8047e0?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 7:
https://www.notion.so/metamask-consensys/Remove-back-button-from-Save-your-SRP-screen-23ff86d67d6880f29d78e0b25bf0897a?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 8:
https://www.notion.so/metamask-consensys/Capitalise-G-and-A-in-Google-and-Apple-in-settings-23ff86d67d688043b81fe446fb9c8ba2?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link
- Bug 9:
https://www.notion.so/metamask-consensys/Copy-issues-in-Forgot-your-password-screens-23ff86d67d68809b9eaef9e204509ccd?v=211f86d67d68803c88d7000cfcf4f021&source=copy_link

### **After**

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



https://github.com/user-attachments/assets/f75f57e9-279e-4b64-a6eb-b9f21b713fa8

<img width="1076" height="1001" alt="Screenshot 2025-07-30 at 4 06
46 PM"
src="https://github.com/user-attachments/assets/aebae079-3085-4bd3-bf1a-2b4a17c0e0c2"
/>
<img width="1065" height="979" alt="Screenshot 2025-07-30 at 6 53 44 PM"
src="https://github.com/user-attachments/assets/e5442fba-1314-494f-9fb1-b023f2122a21"
/>
<img width="978" height="978" alt="Screenshot 2025-07-30 at 6 57 49 PM"
src="https://github.com/user-attachments/assets/9a58402b-a26e-4bc1-9fe1-107265e0c801"
/>
<img width="550" height="966" alt="Screenshot 2025-07-30 at 7 18 31 PM"
src="https://github.com/user-attachments/assets/b076a5cd-6009-43e6-94e2-6b07dd0fb042"
/>
<img width="1233" height="973" alt="Screenshot 2025-07-30 at 7 31 15 PM"
src="https://github.com/user-attachments/assets/5f9b5d58-544f-4d87-8deb-de3cb88423ad"
/>
<img width="1044" height="1005" alt="Screenshot 2025-07-30 at 7 46
43 PM"
src="https://github.com/user-attachments/assets/1250e2bb-e0a9-4a13-aa91-ff42746ba997"
/>
<img width="1019" height="987" alt="Screenshot 2025-07-30 at 7 48 50 PM"
src="https://github.com/user-attachments/assets/1366eb11-acd1-4cb8-9bf7-c9141a67d5fd"
/>
<img width="547" height="1005" alt="Screenshot 2025-07-30 at 7 58 19 PM"
src="https://github.com/user-attachments/assets/ffe1b2d1-a67f-4d71-8442-3ed93251a782"
/>
<img width="716" height="160" alt="Screenshot 2025-07-30 at 8 02 24 PM"
src="https://github.com/user-attachments/assets/3873c3cb-afae-4258-81d3-526925aeefcd"
/>
<img width="1199" height="962" alt="Screenshot 2025-07-30 at 8 48 39 PM"
src="https://github.com/user-attachments/assets/163f2d70-a197-4df1-bde2-00a2e007023f"
/>
<img width="1153" height="997" alt="Screenshot 2025-07-30 at 8 53 33 PM"
src="https://github.com/user-attachments/assets/b6a1752c-8269-4e25-8d43-7b14ecd40462"
/>


## **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**
User is unable to see and trigger an upgrade across networks that are
down on the list.
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Fixed a but with scroll on new account details view

## **Related issues**

Fixes: #17708

## **Manual testing steps**

1. Have multiple 7702 networks in the wallet
2. Go into account details

## **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/0a4a9fe5-6a2b-417e-a8a1-5c958cb1679b
<!-- [screenshots/recordings] -->

### **After**


https://github.com/user-attachments/assets/8eccca41-a0d2-4dc6-9250-4d5ce4e9fed5


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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

## **Description**

This PR bumps `@metamask/profile-sync-controller` from `^21.0.0` to
`^23.0.0`.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes:

## **Manual testing steps**

1. No manual testing steps

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

- [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 helps to reset send flow when it's previously succeed. This
prevents previous selected token is removed from redux state when
another send flow is initiated.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: #17126

## **Manual testing steps**

1. Send ERC20 token
2. Switch networks
3. Click on send button
4. Notice the token sent at step 1 is not selected anymore

## **Screenshots/Recordings**

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

### **Before**

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

### **After**



https://github.com/user-attachments/assets/a648a8b1-e88c-49e2-b2a4-53340b5ed93f



## **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 the Card-related copy to the en.json file.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

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

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

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

Uses a separate end point to poll for user's kyc status so that rejected
users can resubmit.

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

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **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 <wachunei@gmail.com>
## **Description**
Add option on send page to use max available amount of token for
transfer, this works for native / ERC20 tokens.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: MetaMask/MetaMask-planning#5434

## **Manual testing steps**

1. Enable send re-designs locally
2. Click max button
3. Check that max available amount to token is filled in amount input

## **Screenshots/Recordings**
<img width="399" height="850" alt="Screenshot 2025-07-28 at 10 09 51 AM"
src="https://github.com/user-attachments/assets/6d4cba62-4362-4557-a149-c9c4f8af7ddd"
/>

## **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 <omergoktugpoyraz@gmail.com>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

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

This PR implements the ability for users to close perpetual positions
(TAT-1826) and introduces protocol-agnostic fee computation for the
perps trading system.

### Key Changes:

1. **Close Position Feature**
- Added new `PerpsClosePositionBottomSheet` component with market/limit
order tabs
   - Integrated position size slider for partial/full position closing
   - Displays position P&L, effective margin, and closing percentage
   - Automatic TP/SL closure when position is closed
   - Success animations and feedback upon trade execution

2. **Protocol-Agnostic Fee Computation**
- Created unified `usePerpsOrderFees` hook for centralized fee
calculation
   - Added async `calculateFees` method to IPerpsProvider interface
   - Supports future volume-based discounts and user tier calculations
   - Separated protocol fees from MetaMask fees for transparency
   - Fixed incorrect HyperLiquid fee rates (0.045% taker, 0.015% maker)

The protocol-agnostic fee system allows each provider to implement its
own fee structure while maintaining a consistent interface. This sets
the foundation for future enhancements like user tier discounts and
staking benefits.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Added the ability to close perpetual trading positions
with market or limit orders, including partial position closing and
automatic TP/SL closure

## **Related issues**

Fixes: TAT-1826

## **Manual testing steps**

1. Navigate to the Perps trading screen and open a position
2. Tap the "Close" button on an open position
3. Test market order closing:
   - Select "Market" tab
   - Use slider to select partial amount (e.g., 50%)
   - Verify position size, effective margin, and P&L display correctly
   - Confirm and verify position is partially closed
4. Test limit order closing:
   - Select "Limit" tab  
   - Set a limit price
   - Use slider to select full position (100%)
   - Verify order is placed correctly
5. Verify fees are calculated correctly:
   - Check that market orders show 0.045% fee
   - Check that limit orders show 0.015% fee (when acting as maker)
6. Verify TP/SL orders are automatically cancelled when position is
closed
7. Verify success animation and Fox points display after closing

## **Screenshots/Recordings**

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

### **Before**

<!-- [screenshots/recordings] -->
Users could only open positions but had no way to close them through the
UI.

### **After**



https://github.com/user-attachments/assets/a3196795-b60f-4362-ad43-7bab85ef4500


<!-- [screenshots/recordings] -->
- Close position bottom sheet with market/limit tabs
- Position size slider for partial closing
- P&L and effective margin display
- Success animations after closing

## **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: Nicholas Gambino <nicholas.gambino@consensys.net>
Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Adds Perps eligibility state and fresh method to PerpsController. Also
adds the `usePerpsEligibility` hook.
<!--
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?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Added eligibility state and refresh method to Perps
Controller and added `usePerpsEligibility` hook.

## **Related issues**

Fixes:
- TAT-1233: As a user, I can only use Perps if certain conditions are
met
## **Manual testing steps**

## Testing

1. import `usePerpsEligibility` hook in any component to access current
eligibility status and refresh eligibility.

## **Screenshots/Recordings**

N/A

## **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.
<!--
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**
Moves quote validation/simulation to happen on quote fetch instead of on
quote submission.

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

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to Solana swaps
2. Get quote that fails simulation or validation
3. See simulation or validation error and disabled submit button

## **Screenshots/Recordings**

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

### **Before**

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

### **After**
<img width="342" height="740" alt="Screenshot 2025-07-30 at 10 53 43"
src="https://github.com/user-attachments/assets/b8603da6-2e83-4f1b-a42c-77b0e463d03b"
/>

<!-- [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.
…17571)

This PR will fix #17498 issue found by QA regression test. 
The root clause of this issue is new camera component introduced by this
[PR](#15363), the close
icon has been covered by camera component, the only fix to make close
icon above the camera is to put it outside the camera component

Also, it was needed to fix parent view margin positions (done for both
QR and Ledger)

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

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes: #17498 

## **Manual testing steps**

1. Add hardware wallet (QR)
2. Import QR accounts
3. initiate a transaction
4. When confirm transaction screen is shown to scan the QR code, there
should be an X to close the window, if the user wants to amend the
transaction before confirming


## **Screenshots/Recordings**

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

### **Before**

<img
src="https://github.com/user-attachments/assets/b7c3ac58-7f43-42d5-97d2-4df13b667e5f"
height="500">
<img
src="https://github.com/user-attachments/assets/1545edb0-103b-45d3-b0f6-dede866ecb83"
height="500">
<img
src="https://github.com/user-attachments/assets/6a78dabe-a73c-4a58-935d-1c1b7e4ff321"
height="500">

### **After**

<img
src="https://github.com/user-attachments/assets/090a039d-5871-4bf2-8852-f021f35e4a33"
height="500">
<img
src="https://github.com/user-attachments/assets/bddb6d5b-d6fa-4836-90ef-c907b055faf9"
height="500">
<img
src="https://github.com/user-attachments/assets/b529f9c6-7cb2-401a-82ed-dc1978853b63"
height="500">

## **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: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
<!--
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 test results for E2E smoke testing suites

<!--
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?
Improve test visibility for E2E smoke

2. What is the improvement/solution?
Generate report attached in the Summary tab

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/INFRA-2792

## **Manual testing steps**

1. Enable E2E smoke testing by adding `if: github.event.label.name ==
'Run E2E Smoke Test'` to any of the testing suites, ie `"Confirmations
Smoke (iOS)` at `.github/workflows/run-e2e-smoke.yml`
2. Create a PR
4. Add the label `Run E2E Smoke Test` to your PR
5. Once finished, check the reporting job `Summary`

## **Screenshots/Recordings**

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

### **Before**

https://github.com/MetaMask/metamask-mobile/actions/runs/16598106490

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

### **After**

<img width="905" height="1230" alt="image"
src="https://github.com/user-attachments/assets/9413319d-9f8d-4ed8-92e8-f5ba5e9b45a3"
/>


## **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 fixes when the pipeline fails, to explictly shows better the
total time took on the test and an error message

e2e pipeline to succeed

https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/fd645116-4a4c-42f8-95fc-219ad9d7d262
e2e pipeline to fail

https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/ecd53b16-7be8-40ea-8a6b-945817d18129
<!--
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?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **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.
@pull pull Bot locked and limited conversation to collaborators Jul 31, 2025
@pull pull Bot added the ⤵️ pull label Jul 31, 2025
@pull pull Bot merged commit b6b41b3 into Reality2byte:main Jul 31, 2025
1 check failed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.