[pull] main from MetaMask:main#497
Merged
Merged
Conversation
## **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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )