Skip to content

[pull] main from MetaMask:main#497

Merged
pull[bot] merged 6 commits into
Reality2byte:mainfrom
MetaMask:main
Feb 4, 2026
Merged

[pull] main from MetaMask:main#497
pull[bot] merged 6 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Feb 4, 2026

See Commits and Changes for more details.


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

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

georgewrmarshall and others added 6 commits February 4, 2026 05:45
## **Description**

This PR simplifies the Earn confirmation screen navigation by keeping
bottomsheet drilldowns consistent and updating the main Earn stack to
use slide-from-right animation instead of modal presentation.

### What is the reason for the change?
The Earn confirmation screens were initially being migrated from
bottomsheets to full page components, but this created unnecessary
complexity and inconsistency with the existing confirmation bottomsheet
patterns used throughout the app (e.g., dapp permissions).

### What is the improvement/solution?
- Configured `Routes.EARN.ROOT` with `cardStyleInterpolator` to use
horizontal slide-from-right transitions for the main Earn screens
- Updated confirmation bottomsheet trigger icons from `ArrowRight` to
`ArrowDown` to correctly indicate they open bottomsheets (not navigate
to pages)
- Kept all confirmation flows using the existing bottomsheet pattern for
consistency
- Removed unnecessary page components that were attempting to replace
bottomsheets

### Key Changes:
1. **MainNavigator.js**: Added slide-from-right animation to Earn stack
2. **Icon updates**: Changed bottomsheet triggers to use `ArrowDown`
icon in:
   - Account/Network info row
   - Advanced details row
3. **Removed components**: Deleted `EarnAccountSelectorView` and
`EarnAdvancedDetailsView` page components

## **Changelog**

CHANGELOG entry: Updated Earn confirmation screens to use
slide-from-right navigation with consistent bottomsheet drilldowns

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MDP-403

## **Manual testing steps**

```gherkin
Feature: Earn confirmation navigation

  Scenario: user navigates to Earn deposit confirmation
    Given user is on the Earn token list screen

    When user selects a token and enters an amount to deposit
    And user taps the "Supply" button
    Then the deposit confirmation screen should slide in from the right (not from bottom)
    And the header should be displayed correctly
    And user can navigate back using the back arrow

  Scenario: user expands account details in confirmation
    Given user is on the Earn withdrawal confirmation screen

    When user taps on the "Account" row with down arrow icon
    Then a bottomsheet should slide up showing account details
    And the bottomsheet should have a back button to collapse it

  Scenario: user expands advanced details in confirmation
    Given user is on a confirmation screen

    When user taps on the "Advanced details" row with down arrow icon
    Then a bottomsheet should slide up showing advanced details
    And the bottomsheet should have a back button to collapse it
```

## **Screenshots/Recordings**

### **Before**
- Earn screens slid up from bottom (modal presentation)
- Inconsistent use of ArrowRight icons on bottomsheet triggers


https://github.com/user-attachments/assets/d35ca4f5-9dcb-4aa3-b648-5946df2601e3

### **After**
- Earn screens slide in from the right (standard page navigation)
- Bottomsheet triggers correctly use ArrowDown icons
- All confirmation drilldowns use consistent bottomsheet pattern


https://github.com/user-attachments/assets/aa9bfe3e-31dd-42b9-ac5c-e3c84d5d10f9

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Navigation/UX-only changes: adjusts Earn stack screen transition
options and swaps a couple of caret icons; no data handling or
security-sensitive logic is touched.
> 
> **Overview**
> Updates the main `Routes.EARN.ROOT` stack registration to explicitly
use a *slide-from-right* transition (`cardStyleInterpolator`) with
`headerShown: false` and animations enabled, aligning it with other
page-style stack screens.
> 
> Adjusts confirmation row affordances by changing the caret icon from
`ArrowRight` to `ArrowDown` in the collapsed Account/Network info row
and the Advanced Details row to better indicate bottom-sheet expansion.
Snapshot expectations for `MainNavigator` are updated accordingly.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
a6fcdfd. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…t and redesign it (#25581)

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

## **Description**

The empty-state UI for the Perps balance section (icon, title,
description, buttons) was inlined inside `PerpsMarketBalanceActions`.
This PR extracts it into a dedicated `PerpsEmptyBalance` component and
simplifies the empty state to show only:
- **$0.00** with Amount Display Lg styling (40px, font-weight 500,
line-height 50px) and a stylesheet for `fontWeight: '500'`.
- **Add funds** button (design-system Secondary) in a horizontal layout
with the balance.


## **Changelog**



CHANGELOG entry: Added new design of the perps empty state


## **Related issues**

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

## **Manual testing steps**

```gherkin
Feature: Perps empty balance

  Scenario: user sees empty balance state on Perps home
    Given the user has a Perps account with zero balance

    When the user opens the Perps home screen

    Then the balance area shows "$0.00" with large display styling
    And an "Add funds" button is shown on the right
    And tapping "Add funds" opens the add funds flow
```

## **Screenshots/Recordings**

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

### **Before**

<!-- [screenshots/recordings] -->
<img width="1206" height="2622"
alt="simulator_screenshot_7F84C4ED-5E78-466E-82F4-E3BEC34D4A03"
src="https://github.com/user-attachments/assets/10a31aca-c41e-4213-adbb-ed6fcf457646"
/>

### **After**

<!-- [screenshots/recordings] -->
<img width="1206" height="2622" alt="Simulator Screenshot - iPhone 17
Pro - 2026-02-03 at 16 18 17"
src="https://github.com/user-attachments/assets/89de4b0f-cee2-4ad3-b208-0cd5b23518f9"
/>


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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk UI refactor that changes the Perps empty-balance presentation
and associated test expectations; main risk is visual/layout regressions
or stale testIDs around the removed empty-state content.
> 
> **Overview**
> Refactors the Perps balance empty state by extracting it into a new
`PerpsEmptyBalance` component and simplifying the UI to a horizontal row
showing **`$0.00`** and a **Secondary** “Add funds” button.
> 
> Updates `PerpsMarketBalanceActions` to render this new component when
balance is zero (removing the previous icon/title/description and “Learn
more” button), and adjusts unit tests/mocks to assert the new
empty-state elements and testIDs.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9da1497. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
…e cp-7.64.0 (#25601)

## **Description**

Set confirmation header by navigation source

## **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 Perps confirmation screen so the header is hidden
when opening from the one-click order flow and shows a minimal header
when opening from other flows.

## **Related issues**

Fixes: #25469

## **Manual testing steps**

```gherkin
Feature: Perps confirmation screen header

  Scenario: user opens confirmation via one-click order (navigateToOrder)
    Given user is on a Perps market and taps place order (one-click flow)

    When deposit is confirmed and confirmation screen opens

    Then the confirmation screen has no header (header: () => null)

  Scenario: user opens confirmation from another flow
    Given user reaches RedesignedConfirmations from a path other than navigateToOrder

    When the confirmation screen is shown

    Then the screen shows a minimal header (header visible, no left button, empty title)
```

## **Screenshots/Recordings**

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

### **Before**
<img width="1206" height="2622" alt="Simulator Screenshot - iPhone 17
Pro - 2026-02-03 at 19 47 49"
src="https://github.com/user-attachments/assets/8ff43507-5222-426c-a86a-a30a6403baa6"
/>

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

### **After**
<img width="1206" height="2622" alt="Simulator Screenshot - iPhone 17
Pro - 2026-02-03 at 19 46 49"
src="https://github.com/user-attachments/assets/d374525a-5732-4049-9c73-da03bd5f29d6"
/>

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk UI/navigation behavior change scoped to Perps confirmations;
main risk is unintended header/safe-area state if route params are
missing or mis-set.
> 
> **Overview**
> Updates Perps navigation so `RedesignedConfirmations` can render *with
or without* a Perps header based on a new `showPerpsHeader` route param.
> 
> The one-click deposit-and-trade flow (`navigateToOrder`) now
explicitly navigates to confirmations with `showPerpsHeader: false`,
while other entry points default to showing a minimal header;
`Confirm`’s `disableSafeArea` is also tied to this flag. Adds
`CONFIRMATION_HEADER_CONFIG`, updates Perps stack screen options
accordingly, and adjusts the related hook test and navigation types.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
71b114b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> **Low Risk**
> Low risk: changes are limited to localization JSON strings, with no
runtime logic modifications. Main risk is UI regressions from
missing/incorrect keys or untranslated text in these locales.
> 
> **Overview**
> Updates `de`, `el`, and `es` locale files with **new and revised UI
copy** across several features.
> 
> Adds translation keys for **MetaMask Card onboarding/order flow**
(password prompt, choose card/metal card order, recurring fee + DaimoPay
errors, KYC pending, spending-limit management) and expands **Perps**
strings (payment-token selection + swap-to-USDC messaging, deposit
status copy, one-click trade failure).
> 
> Also updates **swap slippage modal** labels/warnings, **rewards**
(referral errors, snapshots tab/section, filtering, new event types),
plus assorted UX copy fixes (alert modal buttons, autocomplete
categories, markets tabs, Dapp browser tab labels, phishing warning,
websocket reconnect message).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
a7d1caa. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: metamaskbot <metamaskbot@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**
Following #24313 we're
looking to centralize all tools and test resources in one place.
This PR moves spec files for `Performance`, and `Perps` specs to
`/tests`.

Previous related PRs:
- #24988
- #24313
- #25031
- #25095
- #25167
- #25198
- #25219
- #25263
- #25279
- #25520
- #25533


<!--
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/MMQA-1235

## **Manual testing steps**
N/A

## **Screenshots/Recordings**

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

### **Before**
N/A
<!-- [screenshots/recordings] -->

### **After**
N/A
<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

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

## **Pre-merge reviewer checklist**

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk refactor focused on test/CI path updates; main risk is broken
imports or missing artifacts causing E2E/performance CI runs to fail.
> 
> **Overview**
> Centralizes Perps regression/smoke specs and smoke performance specs
under `tests/`, updating imports to reference the `tests/framework`
utilities and shared `e2e/pages` objects.
> 
> Updates performance reporting to write JSON outputs under
`tests/smoke/performance/reports` and adjusts Bitrise + `.gitignore` to
collect/ignore performance result artifacts from the new location
(instead of `e2e/specs/performance/reports`).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9d0216b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…25633)

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

Do not render keyboard when quote reloads after slippage change

<!--
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: do not render keyboard when quote reloads after
slippage change

## **Related issues**

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

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


https://github.com/user-attachments/assets/f37ca261-31ca-4c7d-9a18-8e68acb2f113


<!-- [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.
@pull pull Bot locked and limited conversation to collaborators Feb 4, 2026
@pull pull Bot added the ⤵️ pull label Feb 4, 2026
@pull pull Bot merged commit b7bd188 into Reality2byte:main Feb 4, 2026
1 of 11 checks passed
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.

5 participants