Skip to content

[pull] main from MetaMask:main#391

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

[pull] main from MetaMask:main#391
pull[bot] merged 9 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Dec 8, 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 : )

OGPoyraz and others added 9 commits December 5, 2025 12:34
<!--
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 aims to update `RemoteFeatureFlagController` version to latest.
As `clientVersion` is introduced as new breaking change, PR also
includes base version of the app while initialising the controller.

As this is not a user facing feature - no changelog needed.

Related core PR: MetaMask/core#7277
Equivalent extension PR:
MetaMask/metamask-extension#38584

## **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: Mobile part of MetaMask/core#7285

## **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
- [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]
> Upgrades `@metamask/remote-feature-flag-controller` to v3 and passes
base app SemVer as `clientVersion` via a new version utility, with
accompanying tests and deps.
>
> - **Engine — `remote-feature-flag` init**:
> - Pass `clientVersion` using `getBaseSemVerVersion()` in
`app/core/Engine/controllers/remote-feature-flag-controller-init.ts`.
> - **Utilities**:
> - Add `app/util/version.ts` with `getBaseSemVerVersion` to extract
base `major.minor.patch` using `semver`.
> - **Tests**:
> - Update `remote-feature-flag-controller-init.test.ts` to expect
`clientVersion`.
> - Add `app/util/version.test.ts` covering base, prerelease/build
stripping, and null parse cases.
> - **Dependencies**:
>   - Bump `@metamask/remote-feature-flag-controller` to `^3.0.0`.
>   - Add `semver` and `@types/semver`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
37c224c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…brid markets (#23733)

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

- Ensure the claim button is visible on the market details screen in
hybrid (wherein a market has both active and resolved outcomes)

<!--
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:
[PRED-321](https://consensyssoftware.atlassian.net/browse/PRED-321)

## **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="420" alt="image"
src="https://github.com/user-attachments/assets/7f19c656-fb05-4d6a-abea-6703b310ece2"
/>


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


[PRED-321]:
https://consensyssoftware.atlassian.net/browse/PRED-321?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
## **Description**

Remove sei from ways to earn networks

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #23634

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Removes Sei from the supported networks list and updates tests/mocks
accordingly.
> 
> - **Rewards UI**
> - Excludes `NETWORKS_CHAIN_ID.SEI` from `SWAP_SUPPORTED_CHAIN_IDS` in
`SwapSupportedNetworksSection.tsx`.
> - **Tests**
> - Removes Sei from `PopularList` and non-EVM mock networks in
`SwapSupportedNetworksSection.test.tsx`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9956a77. 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?
-->
Remove feature flag URLs from the allowlist to ensure that original
requests are not made. This is mainly due to predict feature banner
causing tests to fail on CI. This change will ensure all our mocks are
always matched

<img width="1179" height="2556" alt="testFnFailure"
src="https://github.com/user-attachments/assets/001098ee-db83-48e1-83f4-5db0cc08a757"
/>

## **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]
> Removes client-config feature flag URLs from the e2e allowlist and
adds `predictEnabled` to default and mock remote feature flags.
> 
> - **E2E allowlist**:
> - Remove `client-config` feature flag URLs from
`e2e/api-mocking/mock-e2e-allowlist.ts`.
> - **Feature flags mocks**:
> - Add `predictEnabled: false` to default flags in
`e2e/api-mocking/helpers/remoteFeatureFlagsHelper.ts`.
> - Include `predictEnabled` in `remoteFeatureFlagPredictEnabled`
response in `e2e/api-mocking/mock-responses/feature-flags-mocks.ts`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d0ba6ab. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
)

## **Description**

- Resolves flicker / jitter on the Predict transaction history list. For
reference I was reproduce and resolved on multiple devices (only
consideration is it was with about ~90 entries in the history).
- Keeps previously fetched transactions rendered during refreshes and
relaxed the `SectionList` virtualization so long histories don’t recycle
cells aggressively. Added pull-to-refresh wiring and updated tests to
lock in the smoother scrolling behavior. Also adds pull down to refresh

<!--
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:
[PRED-340](https://consensyssoftware.atlassian.net/browse/PRED-340)

## **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/18e7f642-9d73-41c0-bcc1-8f3a250dec5d



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

### **After**



https://github.com/user-attachments/assets/68d12ae0-9b67-4385-abc9-daf27c2d20a1



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


[PRED-340]:
https://consensyssoftware.atlassian.net/browse/PRED-340?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Eliminates activity list flicker by keeping items rendered during
refresh, wiring pull-to-refresh, and tuning SectionList virtualization;
updates hook and tests accordingly.
> 
> - **PredictTransactionsView**:
> - Keep list visible during loads (`shouldShowLoadingState` only when
empty) and show spinner only when no sections.
> - Add pull-to-refresh (`refreshing`, `onRefresh` -> `loadActivity({
isRefresh: true })`).
> - Tune `SectionList` perf params (`maxToRenderPerBatch`,
`initialNumToRender`, `windowSize`).
> - **Hook `usePredictActivity`**:
> - Add `isRefreshing`, `loadActivity({ isRefresh })`, and error state;
avoid clearing `activity` on non-refresh loads; add optional
`loadOnMount`/`refreshOnFocus`.
> - **Tests**:
> - Expand to cover background refresh (items persist, no spinner),
pull-to-refresh handler, and data transforms; add utility to mock hook
values.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9907f7d. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…verage (#23619)

## **Description**

This PR fixes an issue where the `PerpsOrderProvider` would not properly
initialize leverage when modifying an existing position. Previously, if
`initialLeverage` was not explicitly provided via navigation params, the
form would not fall back to the existing position's leverage value,
which could lead to incorrect leverage initialization when modifying
positions.


## **Changelog**

CHANGELOG entry: Fixed leverage initialization when modifying existing
perpetual positions

## **Related issues**

Fixes:

Jira Task: https://consensyssoftware.atlassian.net/browse/TAT-2201

## **Manual testing steps**

```gherkin
Feature: Perps order form leverage initialization

  Scenario: user modifies existing position with leverage
    Given user has an existing perpetual position with 5x leverage
    And user navigates to modify the position
    Then the order form should display 5x leverage as the initial value even when the internet connection is lost
```

## **Screenshots/Recordings**

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

### **Before**

No visible change

### **After**

No visible change

## **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]
> Fallback to `existingPosition.leverage.value` when `initialLeverage`
is undefined in `PerpsOrderProvider` initialization.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
49f8fee. 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 8, 2025
@pull pull Bot added the ⤵️ pull label Dec 8, 2025
@pull pull Bot merged commit 8166eae into Reality2byte:main Dec 8, 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.

5 participants