Skip to content

[pull] main from MetaMask:main#378

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

[pull] main from MetaMask:main#378
pull[bot] merged 8 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 : )

matallui and others added 8 commits December 3, 2025 17:37
<!--
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?
-->

Set up CODEOWNERS file for Predict team.

## **Changelog**

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

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

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

CHANGELOG entry: null

## **Related issues**

Fixes:

## **Manual testing steps**

```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 CODEOWNERS entries assigning the Predict team to predict-related
components, controllers, messengers, deeplink handler, and glob
patterns.
> 
> - **CODEOWNERS**:
>   - Add Predict team ownership for:
>     - `app/components/UI/Predict/`
>     - `app/core/Engine/controllers/predict-controller`
>     - `app/core/Engine/messengers/predict-controller-messenger`
>     - `app/core/DeeplinkManager/handlers/legacy/handlePredictUrl.ts`
>     - `**/Predict/**`, `**/predict/**`
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
bc5491e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…23349)

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

Implementation of Deferred Deep Linking:
Deferred deep linking is a technique that allows users to be directed to
specific content within an app, even if the app is

The first version of deep linking in Mobile doesn't support deferred
deep linking. This means that if mobile users who don't have the
MetaMask Mobile app installed click a deep link, they are redirected to
the iOS/Android store to download and install the app. However, after
installation, they are not redirected to the specific page the deep link
was intended for.

Deferred deep linking will enable this seamless redirection to the
intended screen after installation.

<!--
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]
```


Important note for testing on Android in Dev

If testing deep link on Android via Expo, when the link opens Expo to
open the app, the deep link passed to the app itself will be changed by
Expo into something seen bellow

![IMG_0168](https://github.com/user-attachments/assets/73dc66ff-2fbf-41d7-97c3-24b92598616f)
instead of https://link.metamask.io/perps, which makes the
deeplinking/deferral system work but it never gets the right link to
process, resulting in the "This page doesn't exist"

![IMG_0167](https://github.com/user-attachments/assets/fa832a9a-f46d-4a25-86d5-626cef75bc33)

## **Screenshots/Recordings**

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

**iOS**



https://github.com/user-attachments/assets/d7692309-09e5-4e50-80fe-a39aca9e926d



https://github.com/user-attachments/assets/0f440e22-511b-4ccf-92e9-277ff72339a8




**Android**



https://github.com/user-attachments/assets/32c092b9-5136-40a2-9bc1-0db726383d42



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




<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Enables Branch pasteboard check on iOS app launch and refactors
onboarding completion hook tests with clearer setup/teardown and
assertions.
> 
> - **iOS**:
> - Enable deferred deep linking support by calling
`RNBranch.branch.checkPasteboardOnInstall` in
`ios/MetaMask/AppDelegate.m` before `initSessionWithLaunchOptions`.
> - **Tests**:
>   - Refactor `useCompletedOnboardingEffect` tests:
> - Add `beforeEach`/`afterEach` to manage Jest mocks; remove inline
`jest.clearAllMocks` in `arrangeMocks`.
> - Rename tests for clarity and keep assertions verifying when
`setCompletedOnboarding(true)` is called or skipped.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
017e90e. 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>
…account (#23497)

## **Description**

Currently when a perps withdrawal/deposit is initiated, it is visible
across multiple MetaMask accounts. This is wrong, and we should only
show the pending withdraw for the selectedEvmAccount of the MetaMask
perps account that initiated the withdrawal.

This PR introduces the accountId of the initiator to enable filtering of
the currently selected account, to show the pending withdraw for the
correct account.

## **Changelog**

CHANGELOG entry: Fix to account specific pending perps withdraws

## **Related issues**

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

## **Manual testing steps**

```gherkin
Feature: Per-Account Pending Withdrawal Tracking

  Scenario: user initiates withdrawal and sees pending progress
    Given user is on Perps home screen with Account A selected
    And Account A has a balance of 100 USDC

    When user initiates a withdrawal of 50 USDC
    Then user sees pending withdrawal progress indicator for Account A
    And progress indicator shows withdrawal amount of 49 USDC (after $1 fee)

  Scenario: user switches accounts and does not see previous account's pending withdrawal
    Given user has initiated a withdrawal from Account A
    And Account A shows pending withdrawal progress indicator

    When user switches to Account B in the account picker
    Then user does not see any pending withdrawal progress indicator
    And Account B shows its own balance state without Account A's withdrawal

  Scenario: user switches back to account with pending withdrawal and sees progress resume
    Given user has initiated a withdrawal from Account A
    And user has switched to Account B
    And Account B does not show any withdrawal progress
```

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/0beb0f45-0b5d-4979-8d1c-346dc550e79b

## **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]
> Scopes perps deposit/withdraw tracking to the currently selected EVM
account and migrates persisted requests to include account attribution.
> 
> - **Perps UI/Hooks**:
> - Filter `withdrawalRequests` and `depositRequests` by selected EVM
account via `selectSelectedInternalAccountByScope('eip155:1')` in
`PerpsMarketBalanceActions`, `useWithdrawalRequests`, and
`useDepositRequests`.
> - Add detailed logging and guard for no selected address; only show
relevant in-progress states and amounts.
> - **Controller**:
> - Extend `PerpsController` state: add `accountAddress` to
`withdrawalRequests`/`depositRequests`; initialize arrays; default
`withdrawalProgress` shape.
>   - Add migration to drop legacy requests missing `accountAddress`.
> - `depositWithConfirmation`: include initiating `accountAddress` in
new `depositRequests`.
> - **Services**:
> - `AccountService.withdraw`: capture selected `accountAddress`,
include in new `withdrawalRequests`, and log context.
> - **Tests/Fixtures**:
> - Update tests to assert account-scoped filtering and behaviors; add
account addresses to mocks; use `renderHookWithProvider`.
> - Update snapshots and `initial-background-state.json` to new array
shapes and `withdrawalProgress` defaults.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
49b5d79. 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**
1. What is the reason for the change?
We want to deposit in Earn lending in 1 click

2. What is the improvement/solution?
We can now deposit into Earn lending in 1 click using the redesigned
confirmations

<!--
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: Adds 1-click approval/deposit transaction confirmation
flow for Earn lending

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MUSD-93

## **Manual testing steps**

```gherkin
Feature: stablecoin lending 1-click flow

  Scenario: user is on token home page
    Given user clicks on a lending cta

    When user goes to the lending deposit input
    Then clicks on the action for deposit, there will be a 1-click confirmation instead of 2 clicks
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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


https://github.com/user-attachments/assets/80ba6e8a-811f-4a0d-9875-e7d3b74eaad5

## **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]
> Enables 1‑click Earn lending by batching ERC‑20 approval + deposit
with redesigned confirmations, adds batch-aware gas/confirmation
behavior, removes legacy flag gating, and updates tests/i18n.
> 
> - **Earn (Input/Flow)**:
> - Implement 1‑click stablecoin lending: create transaction batch with
`tokenMethodApprove` + `lendingDeposit` and navigate to
`REDESIGNED_CONFIRMATIONS` when `staking_confirmations` is enabled.
> - Use `selectDefaultEndpointByChainId` to derive `networkClientId`;
remove env-gated redesign util and legacy UI bits (e.g., estimated
rewards card).
> - Add guards/logging (missing `selectedAccount`, missing market data,
undefined `attemptDepositTransaction`).
> - **Confirmations/Approvals**:
> - Treat `ApprovalType.TransactionBatch` as non-blocking
(`waitForResult: false`) and navigate to `TransactionsView` after
confirm.
> - Add `TransactionType.lendingDeposit` to full-screen
confirmations/contract interaction sets.
> - **Gas UI (Batch-aware)**:
> - `GasFeeTokenIcon`/`SelectedGasFeeToken`: resolve `chainId` from
single transaction or batch metadata; fallback handling added.
> - `GasFeeTokenToast`: default `chainId` when undefined; add close
action.
> - `GasFeesDetailsRow`: distinct loading for batch vs single; support
fee display using batch estimates without simulation.
> - **Env/Utils/i18n**:
> - Remove `MM_STABLECOIN_LENDING_UI_ENABLED_REDESIGNED` and delete
`EarnInputView/utils.ts`.
>   - Add `earn.rewards` strings for rewards tag/tooltips.
> - **Tests/Snapshots**:
> - Extensive updates and new cases for lending batch flow,
confirmations behavior, gas components (batch metadata), and snapshots
reflecting UI changes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7c133f9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Matthew Walsh <matthew.walsh@consensys.net>
## **Description**

This PR hides trending tokens section if empty.

The UI needs to show again the tokens section if it gets data on refresh

To test this; i updated the useTrendingRequest hook:

```
const isFirstCall = currentRequestId === 1;
const resultsToStore = isFirstCall
  ? []
  : await getTrendingTokens({
      chainIds: stableChainIds,
      sortBy,
      minLiquidity,
      minVolume24hUsd,
      maxVolume24hUsd,
      minMarketCap,
      maxMarketCap,
    });
```

Result:


https://github.com/user-attachments/assets/9247e4ba-fc3e-458d-a5a7-206bdd427de4


## **Changelog**

CHANGELOG entry: Hides trending section if empty

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


https://github.com/user-attachments/assets/8010c17a-4079-4de3-a4d2-14ca887176bc


## **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]
> Hides empty Explore sections and shows an empty error state for
Trending Tokens, while defaulting trending fetch to loading with 24h
trending sort.
> 
> - **Trending View (Explore)**:
> - Hide sections with empty data via `emptySections` state; keep
components mounted to detect new data.
> - Pass `toggleSectionEmptyState` to each section (`SectionCard`,
`SectionCarrousel`) and wire through `sections.config`.
>   - Update `QuickActions` to only show visible sections.
> - **Trending Tokens Full View**:
> - Show skeletons only while `isLoading`; when no results, render
`EmptyErrorTrendingState` with retry.
>   - Disable Price Change control when no results.
> - **Hook**:
> - `useTrendingRequest`: default `sortBy` to `h24_trending`; initial
`isLoading` set to `true`.
> - **New Component**:
>   - `EmptyErrorTrendingState` with tests and localized strings.
> - **Tests & i18n**:
> - Update tests to use `useTrendingSearch` and validate new empty/error
state and controls.
>   - Add `trending.empty_error_trending_state.*` strings.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e96b2f0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…23534)

<!--
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 when users selected the swap button for an
asset presented in browser URL bar, that asset was not selected as
source when navigating to swap page.

<!--
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: fixes an issue where when users selected the swap
button for an asset presented in browser URL bar, that asset was not
selected as source when navigating to swap page.

## **Related issues**

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

## **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/2b9a5836-77da-41b7-899d-86fe73469021


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

### **After**


https://github.com/user-attachments/assets/1c1ad351-da97-49c7-a64c-47f63fd0f345


<!-- [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]
> Pass the selected token from URL Autocomplete to Swaps navigation and
update the navigation hook to accept a token override with proper chain
handling and fallbacks.
> 
> - **Swaps/Bridge Navigation**:
> - Update `useSwapBridgeNavigation` to accept an optional
`tokenOverride` in `goToNativeBridge` and `goToSwaps`.
> - Use the override (or provided `sourceToken`) to determine the
effective chain ID, format chain IDs, and select the candidate source
token.
> - Add fallback to mainnet native token when the source chain isn’t
bridge-enabled.
> - Expand tests to cover token override, mainnet fallback, home-page
filter network, Solana CAIP handling, and analytics events.
> - **URL Autocomplete**:
> - On swap button press, construct a `BridgeToken` from
`TokenSearchResult` and invoke `goToSwaps` with it.
> - Adjust tests to assert `goToSwaps` is called with the correct token,
plus additional tests for loading indicator, result de-duplication,
recents limiting, and reset on hide.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
37e7967. 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**

Ticket: https://consensyssoftware.atlassian.net/browse/INFRA-3180
Create-release-pr workflow currently uses teams.json file which was
deprecated instead of new topology.json to generate commits.csv. Causes
issues with commits.csv. Fixed in this Pr

Discussed here:
https://consensys.slack.com/archives/C09B64PEHAQ/p1764576026224679

## **Changelog**

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

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

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

CHANGELOG entry: null

## **Related issues**

Fixes:

## **Manual testing steps**

```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]
> Update workflow to use MetaMask/github-tools create-release-pr action
v1.1.2 instead of v1.1.0.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4e4e031. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ion type (#23552)

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

## **Description**
Add conditional rendering of `bridge-time-row` based on transaction
type. For mUSD conversion we want the time estimate hidden.

<!--
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: add conditional rendering of bridge-time-row by tx type

## **Related issues**

Fixes: [MUSD-128: Hide "estimated time" from quote
screen](https://consensyssoftware.atlassian.net/browse/MUSD-128)

## **Manual testing steps**

```gherkin
Feature: Bridge Time Row Visibility

  Scenario: user views confirmation for mUSD conversion transaction
    Given the user is on the confirmation screen for a mUSD conversion transaction
    When the user views the transaction details
    Then the bridge estimated time row is not displayed

  Scenario: user views loading state for mUSD conversion transaction
    Given the user is on the confirmation screen for a mUSD conversion transaction
    And the bridge quotes are loading
    When the user views the transaction details
    Then the bridge time skeleton loader is not displayed
```

## **Screenshots/Recordings**

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

### **Before**

<!-- [screenshots/recordings] -->
Time estimate is displayed


https://github.com/user-attachments/assets/f910fd34-4f1f-4ca0-b831-159d3c8fa04a

### **After**

<!-- [screenshots/recordings] -->
Time estimate is hidden


https://github.com/user-attachments/assets/3a6d593e-98e2-467f-996c-91421e39996c

## **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]
> Conditionally hides the bridge estimated time row and skeleton for
`musdConversion` transactions.
> 
> - **Confirmations UI**:
> - Add conditional rendering in `bridge-time-row.tsx` to hide time
estimate and skeleton when transaction type matches
`TransactionType.musdConversion` via `hasTransactionType` and
`HIDE_TYPES`.
> - Preserve existing behavior (show skeleton when loading, show
estimate when quotes exist) for other transaction types; keep same-chain
display as `< 10 sec`.
> - **Tests**:
> - Update `bridge-time-row.test.tsx` to support injecting transaction
`type` and add cases asserting no skeleton/estimate for
`musdConversion`.
> - Retain and verify existing duration formatting and same-chain logic.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ca077f9. 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 b377066 into Reality2byte:main Dec 3, 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.

8 participants