Skip to content

[pull] main from MetaMask:main#145

Merged
pull[bot] merged 16 commits into
Reality2byte:mainfrom
MetaMask:main
Sep 11, 2025
Merged

[pull] main from MetaMask:main#145
pull[bot] merged 16 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Sep 11, 2025

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

matthewwalsh0 and others added 16 commits September 11, 2025 11:47
## **Description**

Multiple fixes for the Perps deposit and MetaMask pay, including:

- Hide incoming transactions for MetaMask pay bridge transactions in
activity.
- Show `Pending` in activity if transaction has `signed` status.
- Fix display of MetaMask pay transactions in activity if payment token
chain selected.
- Show combined `Transaction fee` with individual fees in tooltip.
- Allow gas bridges to result in value less than original target.
- Show batch transactions in transaction details.
- Show token approvals in transaction details.
- Prevent deposit if using a hardware wallet.
- Navigate to Perps tab after deposit.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes:
[#5774](MetaMask/MetaMask-planning#5774)
[#5791](MetaMask/MetaMask-planning#5791)
[#5792](MetaMask/MetaMask-planning#5792)
[#5794](MetaMask/MetaMask-planning#5794)
[#5793](MetaMask/MetaMask-planning#5793)
[#5800](MetaMask/MetaMask-planning#5800)
[#5799](MetaMask/MetaMask-planning#5799)

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

_**Minimum deposit disabled for testing.**_

<img width="350" alt="Transaction Fee"
src="https://github.com/user-attachments/assets/aeea6289-7ede-4a77-bf75-5126b88acb38"
/>

<img width="350" alt="Transaction Fee Modal"
src="https://github.com/user-attachments/assets/f0d36a8d-738f-482c-85bf-5f649a970619"
/>

<img width="350" alt="Hardware Wallet Alert"
src="https://github.com/user-attachments/assets/123143db-b311-4314-bdee-48682dd44e34"
/>

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

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

## **Description**
This PR removes an option to reveal private key from `Settings` ->
`Security & Privacy`. We already have this functionality in Account
details.
<!--
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: Removes "Show private key" fro Security & Privacy
settings

## **Related issues**

Fixes:
Jira ticket: https://consensyssoftware.atlassian.net/browse/MUL-676

## **Manual testing steps**

```gherkin
Feature: Show private key

  Scenario: user wants to show private key
    Given user is already onboarded

    When user goes to Settings -> Security & Privacy
    Then "Show private key" section should not be visible
```

## **Screenshots/Recordings**

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

### **Before**
<img width="386" height="825" alt="Screenshot 2025-09-10 at 13 32 57"
src="https://github.com/user-attachments/assets/973ae2a5-f478-4300-864b-41e1b666fc5b"
/>

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

### **After**
<img width="387" height="831" alt="Screenshot 2025-09-10 at 13 34 31"
src="https://github.com/user-attachments/assets/2ae9fe3d-d5a5-4521-9f4b-07f3a983c645"
/>

<!-- [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?
-->
- Move flaky tests to regression while we work on them.
- These tests will also change very soon
## **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**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

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

## **Pre-merge reviewer checklist**

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

## **Description**

Align QA labels with current needs:

Mandatory labels
- No QA Needed / QA Needed -> Removed. Since E2E tests run by default
now, we should just use the label needs-qa to block the PR when needed
(as what we do in extension repo)
- Run Smoke E2E/ No E2E Smoke Needed -> Removed. Old labels to run/no
run tests on BitRise

New optional label
- run-ios-e2e-smoke -> optional, to trigger iOS E2E smoke tests on
BitRise

Deprecated
- "QA'd but questions" -> Removed
- "issues-found" -> Removed

Labelling logic and guidelines adapted.

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

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

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

## **Pre-merge reviewer checklist**

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

This PR ensures Switching dapp network should not affect network manager
or global network

## **Changelog**

CHANGELOG entry: added grant permission via connected site popover

## **Related issues**

Fixes:
[https://github.com/MetaMask/metamask-mobile/issues/19309](https://github.com/MetaMask/metamask-mobile/issues/19309)

## **Manual testing steps**

```gherkin
Feature: Network Switching with Dapp Connection

  Scenario: Network switch should not affect dapp connection
    Given the user is connected to a dapp
    When the user clicks on the icon in the upper right side
    And clicks on "Manage Permissions"
    And clicks on the dapp symbol
    And switches networks
    And goes to Home
    And refreshes the page
    Then the network should not have changed
    And the dapp connection should remain intact
```

## **Screenshots/Recordings**

`~`

### **Before**

`~`

### **After**


https://github.com/user-attachments/assets/c8c48cb0-75d9-4f2f-999c-c1e417e2ffbd

## **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: vinnyhoward <vincenguyenhoward@gmail.com>
Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com>
## **Description**

Adds contentful version segmentation

## **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: feat: add Contentful version segmentation

## **Related issues**

Fixes:

## **Manual testing steps**

Add contentful carousel and in-app notifications with version
segmentation.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**


https://www.loom.com/share/fc7e34f312644bd0baa853ee321cbd82?sid=7eee49c2-07b4-4135-aa00-40005cf846e0


https://www.loom.com/share/a4ee5cafeb634a00ae073662412d6df7?sid=2370359d-865f-4956-9842-a7c46f74f9a6

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

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

Reset recipient page as solana request is cancelled

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

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

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

Recording of the test available below
-->

## **Description**
Adds e2e tests:
- liquidation to position
- Limit order creation and convert to position

Leverages of an e2e deeplink endpoint to be able to manage liquidation
events from the e2e test

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

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

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

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

https://www.loom.com/share/793a772d9c88412fba275b79d67b2dba

### **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**
1. What is the reason for the change?
The pnl did not show for flipped positions which really are a close and
an open and should show pnl
2. What is the improvement/solution?
Ensure we are showing pnl for the amount calc in transactions list for
positions. Also update the detail for the position to include the pnl
like closed positions

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

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-1508

## **Manual testing steps**

```gherkin
Feature: position transactions flipped

  Scenario: user is viewing positions in transaction list
    Given user views a flipped position item

    When user sees the amount
    Then it should be a pnl amount
   When user clicks on the detail
   Then they should see pnl in the detail as well and it should be the same
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**
<img width="500" height="auto" alt="Simulator Screenshot - iPhone 15 Pro
- 2025-09-11 at 02 53 23"
src="https://github.com/user-attachments/assets/ea0d7ea2-69e8-4fa9-a25d-fc399eee3836"
/>
<img width="500" alt="Simulator Screenshot - iPhone 15 Pro - 2025-09-11
at 03 18 16"
src="https://github.com/user-attachments/assets/bc97895d-ad0c-4b2e-a78d-997c2650c6a1"
/>
<img width="1483" height="51" alt="Screenshot 2025-09-11 at 2 53 45 AM"
src="https://github.com/user-attachments/assets/137f06da-ef6d-4a4c-a8b8-57464158585a"
/>

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

Added smart routing for Perps deeplinks to provide direct access to the
markets list for returning users while preserving tutorial onboarding
for first-time users.

**What is the reason for the change?**
Currently, the `perps` deeplink only provides one navigation option for
returning users - going to the wallet tab. There's no direct way for
returning users to access the markets list (PerpsMarketListView) via
deeplink parameters.

**What is the improvement/solution?**
Modified the existing `handlePerpsUrl` function to implement smart
routing based on user status and URL parameters:
- **First-time users**: Always go to tutorial (regardless of parameters)
for proper onboarding
- **Returning users**: Route based on URL parameters:
  - `perps` → Wallet home with Perps tab selected (existing behavior)
- `perps?screen=markets` → Direct navigation to markets list
(PerpsMarketListView)

## **Changelog**

CHANGELOG entry: Enhanced Perps deeplinks to allow direct access to
markets list for returning users

## **Related issues**

Fixes: Request to add deeplink redirection to PerpsMarketListView

## **Manual testing steps**

```gherkin
Feature: Smart Perps Deeplink Routing

  Scenario: First-time user uses perps deeplink with screen parameter
    Given user is a first-time Perps user
    When user opens perps?screen=markets deeplink
    Then user should navigate to Perps tutorial with isFromDeeplink=true

  Scenario: First-time user uses regular perps deeplink
    Given user is a first-time Perps user
    When user opens perps deeplink
    Then user should navigate to Perps tutorial with isFromDeeplink=true

  Scenario: Returning user uses perps deeplink with screen=markets parameter
    Given user is a returning Perps user
    When user opens perps?screen=markets deeplink
    Then user should navigate directly to PerpsMarketListView

  Scenario: Returning user uses regular perps deeplink
    Given user is a returning Perps user
    When user opens perps deeplink
    Then user should navigate to wallet home with Perps tab selected
```

### **Testing Deeplinks**

#### **Easy Testing via Web Interface**
🌐 **Testing Website**: https://metamask-deeplinks-perps.vercel.app/

This website provides:
- ✅ One-click deeplink testing for all scenarios
- ✅ Complete command-line instructions for iOS and Android
- ✅ Real-time validation of deeplink behavior
- ✅ Support for both development and production builds

#### **iOS Testing (Command Line)**
```bash
# Test direct markets list navigation (returning users)
xcrun simctl openurl booted "https://link-test.metamask.io/perps?screen=markets"

# Test regular perps navigation (both user types)
xcrun simctl openurl booted "https://link-test.metamask.io/perps"

# Test existing asset deeplinks (should remain unchanged)
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=BTC"
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=ETH"
xcrun simctl openurl booted "https://link-test.metamask.io/perps-asset?symbol=SOL"

# Test with additional query parameters
xcrun simctl openurl booted "https://link-test.metamask.io/perps?screen=markets&utm_source=test"
```

#### **Android Testing**
```bash
# Test direct markets list navigation (returning users)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets" com.metamask.tradingapp.development

# Test regular perps navigation (both user types)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps" com.metamask.tradingapp.development

# Test existing asset deeplinks (should remain unchanged)
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps-asset?symbol=BTC" com.metamask.tradingapp.development
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps-asset?symbol=ETH" com.metamask.tradingapp.development

# Test with additional query parameters
adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets&utm_source=test" com.metamask.tradingapp.development

# Alternative: Test with release build
# adb shell am start -W -a android.intent.action.VIEW -d "https://link-test.metamask.io/perps?screen=markets" io.metamask
```

## **Screenshots/Recordings**

### **Before**
- `perps` URL only had one navigation option for returning users -
wallet tab
- No way to access markets list directly via deeplink parameters

### **After**
- First-time users: All Perps URLs go to tutorial (proper onboarding)
- Returning users: `perps?screen=markets` goes directly to
PerpsMarketListView
- Returning users: `perps` still goes to wallet tab (backward
compatibility)


https://github.com/user-attachments/assets/a2a7b6cd-0bf4-4b2c-a17e-fc858a5cb498


## **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**
1. What is the reason for the change?
User cannot set tpsl on their position due to a regression. Short
positions have a - size and to compare size need an absolute value
2. What is the improvement/solution?
Use absolute value of sizes when comparing to match order to position
<!--
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: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-1645

## **Manual testing steps**

```gherkin
Feature: fix tpsl on short position

  Scenario: user makes a short position
    Given user updates tpsl

    When user submits position update 
    Then they should see updated tpsl
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**
<img width="500" alt="Simulator Screenshot - iPhone 15 Pro - 2025-09-11
at 04 20 48"
src="https://github.com/user-attachments/assets/8e12aa8d-95b3-4f04-b3d9-824463c03545"
/>
<!-- [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**

Cleans up some perps tooltip logic and makes it enable push
notifications.

- completes the scaffold work done in
#18165

<!--
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: update perps notification tooltip to enable push
notifications

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: nudge to turn on notifications

  Scenario: nudge to turn on notifications on first order
    Given user completes first order and does not have notifications on
    Then bottom sheet appears to enable notifications
    When user turns on notifications
    Then will (optionally) be prompted to turn on push notifications and in-app notifications will be turned on.
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**


https://www.loom.com/share/c9fa1908366d4f989b646cd3552d30a5?sid=9c884a40-75d4-4683-9493-59a75aa1935b

<!-- [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 the bridge-status-controller version which includes these
fixes:
- Use correct segment event names
- Use tx hash as txHistory key and txMetaId for Solana bridges

The PR also includes a migration script that updates existing Solana
transactions with the correct txHistory key and txMetaId, which is used
by the status controller to fetch the latest bridge tx status




<!--
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: `fix: use hash as txHistory key and txMetaId for Solana
bridges`

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/SWAPS-2945

## **Manual testing steps**

```gherkin
Feature: Solana tx status polling

  Scenario: user submits a new Solana bridge transaction

    When user submits a new Solana bridge tx
    Then it should show up as a success, including the dest tx hash, within a few minutes


  Scenario: user updates the wallet
    Given they have existing Solana bridge transactions which have been pending for a while

    When user gets the latest wallet update
    Then status polling should restart for old solana bridge txs, and their dest tx hash should be visible in the activity log details

```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask 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.
…ogin flow during wallet creation and unlock. (#19440)

<!--
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**
New Onboarding UI designs
Enable biometrics automatically on both SRP and social login flow during
wallet creation and unlock. :
https://consensyssoftware.atlassian.net/browse/SL-152

<!--
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: Enable biometrics automatically on both SRP and social
login flow during wallet creation and unlock.

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```
Steps:

For new User:
Register as a new user on App.
On Choose Password Screen, no biometrics option should be present.
And after successful registration, go to settings, biometrics should be
enabled by default.
For Existing User:

Login into App.
On Login/enter Passwoq screen, there should be no biometrics option to
enable/disable.


## **Screenshots/Recordings**

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

### **Before**

<!-- [screenshots/recordings] -->
Choose password Design:
https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign--Main-?node-id=10403-193321&t=qXDkQTp9yIdyVFr3-0
Login Design:
https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign--Main-?node-id=11539-128136&t=qXDkQTp9yIdyVFr3-0

### **After**

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


https://github.com/user-attachments/assets/45f64ed7-a88d-416e-ab48-e926ef09f11c



https://github.com/user-attachments/assets/21faabc4-a1a9-42a8-9cb5-93659db816f7


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

- [x] 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: ieow <4881057+ieow@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**

This PR adds initial support for the Deposit flow to be exposed to the
Deeplinks by using `/deposit` URL

## **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 `/deposit` action for deeplinking into Deposit.

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TRAM-2653

## **Manual testing steps**

```gherkin
Feature: Deposit

  Scenario: user deeplinks into deposit feature
    Given app is in the background

    When user visits /deposit deeplink
    Then app handles it correctly and navigates to Deposit 
```

## **Screenshots/Recordings**

### **Before**

### **After**



https://github.com/user-attachments/assets/b01da70a-186a-4322-963a-932311453612



## **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.
…ltichain setup (#19283)

<!--
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 comprehensive end-to-end tests for the multichain account
details feature, specifically testing account name changes with the new
multichain UI.

### What was added:

- New E2E test file:
e2e/specs/accounts/change-account-name-multichain.spec.ts
- Feature flag testing: Tests with
remoteFeatureMultichainAccountsAccountDetails(true) enabled
- Complete test coverage: Both main account and imported account
renaming scenarios
- Persistence validation: Lock/unlock cycle testing to ensure name
changes persist across app sessions
- Cross-platform support: Validated on both iOS and Android platforms

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

## **Manual testing steps**

```gherkin
Feature: Multichain Account Name Changes
  Scenario 1: User renames main account with multichain details enabled
    Given the app is launched with remoteFeatureMultichainAccountsAccountDetails enabled
    When user taps account icon, selects main account actions, and renames account
    Then the new name should be saved and persist after lock/unlock cycle

  Scenario 2: User renames imported account with multichain details enabled
    Given the app has an imported account with multichain details enabled
    When user selects imported account, opens account actions, and renames account
    Then the new name should be saved and persist after lock/unlock cycle
```

## **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
- [ ] 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.
@pull pull Bot locked and limited conversation to collaborators Sep 11, 2025
@pull pull Bot added the ⤵️ pull label Sep 11, 2025
@pull pull Bot merged commit 0766b03 into Reality2byte:main Sep 11, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.