Skip to content

Conversation

@eriknson
Copy link
Member

@eriknson eriknson commented Oct 2, 2025

Description

Improves bottom sheet responsiveness by reducing animation duration from 300ms to 150ms. This makes interactions feel 2x faster while remaining smooth and within industry standards (150-300ms range).

Why this change:

  • Current 300ms feels slightly sluggish for frequent interactions
  • 150ms strikes the optimal balance between speed and smoothness
  • Aligns with modern UI expectations for responsive interactions

Technical change:

  • Updated DEFAULT_BOTTOMSHEETDIALOG_DISPLAY_DURATION constant
  • Changed from AnimationDuration.Regularly (300ms) to AnimationDuration.Fast (150ms)
  • Single line change in /app/.../foundation/BottomSheetDialog/BottomSheetDialog.constants.ts

Impacted Bottom Sheets

This affects all bottom sheet components across the app:

Account Management

  • AccountSelector - Account picker/switcher
  • AddAccountActions - Add account options menu
  • AddNewAccountBottomSheet - New account creation flow
  • DeleteAccount - Account deletion confirmation
  • EditAccountName - Rename account sheet
  • EditMultichainAccountName - Rename multichain account
  • MultichainAccountActions - Multichain account options
  • ShareAddress / ShareAddressQR - Address sharing sheets
  • WalletAddAccountActions - Wallet details add account menu

Network & Connections

  • NetworkSelector - Network picker/switcher
  • NetworkListBottomSheet - Network selection list
  • NetworkFilterBottomSheet - Network filter options
  • RpcSelectionModal - RPC endpoint selector
  • AccountConnect - dApp connection flow
  • AccountPermissions - Connection permissions manager
  • MultichainAccountConnect - Multichain connection flow
  • MultichainPermissionsSummary - Permissions overview
  • ConnectedAccountsModal - Connected accounts list

Wallet Actions & Trading

  • WalletActions - Buy, Sell, Send, Receive, Bridge actions
  • TradeWalletActions - Trading-specific actions
  • SendActionBottomSheet - Send flow actions

Transactions & Confirmations

  • ConfirmComponent - Transaction confirmation sheet
  • PersonalSign - Personal signature requests
  • TypedSign - Typed signature requests
  • SignatureRequest - Generic signature requests
  • ContractApprovalBottomSheet - Contract approval confirmations
  • SmartAccountUpdateModal - Smart account updates
  • SwitchAccountTypeModal - Account type switching

Settings & Configuration

  • ContactForm - Add/edit contact
  • DeleteContactBottomSheet - Contact deletion confirmation
  • NetworkSettings - Network configuration
  • FiatOnTestnetsFriction - Testnet fiat warning
  • DataCollectionModal - Analytics preferences
  • ExperienceEnhancerModal - Onboarding enhancement

Assets & NFTs

  • AddAsset - Import token/NFT flow
  • AssetOptions - Asset action menu
  • NftOptions - NFT action menu
  • ShowTokenIdSheet - Token ID display
  • ShowIpfsGatewaySheet - IPFS gateway display
  • ShowDisplayNFTMediaSheet - NFT media display

SDK & Browser

  • SDKSessionModal - SDK session management
  • SDKLoadingModal - SDK loading state
  • SDKFeedbackModal - SDK feedback collection
  • SDKDisconnectModal - SDK disconnect confirmation
  • MaxBrowserTabsModal - Browser tab limit warning

Other UI Components

  • TooltipModal - Contextual tooltips
  • SuccessErrorSheet - Success/error messages
  • OriginSpamModal - Spam origin warnings
  • ChangeInSimulationModal - Simulation change alerts
  • SelectSRPBottomSheet - SRP selection
  • OnboardingSheet - Onboarding flows
  • AmbiguousAddressSheet - Address disambiguation

Changelog

CHANGELOG entry: Improved bottom sheet animation speed for more responsive interactions

Related issues

N/A

Manual testing steps

Feature: Faster bottom sheet animations

  Scenario: User opens and closes bottom sheets
    Given the user is on the wallet home screen
    When the user opens account selector or network selector
    Then the bottom sheet should animate up in 150ms (noticeably faster than 300ms)
    When the user dismisses the sheet by swiping down or tapping outside
    Then it should animate down in 150ms
    
  Scenario: User interacts with wallet actions
    Given the user is on the wallet home screen
    When the user taps "Buy & Sell" or any wallet action button
    Then the wallet actions bottom sheet should appear quickly with 150ms animation
    
  Scenario: User connects to a dApp
    Given the user is browsing a dApp
    When the dApp requests connection
    Then the account connect bottom sheet should animate up smoothly in 150ms

Screenshots/Recordings

Before

300ms animation (AnimationDuration.Regularly)

After

150ms animation (AnimationDuration.Fast) - 2x faster, more responsive feel

Pre-merge author checklist

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.

Note

Speeds up BottomSheetDialog initial display by changing duration from AnimationDuration.Regularly to AnimationDuration.Fast.

Written by Cursor Bugbot for commit c432773. This will update automatically on new commits. Configure here.

@eriknson eriknson requested a review from a team as a code owner October 2, 2025 14:23
@metamaskbot metamaskbot added the team-core-platform Core Platform team label Oct 2, 2025
@owencraston owencraston added the area-performance Issues relating to slowness of app, cpu usage, and/or blank screens. label Oct 2, 2025
@sonarqubecloud
Copy link

sonarqubecloud bot commented Oct 2, 2025

github-merge-queue bot pushed a commit that referenced this pull request Oct 2, 2025
## **Description**

Improves modal and bottom sheet backdrop responsiveness by reducing
overlay animation duration from 300ms to 150ms. This makes interactions
feel 2x faster while remaining smooth and within industry standards
(150-300ms range).

**Why this change:**
- Overlays appear on every bottom sheet interaction throughout the app
- Current 300ms feels slightly sluggish for such frequent, basic UI
feedback
- 150ms provides immediate visual response while maintaining smoothness
- Complements other animation performance improvements

**Technical change:**
- Updated `DEFAULT_OVERLAY_ANIMATION_DURATION` constant
- Changed from `AnimationDuration.Regularly` (300ms) to
`AnimationDuration.Fast` (150ms)
- Single line change in
`/app/component-library/components/Overlay/Overlay.constants.ts`

---

## **Impacted Components**

This affects the backdrop/overlay fade animation for **all** components
using `Overlay` from the design system:

#### Account Management
- `AccountSelector` - Account picker backdrop overlay
- `AddAccountActions` - Add account options backdrop
- `AddNewAccountBottomSheet` - New account creation backdrop
- `DeleteAccount` - Account deletion confirmation backdrop
- `EditAccountName` - Rename account backdrop
- `EditMultichainAccountName` - Rename multichain account backdrop
- `MultichainAccountActions` - Multichain account options backdrop
- `ShareAddress` - Address sharing backdrop
- `ShareAddressQR` - QR code sharing backdrop
- `WalletAddAccountActions` - Wallet details add account backdrop

#### Network & Connections
- `NetworkSelector` - Network picker backdrop overlay
- `NetworkListBottomSheet` - Network selection list backdrop
- `NetworkFilterBottomSheet` - Network filter options backdrop
- `RpcSelectionModal` - RPC endpoint selector backdrop
- `AccountConnect` - dApp connection flow backdrop
- `AccountPermissions` - Connection permissions backdrop
- `MultichainAccountConnect` - Multichain connection backdrop
- `MultichainPermissionsSummary` - Permissions overview backdrop
- `ConnectedAccountsModal` - Connected accounts backdrop

#### Wallet Actions & Trading
- `WalletActions` - Buy, Sell, Send, Receive, Bridge actions backdrop
- `TradeWalletActions` - Trading-specific actions backdrop (uses
`Overlay` directly)
- `SendActionBottomSheet` - Send flow actions backdrop

#### Transactions & Confirmations
- `ConfirmComponent` - Transaction confirmation backdrop
- `PersonalSign` - Personal signature request backdrop
- `TypedSign` - Typed signature request backdrop
- `SignatureRequest` - Generic signature request backdrop
- `ContractApprovalBottomSheet` - Contract approval backdrop
- `SmartAccountUpdateModal` - Smart account update backdrop
- `SwitchAccountTypeModal` - Account type switching backdrop

#### Settings & Configuration
- `ContactForm` - Add/edit contact backdrop
- `DeleteContactBottomSheet` - Contact deletion backdrop
- `NetworkSettings` - Network configuration backdrop
- `FiatOnTestnetsFriction` - Testnet fiat warning backdrop
- `DataCollectionModal` - Analytics preferences backdrop
- `ExperienceEnhancerModal` - Onboarding enhancement backdrop

#### Assets & NFTs
- `AddAsset` - Import token/NFT backdrop
- `AssetOptions` - Asset action menu backdrop
- `NftOptions` - NFT action menu backdrop
- `ShowTokenIdSheet` - Token ID display backdrop
- `ShowIpfsGatewaySheet` - IPFS gateway display backdrop
- `ShowDisplayNFTMediaSheet` - NFT media display backdrop

#### SDK & Browser
- `SDKSessionModal` - SDK session management backdrop
- `SDKLoadingModal` - SDK loading state backdrop
- `SDKFeedbackModal` - SDK feedback collection backdrop
- `SDKDisconnectModal` - SDK disconnect confirmation backdrop
- `MaxBrowserTabsModal` - Browser tab limit warning backdrop

#### Other UI Components
- `TooltipModal` - Contextual tooltip backdrop
- `SuccessErrorSheet` - Success/error message backdrop
- `OriginSpamModal` - Spam origin warning backdrop
- `ChangeInSimulationModal` - Simulation change alert backdrop
- `SelectSRPBottomSheet` - SRP selection backdrop
- `OnboardingSheet` - Onboarding flow backdrop
- `AmbiguousAddressSheet` - Address disambiguation backdrop

**Technical Note:** This change specifically affects the `Overlay`
component from the design system, which is used by `BottomSheetOverlay`
(affecting all bottom sheets) and `TradeWalletActions`. Components using
other overlay implementations are not affected.

---

## **Changelog**

CHANGELOG entry: Improved overlay animation speed for more responsive
bottom sheets and modals

## **Related issues**

Should be merged together with #20692

## **Manual testing steps**

```gherkin
Feature: Faster overlay animations

  Scenario: User opens account selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the account selector button
    Then the backdrop overlay should fade in quickly (150ms vs 300ms)
    When the user taps outside to dismiss
    Then the backdrop should fade out quickly (150ms)
    
  Scenario: User opens network selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the network selector button
    Then the backdrop overlay should fade in with improved responsiveness
    When the user swipes down to dismiss
    Then the backdrop should fade out smoothly but quickly
    
  Scenario: User opens wallet actions
    Given the user is on the wallet home screen
    When the user taps "Buy & Sell" button
    Then the overlay should appear with a snappier, more responsive feel
    
  Scenario: User opens transaction confirmation
    Given the user initiates a transaction
    When the confirmation sheet appears
    Then the backdrop overlay should fade in quickly (150ms)
    When the user confirms or cancels
    Then the backdrop should fade out quickly (150ms)
```

## **Screenshots/Recordings**

### **Before**
300ms overlay fade animation (`AnimationDuration.Regularly`)

### **After**
150ms overlay fade animation (`AnimationDuration.Fast`) - 2x faster,
more responsive feel

## **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]
> Change `DEFAULT_OVERLAY_ANIMATION_DURATION` from
`AnimationDuration.Regularly` to `AnimationDuration.Fast` to speed up
overlay animations.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c1315a9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
infiniteflower pushed a commit that referenced this pull request Oct 7, 2025
## **Description**

Improves modal and bottom sheet backdrop responsiveness by reducing
overlay animation duration from 300ms to 150ms. This makes interactions
feel 2x faster while remaining smooth and within industry standards
(150-300ms range).

**Why this change:**
- Overlays appear on every bottom sheet interaction throughout the app
- Current 300ms feels slightly sluggish for such frequent, basic UI
feedback
- 150ms provides immediate visual response while maintaining smoothness
- Complements other animation performance improvements

**Technical change:**
- Updated `DEFAULT_OVERLAY_ANIMATION_DURATION` constant
- Changed from `AnimationDuration.Regularly` (300ms) to
`AnimationDuration.Fast` (150ms)
- Single line change in
`/app/component-library/components/Overlay/Overlay.constants.ts`

---

## **Impacted Components**

This affects the backdrop/overlay fade animation for **all** components
using `Overlay` from the design system:

#### Account Management
- `AccountSelector` - Account picker backdrop overlay
- `AddAccountActions` - Add account options backdrop
- `AddNewAccountBottomSheet` - New account creation backdrop
- `DeleteAccount` - Account deletion confirmation backdrop
- `EditAccountName` - Rename account backdrop
- `EditMultichainAccountName` - Rename multichain account backdrop
- `MultichainAccountActions` - Multichain account options backdrop
- `ShareAddress` - Address sharing backdrop
- `ShareAddressQR` - QR code sharing backdrop
- `WalletAddAccountActions` - Wallet details add account backdrop

#### Network & Connections
- `NetworkSelector` - Network picker backdrop overlay
- `NetworkListBottomSheet` - Network selection list backdrop
- `NetworkFilterBottomSheet` - Network filter options backdrop
- `RpcSelectionModal` - RPC endpoint selector backdrop
- `AccountConnect` - dApp connection flow backdrop
- `AccountPermissions` - Connection permissions backdrop
- `MultichainAccountConnect` - Multichain connection backdrop
- `MultichainPermissionsSummary` - Permissions overview backdrop
- `ConnectedAccountsModal` - Connected accounts backdrop

#### Wallet Actions & Trading
- `WalletActions` - Buy, Sell, Send, Receive, Bridge actions backdrop
- `TradeWalletActions` - Trading-specific actions backdrop (uses
`Overlay` directly)
- `SendActionBottomSheet` - Send flow actions backdrop

#### Transactions & Confirmations
- `ConfirmComponent` - Transaction confirmation backdrop
- `PersonalSign` - Personal signature request backdrop
- `TypedSign` - Typed signature request backdrop
- `SignatureRequest` - Generic signature request backdrop
- `ContractApprovalBottomSheet` - Contract approval backdrop
- `SmartAccountUpdateModal` - Smart account update backdrop
- `SwitchAccountTypeModal` - Account type switching backdrop

#### Settings & Configuration
- `ContactForm` - Add/edit contact backdrop
- `DeleteContactBottomSheet` - Contact deletion backdrop
- `NetworkSettings` - Network configuration backdrop
- `FiatOnTestnetsFriction` - Testnet fiat warning backdrop
- `DataCollectionModal` - Analytics preferences backdrop
- `ExperienceEnhancerModal` - Onboarding enhancement backdrop

#### Assets & NFTs
- `AddAsset` - Import token/NFT backdrop
- `AssetOptions` - Asset action menu backdrop
- `NftOptions` - NFT action menu backdrop
- `ShowTokenIdSheet` - Token ID display backdrop
- `ShowIpfsGatewaySheet` - IPFS gateway display backdrop
- `ShowDisplayNFTMediaSheet` - NFT media display backdrop

#### SDK & Browser
- `SDKSessionModal` - SDK session management backdrop
- `SDKLoadingModal` - SDK loading state backdrop
- `SDKFeedbackModal` - SDK feedback collection backdrop
- `SDKDisconnectModal` - SDK disconnect confirmation backdrop
- `MaxBrowserTabsModal` - Browser tab limit warning backdrop

#### Other UI Components
- `TooltipModal` - Contextual tooltip backdrop
- `SuccessErrorSheet` - Success/error message backdrop
- `OriginSpamModal` - Spam origin warning backdrop
- `ChangeInSimulationModal` - Simulation change alert backdrop
- `SelectSRPBottomSheet` - SRP selection backdrop
- `OnboardingSheet` - Onboarding flow backdrop
- `AmbiguousAddressSheet` - Address disambiguation backdrop

**Technical Note:** This change specifically affects the `Overlay`
component from the design system, which is used by `BottomSheetOverlay`
(affecting all bottom sheets) and `TradeWalletActions`. Components using
other overlay implementations are not affected.

---

## **Changelog**

CHANGELOG entry: Improved overlay animation speed for more responsive
bottom sheets and modals

## **Related issues**

Should be merged together with #20692

## **Manual testing steps**

```gherkin
Feature: Faster overlay animations

  Scenario: User opens account selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the account selector button
    Then the backdrop overlay should fade in quickly (150ms vs 300ms)
    When the user taps outside to dismiss
    Then the backdrop should fade out quickly (150ms)
    
  Scenario: User opens network selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the network selector button
    Then the backdrop overlay should fade in with improved responsiveness
    When the user swipes down to dismiss
    Then the backdrop should fade out smoothly but quickly
    
  Scenario: User opens wallet actions
    Given the user is on the wallet home screen
    When the user taps "Buy & Sell" button
    Then the overlay should appear with a snappier, more responsive feel
    
  Scenario: User opens transaction confirmation
    Given the user initiates a transaction
    When the confirmation sheet appears
    Then the backdrop overlay should fade in quickly (150ms)
    When the user confirms or cancels
    Then the backdrop should fade out quickly (150ms)
```

## **Screenshots/Recordings**

### **Before**
300ms overlay fade animation (`AnimationDuration.Regularly`)

### **After**
150ms overlay fade animation (`AnimationDuration.Fast`) - 2x faster,
more responsive feel

## **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]
> Change `DEFAULT_OVERLAY_ANIMATION_DURATION` from
`AnimationDuration.Regularly` to `AnimationDuration.Fast` to speed up
overlay animations.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c1315a9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
weitingsun pushed a commit that referenced this pull request Oct 15, 2025
## **Description**

Improves modal and bottom sheet backdrop responsiveness by reducing
overlay animation duration from 300ms to 150ms. This makes interactions
feel 2x faster while remaining smooth and within industry standards
(150-300ms range).

**Why this change:**
- Overlays appear on every bottom sheet interaction throughout the app
- Current 300ms feels slightly sluggish for such frequent, basic UI
feedback
- 150ms provides immediate visual response while maintaining smoothness
- Complements other animation performance improvements

**Technical change:**
- Updated `DEFAULT_OVERLAY_ANIMATION_DURATION` constant
- Changed from `AnimationDuration.Regularly` (300ms) to
`AnimationDuration.Fast` (150ms)
- Single line change in
`/app/component-library/components/Overlay/Overlay.constants.ts`

---

## **Impacted Components**

This affects the backdrop/overlay fade animation for **all** components
using `Overlay` from the design system:

#### Account Management
- `AccountSelector` - Account picker backdrop overlay
- `AddAccountActions` - Add account options backdrop
- `AddNewAccountBottomSheet` - New account creation backdrop
- `DeleteAccount` - Account deletion confirmation backdrop
- `EditAccountName` - Rename account backdrop
- `EditMultichainAccountName` - Rename multichain account backdrop
- `MultichainAccountActions` - Multichain account options backdrop
- `ShareAddress` - Address sharing backdrop
- `ShareAddressQR` - QR code sharing backdrop
- `WalletAddAccountActions` - Wallet details add account backdrop

#### Network & Connections
- `NetworkSelector` - Network picker backdrop overlay
- `NetworkListBottomSheet` - Network selection list backdrop
- `NetworkFilterBottomSheet` - Network filter options backdrop
- `RpcSelectionModal` - RPC endpoint selector backdrop
- `AccountConnect` - dApp connection flow backdrop
- `AccountPermissions` - Connection permissions backdrop
- `MultichainAccountConnect` - Multichain connection backdrop
- `MultichainPermissionsSummary` - Permissions overview backdrop
- `ConnectedAccountsModal` - Connected accounts backdrop

#### Wallet Actions & Trading
- `WalletActions` - Buy, Sell, Send, Receive, Bridge actions backdrop
- `TradeWalletActions` - Trading-specific actions backdrop (uses
`Overlay` directly)
- `SendActionBottomSheet` - Send flow actions backdrop

#### Transactions & Confirmations
- `ConfirmComponent` - Transaction confirmation backdrop
- `PersonalSign` - Personal signature request backdrop
- `TypedSign` - Typed signature request backdrop
- `SignatureRequest` - Generic signature request backdrop
- `ContractApprovalBottomSheet` - Contract approval backdrop
- `SmartAccountUpdateModal` - Smart account update backdrop
- `SwitchAccountTypeModal` - Account type switching backdrop

#### Settings & Configuration
- `ContactForm` - Add/edit contact backdrop
- `DeleteContactBottomSheet` - Contact deletion backdrop
- `NetworkSettings` - Network configuration backdrop
- `FiatOnTestnetsFriction` - Testnet fiat warning backdrop
- `DataCollectionModal` - Analytics preferences backdrop
- `ExperienceEnhancerModal` - Onboarding enhancement backdrop

#### Assets & NFTs
- `AddAsset` - Import token/NFT backdrop
- `AssetOptions` - Asset action menu backdrop
- `NftOptions` - NFT action menu backdrop
- `ShowTokenIdSheet` - Token ID display backdrop
- `ShowIpfsGatewaySheet` - IPFS gateway display backdrop
- `ShowDisplayNFTMediaSheet` - NFT media display backdrop

#### SDK & Browser
- `SDKSessionModal` - SDK session management backdrop
- `SDKLoadingModal` - SDK loading state backdrop
- `SDKFeedbackModal` - SDK feedback collection backdrop
- `SDKDisconnectModal` - SDK disconnect confirmation backdrop
- `MaxBrowserTabsModal` - Browser tab limit warning backdrop

#### Other UI Components
- `TooltipModal` - Contextual tooltip backdrop
- `SuccessErrorSheet` - Success/error message backdrop
- `OriginSpamModal` - Spam origin warning backdrop
- `ChangeInSimulationModal` - Simulation change alert backdrop
- `SelectSRPBottomSheet` - SRP selection backdrop
- `OnboardingSheet` - Onboarding flow backdrop
- `AmbiguousAddressSheet` - Address disambiguation backdrop

**Technical Note:** This change specifically affects the `Overlay`
component from the design system, which is used by `BottomSheetOverlay`
(affecting all bottom sheets) and `TradeWalletActions`. Components using
other overlay implementations are not affected.

---

## **Changelog**

CHANGELOG entry: Improved overlay animation speed for more responsive
bottom sheets and modals

## **Related issues**

Should be merged together with #20692

## **Manual testing steps**

```gherkin
Feature: Faster overlay animations

  Scenario: User opens account selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the account selector button
    Then the backdrop overlay should fade in quickly (150ms vs 300ms)
    When the user taps outside to dismiss
    Then the backdrop should fade out quickly (150ms)
    
  Scenario: User opens network selector bottom sheet
    Given the user is on the wallet home screen
    When the user taps the network selector button
    Then the backdrop overlay should fade in with improved responsiveness
    When the user swipes down to dismiss
    Then the backdrop should fade out smoothly but quickly
    
  Scenario: User opens wallet actions
    Given the user is on the wallet home screen
    When the user taps "Buy & Sell" button
    Then the overlay should appear with a snappier, more responsive feel
    
  Scenario: User opens transaction confirmation
    Given the user initiates a transaction
    When the confirmation sheet appears
    Then the backdrop overlay should fade in quickly (150ms)
    When the user confirms or cancels
    Then the backdrop should fade out quickly (150ms)
```

## **Screenshots/Recordings**

### **Before**
300ms overlay fade animation (`AnimationDuration.Regularly`)

### **After**
150ms overlay fade animation (`AnimationDuration.Fast`) - 2x faster,
more responsive feel

## **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]
> Change `DEFAULT_OVERLAY_ANIMATION_DURATION` from
`AnimationDuration.Regularly` to `AnimationDuration.Fast` to speed up
overlay animations.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c1315a9. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@eriknson
Copy link
Member Author

@cursor is this still aligned to main and ready to merge?

@cursor
Copy link

cursor bot commented Nov 19, 2025

Not yet. The branch is currently 2694 commits behind origin/main (git rev-list --left-right --count origin/main...HEAD), so it needs a rebase or merge with the latest main before merge. Update the branch, re-run the checks, and then it should be good to go.


Open in Cursor Open in Web

Learn more about Cursor Agents

@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@github-actions
Copy link
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeWalletUX
  • Risk Level: low
  • AI Confidence: 85%
click to see 🤖 AI reasoning details

Change Analysis

The PR modifies a single constants file that adjusts an animation duration for BottomSheetDialog components:

  • Change: DEFAULT_BOTTOMSHEETDIALOG_DISPLAY_DURATION changed from AnimationDuration.Regularly (300ms) to AnimationDuration.Fast (150ms)
  • Impact: This affects the animation speed when BottomSheet dialogs open and close

Impact Assessment

  1. Component Scope: BottomSheetDialog is a foundational UI component used extensively throughout the app in various features including:

    • Ramps/Buy-Sell flows (Quotes.tsx)
    • Confirmations (confirm-component.tsx)
    • Account management (MultichainAccounts)
    • Asset management (AddAsset, Token filters)
    • Settings and modals
  2. Nature of Change: This is purely a visual/UX improvement:

    • Makes bottom sheet animations 150ms faster (from 300ms to 150ms)
    • Does not change any business logic, data flow, or functionality
    • Only affects the perceived smoothness and responsiveness of UI animations
  3. Risk Level: Low because:

    • No functional changes to any features
    • No API, state management, or data handling modifications
    • Animation timing changes are non-breaking
    • The component is well-tested with unit tests
    • Animation durations are within normal UX ranges

Test Tag Selection Rationale

Selected: SmokeWalletUX

  • This tag covers wallet user experience and UI changes
  • The change directly impacts UX perception through animation speed
  • Bottom sheets are core UI elements that appear throughout the wallet interface

Not Selected:

  • SmokeConfirmationsRedesigned: While confirmations use bottom sheets, the animation change doesn't affect confirmation logic or flows
  • SmokeRamps: Ramps uses bottom sheets but the animation timing doesn't impact buy/sell functionality
  • SmokeAccounts/SmokeMultiChainPermissions: Account management uses bottom sheets but animation speed doesn't affect account operations
  • Other tags: Not relevant as they focus on specific features (swaps, staking, etc.) rather than general UX/UI elements

Conservative Approach

Running SmokeWalletUX provides adequate coverage to verify that:

  • Bottom sheets still animate properly
  • No visual regressions are introduced
  • The faster animation doesn't cause any timing-related UI issues
  • Overall wallet UX remains smooth

The change is minimal and well-isolated, making this a straightforward UX enhancement that requires basic smoke testing of the wallet interface.

View GitHub Actions results

@sonarqubecloud
Copy link

@brianacnguyen brianacnguyen added this pull request to the merge queue Nov 21, 2025
Merged via the queue into main with commit ed9087d Nov 21, 2025
88 checks passed
@brianacnguyen brianacnguyen deleted the perf/faster-bottomsheet-animation branch November 21, 2025 06:38
@github-actions github-actions bot locked and limited conversation to collaborators Nov 21, 2025
@metamaskbot metamaskbot added the release-7.61.0 Issue or pull request that will be included in release 7.61.0 label Nov 21, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-performance Issues relating to slowness of app, cpu usage, and/or blank screens. release-7.61.0 Issue or pull request that will be included in release 7.61.0 size-XS team-core-platform Core Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants