Skip to content

[pull] main from MetaMask:main#377

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

[pull] main from MetaMask:main#377
pull[bot] merged 11 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Dec 3, 2025

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

Julink-eth and others added 11 commits December 3, 2025 13:21
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR is to add the network image for X Layer network and for its
native token icon OKB.

## **Changelog**

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

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

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

CHANGELOG entry: Added the network and token icons for X Layer

## **Related issues**

Fixes:

## **Manual testing steps**

1. Open extension
2. Go to https://chainid.network/chain/196/
3. Add the X Layer network
4. After accepting, It should add the network to your MetaMask
5. The network icon should show correctly

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

<!-- [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]
> Adds X Layer chain ID (0xc4) and maps both the network and OKB token
to new X Layer icons.
> 
> - **Assets**:
> - Import `X_LAYER` icon and map `OKB` to `x-layer-native.png` in
`app/images/image-icons.js`.
> - **Networks**:
> - Add `X_LAYER` (`0xc4`) to `NETWORK_CHAIN_ID` in
`app/util/networks/customNetworks.tsx`.
> - Map `NETWORK_CHAIN_ID.X_LAYER` to `x-layer.png` in
`CustomNetworkImgMapping`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
2de5449. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR fixes an issue where Network that have 0 balance are shown after
testnets in the send modal.
Example below in the screeshots with Injective network. 

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

## **Changelog**

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

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

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

CHANGELOG entry: Fixed a bug where mainnet where showing after testnets
in the send modal screen

## **Related issues**

Fixes: MetaMask/MetaMask-planning#6384

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

<img width="391" height="804" alt="Screenshot 2025-12-01 at 16 51 43"
src="https://github.com/user-attachments/assets/496d9851-cfef-419a-a4ba-3c4dcbab460f"
/>

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

### **After**

<img width="391" height="804" alt="Screenshot 2025-12-01 at 16 47 45"
src="https://github.com/user-attachments/assets/df25256b-11a0-460d-8e12-b7f3c7858dc9"
/>


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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Networks in the send modal now list mainnets first, then testnets,
each group sorted by total fiat value; adds tests covering EVM, Bitcoin,
Solana, and zero-balance cases.
> 
> - **Send flow**:
> - **Sorting logic**: Group networks by mainnet/testnet using
`parseCaipChainId`, `isTestNet`, `BtcScope`, and `SolScope`; compute
per-network fiat totals and sort descending; return mainnets first, then
testnets.
> - **Tests**:
> - Add comprehensive cases validating group-first sorting, zero-balance
handling, and CAIP networks (Bitcoin mainnet/testnet, Solana devnet).
>   - Update token fixtures with required fields.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
13824d6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Truncate long titles and options in Predict claim confirmations, when
claiming a single position.

## **Changelog**

CHANGELOG entry: Truncate long titles in Predict claim confirmations

## **Related issues**

Fixes: #23212 

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

<img width="300" alt="Truncate"
src="https://github.com/user-attachments/assets/1dc869f0-4c79-407f-9471-41c183e3e4ea"
/>

## **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]
> Truncates long title/outcome text in the single-win Predict claim
footer and adds a flex text container to enable proper ellipsis.
> 
> - **Predict Claim Footer (`predict-claim-footer.tsx`)**
> - Single-win layout: apply `numberOfLines={1}` to `Text` for
`position.title` and amount/outcome line to truncate overflow.
> - Use `styles.textContainer` on the text column to constrain width
next to the avatar.
>   - Initialize `useStyles` in `SingleWin` to access styles.
> - **Styles (`predict-claim-footer.styles.ts`)**
> - Add `textContainer` style with `flex: 1` to allow text truncation
within the row.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
26dbf37. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
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 patch updates the network-enablement-controller configuration to
include MegaETH.

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

## **Changelog**

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

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

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

CHANGELOG entry: Fixed MegaETH selection when all popular network
selected

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

<img width="391" height="804" alt="Screenshot 2025-12-02 at 10 46 19"
src="https://github.com/user-attachments/assets/f9339e45-0ed3-4dd9-ad0a-c0a9774c66ad"
/>


### **After**

<!-- [screenshots/recordings] -->
<img width="391" height="804" alt="Screenshot 2025-12-02 at 10 43 08"
src="https://github.com/user-attachments/assets/2131a9ca-5b5f-43e4-8a83-270dd75e2a87"
/>

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds MegaETH to `POPULAR_NETWORKS` and enables Arbitrum, BSC,
Optimism, Polygon, and Sei by default in `NetworkEnablementController`.
> 
> - **Network enablement**:
> - Expand default-enabled EVM networks in
`dist/NetworkEnablementController.cjs`: `ArbitrumOne`, `BscMainnet`,
`OptimismMainnet`, `PolygonMainnet`, `SeiMainnet`.
> - **Constants**:
> - Add MegaETH (`0x10e6`) to `POPULAR_NETWORKS` in
`dist/constants.cjs`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6198105. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…23477)

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

Fixed a bug in the withdrawal progress component where decimal amounts
were being truncated due to `Math.floor()` being applied in the
`convertPerpsAmountToUSD` utility function.


## **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 withdrawal progress component to display decimal
amounts correctly (e.g., $1.30 instead of $1)

## **Related issues**

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

## **Manual testing steps**

```gherkin
Feature: Perps withdrawal progress display

  Scenario: user withdraws amount with decimals
    Given user has available balance in Perps account
      And user navigates to Perps home screen

    When user taps withdraw button
      And user enters withdrawal amount of $2.30
      And user confirms the withdrawal

    Then withdrawal progress component displays "$1.30" (net amount after $1 fee)
      And the amount shows with correct decimal precision
```

## **Screenshots/Recordings**

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

### **Before**

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

![IMG_2761C263467E-1](https://github.com/user-attachments/assets/0426ebff-9f02-4378-8163-be98bda2c759)


### **After**
<img width="1170" height="2532" alt="Simulator Screenshot - iPhone 16e -
2025-12-01 at 12 51 10"
src="https://github.com/user-attachments/assets/c2a8f844-dabb-4ba3-a782-412b799d289c"
/>

<!-- [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]
> Preserves decimals in `convertPerpsAmountToUSD` (removes flooring),
updates tests to reflect precise formatting including small-amount
threshold.
> 
> - **Perps Utils**:
> - Update `convertPerpsAmountToUSD` to preserve decimals for `"$..."`,
numeric strings, and hex wei conversions (remove `Math.floor`).
>   - Very small decimals now format using threshold (e.g., `<$0.01`).
> - **Tests**:
>   - Revise expectations to keep decimals and thousand separators.
>   - Add coverage for specific case ensuring `$1.30` remains `$1.30`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
497b111. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
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?
-->
- Small update to prompt to prevent tool from trying to find tags file
- Bumped iterations to cater for complex PRs
- Fixed some found issues with grep_codebase tool which was only looking
in app folder
- Use new opus model 

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Upgrades Claude model and SDK, raises iteration cap, broadens grep
search (excluding node_modules), and clarifies the tag selection prompt.
> 
> - **E2E AI Analyzer**:
> - **Config (`e2e/tools/e2e-ai-analyzer/config.ts`)**: Update
`CLAUDE_CONFIG.model` to `claude-opus-4-5-20251101`; increase
`maxIterations` to `20`.
> - **Grep Tool (`ai-tools/handlers/grep-codebase.ts`)**: Expand search
to `app/`, `e2e/`, `.github/`, `scripts/`; add
`--exclude-dir=node_modules` and suppress stderr (`2>/dev/null`).
> - **Select Tags Prompt (`modes/select-tags/prompt.ts`)**: Tighten
guidance so only provided tags are considered; discourage searching tag
files.
> - **Dependencies**:
>   - Bump `@anthropic-ai/sdk` dev dependency to `^0.71.0`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8dcac4c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
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**

Fixes:
[#6078](MetaMask/MetaMask-planning#6078)

This PR cleanups the alert UI to match the new design that is
implemented in extension!

- [x] Make the entire key clickable
- [x] Remove the 'Alert' text for ALL alert levels - info, warn and
block
- [x] For the warning state, change the icon from alert to info
- [x] Remove right arrow icon from alert
- [x] Remove the background color behind the alert


<!--
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: refactor the alert row UI to new simplified design



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

<img width="568" height="1084" alt="Screenshot 2025-11-26 at 4 52 17 PM"
src="https://github.com/user-attachments/assets/51fa92b3-006e-40d4-8c6a-ebb7f8b72d6b"
/>
<img width="568" height="1084" alt="Screenshot 2025-12-01 at 10 49
00 AM"
src="https://github.com/user-attachments/assets/f8ccbcc5-61f5-4f77-b1fa-53f13bc1aabc"
/>


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



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Simplifies confirmation alerts to an icon-only inline alert, makes
alert labels clickable to open the modal, and updates tests accordingly.
> 
> - **Confirmations UI**:
> - **Inline Alert**: Replaces labeled/arrowed alert with icon-only
`InlineAlert`; removes background, label text, and right arrow. Uses
`Info` icon for all severities except `Danger`.
> - **Alert Row**: Adds label click handling to open alert modal
(`setAlertKey`, `showAlertModal`) and track metrics; passes
`onLabelClick` to `InfoRow`; keeps inline alert hidden for `Small`
variant; adjusts tooltip/icon colors per severity.
>   - **Info Row**: Adds `onLabelClick` prop to label `Text`.
> - **Styles**: Simplifies inline alert styles to `iconContainer` only.
> - **Tests**:
> - Update expectations to check for `inline-alert-icon` instead of
"Alert" text; warning severity now expects `Info` icon.
>   - Add label-click interaction tests and disabled/no-alert guards.
> - Add metrics hook mocks across affected tests
(`useConfirmationAlertMetrics`).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ef347d8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…23541)

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

## **Description**

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

This PR updates the network names in the Swap source and destination
network pickers.

## **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: Updated Swap network names

## **Related issues**

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

## **Manual testing steps**

```gherkin
Feature: Updated Swap network names

  Scenario: user wants to swap
    Given user is in Swaps

    When user opens the source or destination network pickers
    Then they see the new network names
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

<!-- [screenshots/recordings] -->
<img width="568" height="1084" alt="Screenshot 2025-12-02 at 11 06
48 PM"
src="https://github.com/user-attachments/assets/638add47-2540-4e02-a7f0-d25d2e1732cc"
/>
<img width="568" height="1084" alt="Screenshot 2025-12-02 at 11 06
52 PM"
src="https://github.com/user-attachments/assets/4cbe5b3e-fe2d-4700-b3a7-e22722426137"
/>
<img width="568" height="1084" alt="Screenshot 2025-12-02 at 11 06
58 PM"
src="https://github.com/user-attachments/assets/08e0a849-4f8d-4d5e-bffb-06e99156d9fe"
/>
<img width="568" height="1084" alt="Screenshot 2025-12-02 at 11 07
02 PM"
src="https://github.com/user-attachments/assets/02f3024e-f03a-4734-9a48-0f133e155736"
/>



## **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]
> Standardizes displayed network names across bridge source/dest
selectors and token selectors using a new
`NETWORK_TO_SHORT_NETWORK_NAME_MAP`, and updates tests accordingly.
> 
> - **Bridge UI**:
> - Use `NETWORK_TO_SHORT_NETWORK_NAME_MAP` for display names in
`BridgeDestNetworkSelector`, `BridgeDestNetworksBar`,
`BridgeSourceNetworkSelector`, and `BridgeSourceTokenSelector`.
> - Prefer short names (e.g., `Ethereum`, `BNB`, `zkSync`) over longer
variants.
>   - Remove ad-hoc `ShortChainNames` in `BridgeDestNetworksBar`.
> - **Token Selector**:
> - `getNetworkName` now prioritizes `NETWORK_TO_SHORT_NETWORK_NAME_MAP`
before configs/popular list in `BridgeDestTokenSelector`.
> - **Tests/Snapshots**:
> - Update expectations to short names (e.g., `Ethereum`, `BNB`,
`zkSync`).
>   - Adjust event payload assertions to new `chain_name` values.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
82923bf. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Fixed a bug where the KYC processing screen was redirecting to the main
app home page instead of showing the success screen when KYC status was
updated to approved.

**Root causes:**
1. Multiple calls to `routeAfterAuthentication` when ID proof status
became `SUBMITTED`, causing navigation conflicts
2. Navigation errors when `popToBuildQuote` tried to pop to a route that
wasn't in the navigation stack

**Solution:**
1. Added a `useRef` guard in `KycWebviewModal` to ensure
`routeAfterAuthentication` is only called once
2. Updated `popToBuildQuote` to return the current state (no-op) when
`BuildQuote` is not found, preventing navigation errors

## **Changelog**

CHANGELOG entry: Fixed a bug where the KYC processing screen would
redirect to the home page instead of showing the success screen after
KYC approval

## **Related issues**

Fixes: #23576

## **Manual testing steps**

Feature: KYC processing flow

  Scenario: user completes KYC verification
Given the user is on the KYC webview modal completing ID verification
    When the ID proof status becomes SUBMITTED
    Then the user should be navigated to the KYC processing screen
And when KYC status becomes APPROVED, the success screen should be
displayed
And the user should not be redirected to the home page##
**Screenshots/Recordings**

### **Before**

Redirected back to build quote after document submission

https://github.com/user-attachments/assets/7ca6a4c1-6199-42c9-ba72-c8aaffbc8edb




<!-- The screen would flash between loading and success states, then
redirect to home page -->

### **After**

Redirected to success page, and then to credit card page


https://github.com/user-attachments/assets/60c02a7a-342e-45ae-9611-ce2c3c5d18cf



Redirected to failure page and then back to KYC to retry

https://github.com/user-attachments/assets/45441a5b-c4a7-4c7b-9f0a-5556eadeeadc





<!-- The success screen displays correctly and remains visible -->

## **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
- [ ] 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]
> Adds a guard to avoid multiple KYC navigation triggers and makes
pop-to-BuildQuote a no-op if the route is absent.
> 
> - **KYC Webview Modal (`KycWebviewModal.tsx`)**:
> - Add `useRef` guard (`hasNavigatedRef`) to ensure
`routeAfterAuthentication(quote)` runs only once when `idProofStatus ===
'SUBMITTED'`.
> - **Navigation (`useDepositRouting.ts`)**:
> - Update `popToBuildQuote` to return current state (no-op) when
`BuildQuote` route is not in the stack.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e0f1590. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…messenger (#23616)

<!--
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?
-->
The `ProfileMetricsController` messenger requires
`AccountsController:accountRemoved` event to be delegated from the root
messenger, which was missing.

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

Follow-up to #23247

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

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds delegation of the `AccountsController:accountRemoved` event to
the `ProfileMetricsController` messenger.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0b99e5f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
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 standardises the metrics for hardware wallets to align with the
extension.

The schemas follow the following 
-
https://www.figma.com/design/9sGBc6mZkQVBKitQzsD0iI/Hardware-Wallet-Metrics?node-id=0-1&p=f&t=Q6IqeowrBX3vu5rF-0

<!--
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/MUL-1241?atlOrigin=eyJpIjoiZTNiNWQzNDEzZGMwNDc0OGFlMTc4YTJmYWJmMzQ5NTMiLCJwIjoiaiJ9

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

N/a no user facing changes.

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


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Unifies hardware wallet analytics with new events and properties
across QR and Ledger flows, adds device info/count tracking and
permission/error metrics, plus comprehensive tests and utilities.
> 
> - **Analytics (Hardware Wallets)**:
> - Replace legacy `LEDGER_*`/QR events with unified `HARDWARE_WALLET_*`
events (e.g., `CONNECT_HARDWARE_WALLET`, `HARDWARE_WALLET_ADD_ACCOUNT`,
`HARDWARE_WALLET_ERROR`, `HARDWARE_WALLET_ACCOUNT_SELECTOR_OPEN`,
`HARDWARE_WALLET_CONNECTION_RETRY`, `HARDWARE_WALLET_MARKETING`,
`HARDWARE_WALLET_CONNECT_INSTRUCTIONS`).
> - Add common properties: `device_type`, `device_model` (incl. BLE UUID
mapping), `connected_device_count`, `hd_path`, and detailed error
strings.
> - Track permission requests/results
(`HARDWARE_WALLET_PERMISSION_REQUEST`) and camera/QR scanning errors.
> - Update cancel events to `DAPP_TRANSACTION_CANCELLED` where
applicable.
> - **Flows Updated**:
> - QR: `AnimatedQRScanner`, `ConnectQRHardware` (continue, account
selector, add account, forget device, error),
`ConnectQRHardware/Instruction` (marketing links).
> - Ledger: `LedgerConnect` (instructions, found device, continue/retry,
marketing), `LedgerConnect/Scan` (permission/BT errors with model),
`LedgerConfirmationModal` (errors/cancel), `LedgerSelectAccount`
(account selector open/add/forget/error).
> - Account screens: `AccountConnect` and `AccountPermissions` track HW
connect with device count; `AccountActions` forget-device metrics per
keyring.
>   - Multichain actions: use `ADD_HARDWARE_WALLET` for HW button.
> - **Utilities & Hooks**:
>   - New `getConnectedDevicesCount` (counts connected HW keyrings).
> - New `useLedgerDeviceForAccount` hook for per-account Ledger device
context.
> - New device utilities: `sanitizeDeviceName`,
`ledgerDeviceUUIDToModelName`.
> - **Testing & Mocks**:
> - Extensive test coverage added/updated for all flows; enhanced
`react-native-vision-camera` mock to capture callbacks.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9c9bf99. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@pull pull Bot locked and limited conversation to collaborators Dec 3, 2025
@pull pull Bot added the ⤵️ pull label Dec 3, 2025
@pull pull Bot merged commit 9402870 into Reality2byte:main Dec 3, 2025
1 of 35 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.

10 participants