Skip to content

[pull] main from MetaMask:main#310

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

[pull] main from MetaMask:main#310
pull[bot] merged 8 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Nov 10, 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 : )

bfullam and others added 8 commits November 10, 2025 08:14
…59.0 (#22351)

<!--
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**
**Problem**
The rewards points animation was inconsistently displaying 0 in the UI
despite estimatedPoints containing the correct value. This occurred when
transitioning from Loading to Idle state because the animation effect
only triggers when the value prop changes, not when the animation state
changes. When Loading state set animatedValue to 0 and then transitioned
to Idle with the same estimatedPoints value, the display remained stuck
at 0.

**Solution**
Added synchronization logic in handleIdleState and
handleRefreshFinishedState to ensure animatedValue is always updated to
match the current value when entering these states. This guarantees the
display correctly animates to the actual points value regardless of
whether the value prop changed during state transitions. The fix
resolves the race condition between animation state changes and value
updates.
<!--
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: #22364

## **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/e435e3ba-ec00-4ef7-b63d-61ece252876a


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

### **After**


https://github.com/user-attachments/assets/a7945403-e93a-43f9-adbc-f581ade567ff


<!-- [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]
> Synchronizes `animatedValue` on Idle and RefreshFinished state entries
to avoid the points display sticking at 0; updates callback dependencies
accordingly.
> 
> - **UI/Rewards**
(`app/components/UI/Rewards/hooks/useRewardsAnimation.ts`):
>   - **State entry sync**:
> - On `Idle` and `RefreshFinished`, ensure `animatedValue` animates to
the current `value` if mismatched, preventing a stuck 0 after `Loading`.
>   - **Animation handling**:
> - Repositions fox via `rivePosition` on state transitions; triggers
appropriate Rive animations.
>   - **Hook stability**:
> - Expands `useCallback` dependencies (e.g., `animatedValue`, `value`,
`rivePosition`) for updated handlers.
> - Adds `/* istanbul ignore next */` around Reanimated shared value
mutations.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
37f3f6c. 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?
-->

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

- [ ] 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]
> Reduces flakiness in send flow perf tests by adding Android-specific
selectors, extending timeouts, and cleaning up unused options.
> 
> - **Tests (performance)**:
> - Increase test timeout to 30 min in
`appwright/tests/performance/login/send-flows.spec.js`.
> - **Screen Objects**:
>   - `wdio/screen-objects/SendScreen.js`:
> - Platform-specific `searchTokenField` selector (iOS: catch-all;
Android: `textfieldsearch`).
> - Platform-specific first token badge selection (iOS: XPath; Android:
`badge-wrapper-badge` ID).
> - **Utils**:
>   - `appwright/utils/Flows.js`:
>     - Remove unused `skipIntro` option from `login`.
>     - Increase `dismissMultichainAccountsIntroModal` timeout to 10s.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8082395. 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**
The feature to hide tokens is available for EVM assets but not for
non-EVM assets. This task involves implementing a similar token hiding
feature for non-EVM assets. This is crucial for improving user
experience by allowing users to hide unwanted tokens, especially in
light of spam and malicious token issues. The implementation should be
prioritized to align with upcoming Solana campaigns.

Furthermore, having the possibility of hiding tokens is not great if you
cannot add tokens back. Therefore I have implemented the whole logic to
add non-VEVM tokens to your wallet and remove them from ignored tokens
list.

In order to get this done the following PRs have been merged into Core:
- Support for adding non-evm tokens
[here](MetaMask/core#7016)
- Support for ignoring non-evm tokens
[here](MetaMask/core#6981)

Furthermore this PR solves a couple of bugs:
- Flashy behavior on the import token header when opening import token
screen
- Already added tokens could be re-added which was incorrect, they have
been disabled now

<!--
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: support importing and ignoring non-evm tokens

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-1425

## **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/77de0410-53b3-43cc-a6e4-2951db6b2b32

### **After**


https://github.com/user-attachments/assets/629c34bd-e0a9-4eef-bf3c-ec03be874b1a

## **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]
> Enables importing and hiding non‑EVM tokens, updates Add Asset/search
UI to work across EVM/non‑EVM networks, and improves token removal,
explorer links, and already‑added token handling.
> 
> - **Non‑EVM token support**:
> - Add tokens via `MultichainAssetsController.addAssets` in
`SearchTokenAutocomplete`; retain EVM via `TokensController.addTokens`.
> - New `removeNonEvmToken` util to hide non‑EVM tokens; integrate in
`Tokens` and `AssetOptions`.
> - Disable re‑adding already‑added tokens (EVM via
`selectTokensByChainIdAndAddress`, non‑EVM via
`selectMultichainAssets`).
> - **Add Asset flow**:
> - Use `useTopTokens` to source token lists; show loading state; only
fetch token list for EVM.
> - Render custom Token/NFT tabs only on EVM networks; support non‑EVM
search/import.
>   - Network selector filters to EVM when not adding tokens.
> - **Search and lists**:
> - Refactor `AssetSearch` to `useTokenSearch` with `allTokens` prop and
debounced updates.
> - `MultiAssetListItems` switches to `FlashList`, shows network badges,
and disables already‑added tokens.
> - **Navigation/UI**:
> - Update Import screens to use `getImportTokenNavbarOptions`
(BottomSheetHeader).
> - Enable "Add token" button on non‑EVM networks in
`TokenListControlBar`.
> - **Asset details**:
> - `AssetOptions` handles CAIP addresses for explorers, hides "Remove
token" for native/wSOL, and supports non‑EVM removal with
notifications/metrics.
> - `ConfirmAddAsset` balances support non‑EVM addresses (hexified), and
header updated.
> - **Tests**:
> - Extensive unit/snapshot updates for new behaviors across search,
add, list, confirm, tokens, and asset options.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f43d635. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com>
Co-authored-by: Luis Taniça <matallui@gmail.com>
Co-authored-by: Caainã Jeronimo <caainaje@gmail.com>
Co-authored-by: Kevin Bluer <kevin@bluer.com>
## **Description**

Refactor the existing MetaMask Pay support to use the new
`TransactionPayController`.

Should result in an identical flow for Predict deposits, but Perps
deposits will now use Relay to move funds.

Includes:

- Remove Perps deposit minimum validation.
- New MetaMask Pay metrics.
  - `mm_pay_strategy`
  - `mm_pay_network_fee_usd`
  - `mm_pay_provider_fee_usd`

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes [#6100](MetaMask/MetaMask-planning#6100)
[#6149](MetaMask/MetaMask-planning#6149)

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

<img height="500" alt="Perps"
src="https://github.com/user-attachments/assets/e0afe13d-c8d7-494e-bec7-2c399b651094"
/>

<img height="500" alt="Predict"
src="https://github.com/user-attachments/assets/0ebc58da-aba6-4ed6-bf1f-c41825293f21"
/>

## **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]
> Migrates MetaMask Pay to the new TransactionPayController, rewiring
Engine, confirmations UI, alerts, and metrics to consume quotes/totals
from it and updating tests/mocks accordingly.
> 
> - **Engine/State**:
> - Add and initialize `TransactionPayController`, messengers,
selectors, and wiring in `Engine`.
> - Update `TransactionController` publish hook to use
`TransactionPayPublishHook`; remove legacy bridge quote flow from
confirmation metrics.
> - Add selectors for transaction pay data; deprecate old confirmation
metrics fields.
> - **Confirmations UI**:
> - Replace legacy hooks with `useTransactionPayData` in rows
(`BridgeFeeRow`, `BridgeTimeRow`, `TotalRow`), `PayWithRow`, and
`CustomAmountInfo`.
> - Update alerts to use pay tokens/quotes/totals
(`useNoPayTokenQuotesAlert`, `useInsufficientPayToken*`), and pending
amount alerts.
> - Footer now disables on pay-loading via `useIsTransactionPayLoading`.
> - Add `isTransactionDataUpdating` to confirmation context; used by
amount update and loading logic.
> - Tweak activity views (hero/summary) formatting and labels; format
fiat consistently.
> - **Metrics**:
> - Emit new fields: `mm_pay_strategy`, `mm_pay_network_fee_usd`,
`mm_pay_provider_fee_usd`; adjust dust/bridge provider metrics to new
quote shape.
> - **Constants/Behavior**:
> - Set `PERPS_MINIMUM_DEPOSIT` to `0.01`; perps deposits use Relay
strategy.
> - **Tests/E2E**:
> - Update unit tests to new data sources; refresh E2E mocks
(gas/price/Arbitrum) and perps add-funds flow.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
eed0bd0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Update background image for Predict claim confirmation.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

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

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

<img width="300" alt="Predict Claim"
src="https://github.com/user-attachments/assets/2715f304-9c7d-46f5-9567-dbd4cc8f5696"
/>

## **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]
> No code changes in this PR.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
389c4e6. 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?
-->

This PR fixes several minor UI issues on the CardHome and SpendingLimit
screens, such as buttons being partially cut off on Android devices. The
fix involves wrapping the affected components with a proper SafeAreaView
to ensure consistent spacing and layout across platforms.

## **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: Buttons being cut off on Android in CardHome and
SpendingLimit screens
CHANGELOG entry: Improved layout consistency by adding SafeAreaView
wrapping

## **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
- [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]
> Exclude Solana from spending limit features in CardHome and refactor
SpendingLimit layout to SafeAreaView + KeyboardAwareScrollView with
minor style tweaks and tests.
> 
> - **CardHome**:
> - Update `isSpendingLimitSupported` to exclude Solana via
`isSolanaChainId`; hide progress bar, close-to-limit warning, and
`MANAGE_SPENDING_LIMIT_ITEM` for Solana (`caipChainId`).
> - Minor `ButtonsSection` dependency cleanup to include related
actions/flags.
> - **SpendingLimit**:
> - Replace `ScrollView` with `SafeAreaView` + `KeyboardAwareScrollView`
and adjust styles (`safeAreaView`, `wrapper`, `contentContainer`
padding).
> - **Tests**:
> - Mock `@metamask/bridge-controller.isSolanaChainId` and add cases
validating Solana exclusions for progress bar, manage button, and
warning.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4504a0d. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Add `polymarket_account_created` property to transaction events if
Predict deposit creates Safe proxy.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

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

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **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 `polymarket_account_created` metric to Predict deposit
transactions by detecting Safe proxy creation via 4-byte prefix, with
accompanying tests.
> 
> - **Metrics**:
> - Add `polymarket_account_created` to `getMetaMaskPayProperties` for
`predictDeposit` based on nested tx data starting with `0xa1884d2c`.
>   - Introduce `FOUR_BYTE_SAFE_PROXY_CREATE` constant for detection.
> - **Tests**:
> - Add tests asserting `polymarket_account_created` is set to
`true`/`false` depending on presence of matching nested transaction.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0092914. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ert Expo Updates cp-7.59.0 (#22349)

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

- Disables fingerprinting and caching 
- Cache builds are hiding numerous errors in the system. This needs to
be audited and reconfigured with both the @metamask-mobile-platform and
DevOps team
- Minor update to make sure test apks are generated for release builds
  - Caused due to a pipeline update failure masked by cache builds
- Revert of Expo Updates #17431 
  - Causing Android build failure (Platform team will investigate)

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

## **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]
> Disables Android E2E fingerprint/cache/repack, adds reliable test APK
handling, and removes Expo Updates/OTA across app, iOS, and
dependencies.
> 
> - **CI/Build (Android E2E)**
> - Disable fingerprint generation, APK cache restore, and repack steps
in `.github/workflows/build-android-e2e.yml`.
> - Ensure test APKs are built and uploaded; add AAB upload
(non-blocking).
> - New E2E build path in `scripts/build.sh` with GitHub-optimized
Gradle props, retry, and output verification; wired for `main`/`flask`
and legacy `releaseE2E`.
> - Add default `testBinaryPath` fallbacks in `.detoxrc.js` for all
Android variants.
> - Tune CI Gradle settings in `android/gradle.properties.github` (lower
heap/workers, disable VFS watch, x86_64 arch).
> - **Remove Expo Updates/OTA**
> - Delete OTA/updates files: `ota.config.js`, `app/constants/ota.ts`,
`app/__mocks__/expo-updates.ts`, `ios/Expo.plist`,
`scripts/update-expo-channel.js`.
> - Strip OTA/updates UI and logic from
`app/components/Views/Settings/AppInformation/index.js` and `index.js`
(remove `expo-asset`).
>   - Remove mocks mapping from `jest.config.js`.
> - Simplify `app.config.js` (remove updates/runtime config; keep core
plugins only).
> - Clean `ios/Podfile`/`Podfile.lock` to drop `expo-updates`/related
pods; remove `Expo.plist` references in Xcode project.
> - Drop `expo-asset` and `expo-updates` from `package.json`; update to
`7.60.0`; lockfile pruned accordingly.
> - **Misc**
> - Update `CODEOWNERS` (remove `scripts/update-expo-channel.js`; add
card slice path).
>   - Remove unused env var from `.js.env.example`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0adea28. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: tommasini <tommasini15@gmail.com>
@pull pull Bot locked and limited conversation to collaborators Nov 10, 2025
@pull pull Bot added the ⤵️ pull label Nov 10, 2025
@pull pull Bot merged commit fbc08a6 into Reality2byte:main Nov 10, 2025
4 of 37 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.

6 participants