Skip to content

feat: MUSD-795 money home screen onboarding stepper#30226

Merged
Matt561 merged 27 commits into
mainfrom
feat/musd-795-money-home-screen-onboarding-stepper
May 21, 2026
Merged

feat: MUSD-795 money home screen onboarding stepper#30226
Matt561 merged 27 commits into
mainfrom
feat/musd-795-money-home-screen-onboarding-stepper

Conversation

@Matt561

@Matt561 Matt561 commented May 15, 2026

Copy link
Copy Markdown
Contributor

Description

Introduces a step-by-step onboarding experience on the Money home screen, replacing the previous static MoneyOnboardingCard with a generic StepperCard component backed by Redux state.

Key changes:

  • StepperCard + SegmentedProgressBar — new reusable components that render a multi-step card with a visual progress bar, image slot, title/description, and primary/secondary CTAs. Designed to be product-agnostic; driven entirely by the caller via steps[] + currentStep props.

  • Redux stepper stateSET_ONBOARDING_STEPPER_STEP action + reducer keyed by stepperId, so multiple independent steppers can coexist without new Redux fields per product.

  • useMoneyOnboardingStep — thin hook that reads/writes the Money stepper step from Redux, exposing currentStep and incrementStep.

  • MoneyConfirmationScreenStack split — the Money confirmation screens are now registered as a separate MoneyConfirmationScreenStack in MainNavigator to prevent the bottom tab bar from rendering on Money confirmation screens.

  • Added Money onboarding stepper reset to developer options — The Money onboarding stepper state can now be reset in the developer options.

Changelog

CHANGELOG entry: refactored the Money onboarding stepper; created generic StepperCard and SegmentedProgressBar component

Related issues

Fixes:

Manual testing steps

Feature: Money home onboarding stepper

  Scenario: New user sees step 1 (Fund your account)
    Given the user has a Money account with zero balance
    And the user has not previously completed onboarding
    When the user opens the Money tab
    Then the StepperCard is visible showing step 1 of 2
    And the segmented progress bar shows 1 segment filled

  Scenario: Step auto-advances when balance is detected
    Given the user has a Money account with a non-zero mUSD balance
    When the user opens the Money tab
    Then step 1 is automatically skipped
    And the StepperCard shows the next "get card"/"link card" step

  Scenario: User completes all onboarding steps
    Given the user is on the final stepper step
    When the user presses the primary CTA
    Then the StepperCard disappears
    And the Money earnings section is shown without extra top padding

  Scenario: Add money sheet opens from confirmation route
    Given the user taps "Add money"
    Then the Add money screen opens without the bottom tab bar visible

Screenshots/Recordings

Before

After

https://www.loom.com/share/22884085e9184bb899772e3b7dbd7b34

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

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

Medium Risk
Medium risk due to new persisted Redux state and navigation stack restructuring for Money (including a new confirmations root), which could impact onboarding visibility/progress and Money flow routing if miswired.

Overview
Replaces the Money home’s static onboarding card with a Redux-backed multi-step stepper that can auto-advance based on account balance and card-link status, and introduces reusable StepperCard/SegmentedProgressBar components to render step-based onboarding with primary/secondary CTAs.

Adds generic onboarding stepper persistence via onboardingStepperProgress (keyed by stepperId) plus setOnboardingStepperStep and useOnboardingStep, including a dev option to reset Money’s stepper progress.

Refactors Money navigation by splitting out a dedicated Routes.MONEY.CONFIRMATIONS_ROOT + MoneyConfirmationScreenStack (no bottom tab bar) and updates Money deposit/withdraw confirmation routing accordingly; includes associated test updates and copy changes for the new stepper strings.

Reviewed by Cursor Bugbot for commit 1a07b56. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

Copy link
Copy Markdown
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.

@Matt561 Matt561 force-pushed the feat/musd-795-money-home-screen-onboarding-stepper branch from 0f9e1cc to df9dfc0 Compare May 15, 2026 17:18
@Matt561 Matt561 marked this pull request as ready for review May 15, 2026 19:20
@Matt561 Matt561 requested review from a team as code owners May 15, 2026 19:20
Comment thread app/component-library/components-temp/StepperCard/StepperCard.tsx
Comment thread app/components/UI/Money/Views/MoneyHomeView/MoneyHomeView.tsx
Comment thread app/components/UI/Money/components/MoneyOnboardingCard/MoneyOnboardingCard.tsx Outdated
Comment thread app/component-library/components/StepperCard/StepperCard.tsx Outdated
Comment thread app/components/UI/Money/components/MoneyOnboardingCard/MoneyOnboardingCard.tsx Outdated
@Matt561 Matt561 force-pushed the feat/musd-795-money-home-screen-onboarding-stepper branch from 0250e8a to f3185ae Compare May 16, 2026 01:24
Comment thread app/components/UI/Money/components/MoneyOnboardingCard/MoneyOnboardingCard.tsx Outdated
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.92929% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.96%. Comparing base (b90a311) to head (f3185ae).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...y/components/MoneyBalanceCard/MoneyBalanceCard.tsx 40.00% 1 Missing and 2 partials ⚠️
app/actions/user/index.ts 0.00% 1 Missing ⚠️
...I/Money/components/MoneyEarnings/MoneyEarnings.tsx 66.66% 0 Missing and 1 partial ⚠️
...onents/MoneyOnboardingCard/MoneyOnboardingCard.tsx 97.91% 0 Missing and 1 partial ⚠️
...oney/components/MoneyUiDeveloperOptionsSection.tsx 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #30226      +/-   ##
==========================================
+ Coverage   81.95%   81.96%   +0.01%     
==========================================
  Files        5446     5447       +1     
  Lines      145449   145528      +79     
  Branches    33223    33237      +14     
==========================================
+ Hits       119209   119289      +80     
  Misses      18107    18107              
+ Partials     8133     8132       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@brianacnguyen brianacnguyen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since these components are not official yet, can you place them in the components-temp folder? Thank you

@Matt561 Matt561 force-pushed the feat/musd-795-money-home-screen-onboarding-stepper branch from f3185ae to 8e228c0 Compare May 20, 2026 21:25
Comment thread app/components/UI/Money/routes/index.tsx
@Matt561 Matt561 requested a review from brianacnguyen May 20, 2026 22:06
brianacnguyen
brianacnguyen previously approved these changes May 20, 2026
Comment thread app/components/UI/Money/Views/MoneyHomeView/MoneyHomeView.test.tsx
Comment thread app/components/UI/Money/components/MoneyBalanceCard/MoneyBalanceCard.tsx Outdated
Brunonascdev
Brunonascdev previously approved these changes May 21, 2026
Co-authored-by: Matthew Grainger <Matt561@users.noreply.github.com>
Comment thread app/components/UI/Money/Views/MoneyHomeView/MoneyHomeView.tsx

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 85575da. Configure here.

Comment thread app/components/UI/Money/components/MoneyOnboardingCard/MoneyOnboardingCard.tsx Outdated
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeMoney, SmokeConfirmations, SmokeSwap, SmokeWalletPlatform
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: medium
  • AI Confidence: 82%
click to see 🤖 AI reasoning details

E2E Test Selection:
The PR introduces significant changes to the MetaMask Card/Money feature:

  1. SmokeMoney (primary): Extensive changes to the Money home screen onboarding flow:

    • New MoneyOnboardingCard component with multi-step stepper (replaces old single-step card)
    • New reusable StepperCard and SegmentedProgressBar components
    • New useOnboardingStep hook with Redux-backed stepper progress tracking
    • New useUpgradeMoneyAccountOnMount hook
    • Navigation refactoring: MoneyAccountStackGate split into MoneyTabScreenStack + MoneyConfirmationScreenStack
    • New Routes.MONEY.CONFIRMATIONS_ROOT route added
    • Redux state changes: new onboardingStepperProgress field in user reducer/actions/selectors
    • useMoneyAccountCardLinkage exposes new isCardLinkedToMoneyAccount field
    • Minor UI tweaks (padding changes in MoneyActionButtonRow, MoneyEarnings)
  2. SmokeConfirmations: The deposit and withdrawal flows now navigate to Routes.MONEY.CONFIRMATIONS_ROOT instead of Routes.MONEY.ROOT. This is a critical navigation change - the new MoneyConfirmationScreenStack is registered separately in MainNavigator.js outside of HomeTabs, specifically to hide the bottom navbar during confirmations. This change must be validated to ensure confirmations still render correctly.

  3. SmokeSwap: Per SmokeMoney tag description, when Card Add Funds flows execute swaps, SmokeSwap should also be selected.

  4. SmokeWalletPlatform: Per SmokeMoney tag description, when changes touch wallet home or actions entry to buy/sell, SmokeWalletPlatform should also be selected. The Money home view changes could affect wallet platform integration.

The changes are well-scoped to the Money/Card feature area with no impact on unrelated features like accounts, network management, snaps, or browser functionality.

Performance Test Selection:
The changes are focused on the Money/Card onboarding UI and navigation refactoring. While there are new components (StepperCard, SegmentedProgressBar) and Redux state changes, these are lightweight UI components and simple state additions that are unlikely to cause measurable performance regressions. The changes don't affect account list rendering, app startup, login flows, or other performance-sensitive areas covered by the available performance test tags.

View GitHub Actions results

@sonarqubecloud

Copy link
Copy Markdown

@Matt561 Matt561 requested a review from Brunonascdev May 21, 2026 22:05
@Matt561 Matt561 enabled auto-merge May 21, 2026 22:27
@Matt561 Matt561 added the skip-sonar-cloud Only used for bypassing sonar cloud when failures are not relevant to the changes. label May 21, 2026
@Matt561 Matt561 added this pull request to the merge queue May 21, 2026
Merged via the queue into main with commit 46c7b03 May 21, 2026
528 of 539 checks passed
@Matt561 Matt561 deleted the feat/musd-795-money-home-screen-onboarding-stepper branch May 21, 2026 22:49
@github-actions github-actions Bot locked and limited conversation to collaborators May 21, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.80.0 Issue or pull request that will be included in release 7.80.0 label May 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.80.0 Issue or pull request that will be included in release 7.80.0 size-XL skip-sonar-cloud Only used for bypassing sonar cloud when failures are not relevant to the changes. team-earn

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants