Skip to content

[pull] main from MetaMask:main#333

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

[pull] main from MetaMask:main#333
pull[bot] merged 6 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull

@pull pull Bot commented Nov 18, 2025

Copy link
Copy Markdown

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

sophieqgu and others added 6 commits November 18, 2025 07:28
)

<!--
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**
Follow #21616 and use
additionalNetworksBlacklist feature flag to hide Monad until ready
<!--
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: #22723

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

- [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]
> SwapSupportedNetworksSection now excludes blacklisted networks via
feature flag and tests cover blacklist behavior.
> 
> - **Rewards UI (OverviewTab → WaysToEarn →
`SwapSupportedNetworksSection`)**:
> - Integrates `selectAdditionalNetworksBlacklistFeatureFlag` and
filters `SWAP_SUPPORTED_CHAIN_IDS` to exclude blacklisted networks.
> - Updates memoization deps to include the blacklist; existing Linea
boost logic remains.
> - **Tests (`SwapSupportedNetworksSection.test.tsx`)**:
>   - Mocks blacklist selector and defaults to empty list.
> - Adds tests verifying exclusion of Linea when blacklisted and no
effect for unknown chain IDs.
>   - Adjusts `useSelector` mocks accordingly across cases.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
14ee73d. 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**

Implement the updated design for the Swaps keyboard on Mobile by
introducing quick-pick buttons atop the keyboard.

<!--
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: introduce quick pick options in swap keypad

## **Related issues**

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

## **Manual testing steps**

```gherkin
- Quick actions should render only on swaps not bridges.
- Quick actions should render 25/50/75/Max options on blockchains that support gassless swaps and respective tokens.
- Quick actions should render 25/50/75/90 options on blockchains that do not support gassless swaps and bridges.
```

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

#### Native coin that do not support gassless swaps
<img width="575" height="899" alt="Screenshot 2025-11-10 at 3 16 32 PM"
src="https://github.com/user-attachments/assets/7d62a476-577e-4cb0-a3af-ea3a7f07d1ed"
/>

#### Native coin that supports gassless swaps

<img width="575" height="899" alt="Screenshot 2025-11-10 at 3 19 08 PM"
src="https://github.com/user-attachments/assets/e20d9ef4-61e3-4423-bdac-722254166287"
/>

#### Tokens (support gassless swaps)

<img width="575" height="899" alt="Screenshot 2025-11-10 at 3 17 45 PM"
src="https://github.com/user-attachments/assets/a2ccbe6f-c2a0-41b1-bcfd-65e633031825"
/>

<!-- [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]
> Introduces a new SwapsKeypad with 25/50/75 and Max (or 90% for native
without gasless) quick-pick buttons, integrates it into BridgeView, adds
a token address hook, and updates tests/styles.
> 
> - **Bridge UI**:
> - **SwapsKeypad**: Replaces `Keypad` in `BridgeView` with
`SwapsKeypad` showing quick-pick buttons (`25%`, `50%`, `75%`, `Max` or
`90%` for native without gasless) and centralizes `onMaxPress` handling.
> - **QuickPickButtons**: New component with styles for quick-pick
actions.
> - **Token address handling**: Add `useTokenAddress` hook and use it in
`SwapsKeypad` and `TokenInputArea` to normalize Polygon native token
address.
> - **Max button logic**: Show/hide `Max` in `TokenInputArea` based on
native/gasless; add `testID` `token-input-area-max-button`.
> - **Styles**: Remove old keypad styles from `BridgeView.styles` and
add styles for `SwapsKeypad`/quick-pick buttons.
> - **Tests**:
>   - Add comprehensive tests for `SwapsKeypad` and `QuickPickButtons`.
> - Update `BridgeView` tests/snapshots to use `testID`s and verify
quick-pick/Max behaviors.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d4f164a. 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**

Removes `useRegisterPushNotificationsEffect` and related unused code,
including:
- `hasInitialNotification` from
`app/util/notifications/methods/common.ts`
- `getInitialNotification` and `onBackgroundEvent` from
`app/util/notifications/services/NotificationService.ts`
- `useRegisterPushNotificationsEffect.ts` and its test file
- The usage of `useRegisterPushNotificationsEffect` in
`useNotificationHandler`

<!--
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/ASSETS-1552

## **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]
> Removes useRegisterPushNotificationsEffect and initial/background
notification handlers/utilities, updating hooks, tests, and
NotificationService accordingly.
> 
> - **Notifications hooks**:
>   - Remove `useRegisterPushNotificationsEffect` and its test file.
> - Stop invoking it in `hooks/index.ts`; only call
`useStartupNotificationsEffect`.
> - Update `hooks/index.test.tsx` to assert only
`useStartupNotificationsEffect` is invoked.
> - **NotificationService (`services/NotificationService.ts`)**:
> - Remove `getInitialNotification` and `onBackgroundEvent` wrappers and
related imports/types.
> - Keep `onForegroundEvent`, badge count helpers, and display flow
intact.
> - **Methods (`methods/common.ts`)**:
>   - Remove `notifee` import and `hasInitialNotification` helper.
>   - Retain `withTimeout` and other utilities unchanged.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
7b1c858. 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**

improve carousel trending design

<!--
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: improve carousel trending 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**



https://github.com/user-attachments/assets/7564e1bf-80a7-4678-9e0f-667704935f79



<!-- [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]
> Refines the Predictions carousel with an `isCarousel` layout across
components, redesigns `SectionCarrousel` sizing/pagination behavior, and
expands tests.
> 
> - **Predict UI**:
> - Add `isCarousel` prop to `PredictMarket`, `PredictMarketSingle`,
`PredictMarketMultiple`, and `PredictMarketSkeleton`; pass via
`SECTIONS_CONFIG.predictions`.
> - Carousel-specific styles: adjusted container height/padding/margins,
image sizes, text variants/line heights, tighter gaps, truncated labels,
smaller button sizes and fixed widths.
> - **Trending Carousel**:
> - Refactor `SectionCarrousel` with stylesheet-driven layout (fixed
card height, peek widths, snap interval, content padding) and bounded
`activeIndex`.
> - Split FlashList rendering for loading vs data; styled pagination
dots with pressable navigation.
> - **Tests**:
> - Expand `SectionCarrousel` tests: rendering, loading state,
pagination dots/interaction, empty and single-item cases; mock
`FlashList` and navigation.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
843bec8. 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: None - dependency bump

## **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]
> Bumps `@metamask/core-backend` to 4.1.0 and removes custom WebSocket
timeout/reconnect options from service init, updating tests to match.
> 
> - **Core backend integration**:
> - Update `@metamask/core-backend` to `^4.1.0` (and lockfile), with
`@metamask/controller-utils` peer bump.
> - **Backend WebSocket service**:
> - In
`app/core/Engine/controllers/core-backend/backend-websocket-service-init.ts`,
remove explicit `timeout`, `reconnectDelay`, `maxReconnectDelay`, and
`requestTimeout` config; rely on defaults.
> - Keep `url`, `traceFn`, and `isEnabled` feature-flag gating
unchanged.
> - Update test `backend-websocket-service-init.test.ts` to assert only
`url` and initialization logs.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
479f482. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
…ices (#22701)

## **Description**

This PR improves navigation performance in the Perps feature to provide
a smoother, more responsive experience on lower-end Android devices.

**Problem:**
Navigation between Perps screens can feel sluggish on lower-end devices,
particularly when:
- Tapping market cards to view market details
- Opening order screens via Long/Short buttons
- Transitions lack visual feedback and feel unresponsive

**Solution:**
Implemented two targeted optimizations:

1. **Navigation Animations** - Enable smooth screen transitions with
proper animation timing to provide visual feedback during navigation
2. **Memoize Market Lookups** - Pre-compute market data lookups in
PerpsCard (200-300 items) to eliminate blocking array searches during
user interactions

**Impact:**
- Smoother navigation transitions with visual feedback
- Eliminated blocking array searches during user taps (200-300 item
lookups)
- Improved perceived performance on lower-end devices

## **Changelog**

CHANGELOG entry: Improved Perps navigation performance for smoother
screen transitions on lower-end devices

## **Related issues**

Fixes: [Internal investigation - no public issue]

## **Manual testing steps**

```gherkin
Feature: Perps Navigation Performance

  Scenario: user navigates from home to market details
    Given user is on Perps home screen with market cards visible
    When user taps on any market card (e.g., BTC-USD)
    Then screen transition should feel smooth and immediate
    And market details view should appear without noticeable delay

  Scenario: user opens order screen from market details
    Given user is viewing market details for any asset
    When user taps the "Long" or "Short" button
    Then order screen should appear with smooth animation
    And screen should load without noticeable delay

  Scenario: user navigates between multiple markets quickly
    Given user is on Perps home screen
    When user taps multiple different market cards in quick succession
    Then each navigation should feel responsive
    And there should be no UI freezing between taps

  Scenario: user tests on lower-end Android device
    Given user has a mid-to-low-end Android device (e.g., 4GB RAM)
    When user performs all navigation flows in Perps
    Then navigation should feel snappy with smooth animations
    And tapping market cards should respond immediately without lag
```

## **Screenshots/Recordings**

### **Before**

<!-- Add before recordings when testing on device -->

### **After**

<!-- Add after recordings when testing on device -->

## **Technical Details**

### Navigation Animations
**File:** `app/components/UI/Perps/routes/index.tsx`
- Enable navigation animations for smooth screen transitions
- Provides visual feedback during navigation

### Memoized Market Lookups
**File:** `app/components/UI/Perps/components/PerpsCard/PerpsCard.tsx`
- Added `useMemo` to pre-compute market lookups:
  ```typescript
  const market = useMemo(
    () => markets.find((m) => m.symbol === symbol),
    [markets, symbol],
  );
  ```
- Eliminates blocking array search during user taps (markets array
typically contains 200-300 items)

## **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 (performance improvements -
visual testing required)
- [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.

## **Testing Notes for Reviewers**

**Focus Areas:**
1. Test on lower-end Android device (4GB RAM or less) if possible
2. Pay attention to navigation "feel" - should be immediate and smooth
with animated transitions
3. Test rapid tapping of market cards - should remain responsive
4. No regression in functionality - all data should still load correctly

**What to look for:**
- ✅ Smooth animated transitions between screens
- ✅ Instant response when tapping market cards or Long/Short buttons
- ✅ No lag when tapping cards in quick succession
- ❌ No frozen transitions or unresponsive UI
- ❌ No missing data or broken functionality

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Defers non-critical PerpsOrderView data subscriptions until after
first render, memoizes PerpsCard market lookup, enables default screen
animations, and updates tests to await deferred data.
> 
> - **PerpsOrderView (`PerpsOrderView.tsx`)**:
> - *Deferred data loading*: Introduces `isDataReady` (via
`requestAnimationFrame`) to delay `usePerpsMarketData`,
`usePerpsLivePrices`, and `usePerpsTopOfBook` subscriptions until after
initial render; updates `usePerpsMeasurement` conditions accordingly.
> - Minor refactors: computed styles memoization unchanged behavior;
validation/messages and handlers unchanged but aligned with deferred
data.
> - **PerpsCard (`PerpsCard.tsx`)**:
> - *Performance*: Adds `useMemo` for market lookup and simplifies
`handlePress` deps to use memoized `market`.
> - **Navigation (`routes/index.tsx`)**:
>   - Removes `animationEnabled: false` to allow default transitions.
> - **Tests (`PerpsOrderView.test.tsx`)**:
> - Mocks `usePerpsLivePrices`; switches to async assertions
(`findByText`) for values shown after deferred readiness.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
faffdca. 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 Nov 18, 2025
@pull pull Bot added the ⤵️ pull label Nov 18, 2025
@pull pull Bot merged commit 4a528d0 into Reality2byte:main Nov 18, 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.

6 participants