Skip to content

feat(money): MUSD-827 Money Home design-review polishes#30437

Merged
Kureev merged 10 commits into
mainfrom
kureev/MUSD-827
May 21, 2026
Merged

feat(money): MUSD-827 Money Home design-review polishes#30437
Kureev merged 10 commits into
mainfrom
kureev/MUSD-827

Conversation

@Kureev

@Kureev Kureev commented May 20, 2026

Copy link
Copy Markdown
Contributor

Description

Applies the seven design-review polishes called out for MUSD-827 on the Money Account Home surface:

  • Item 1MoneyMusdTokenRow subtitle on Home now reads ${balance} • mUSD instead of just mUSD. The row consumes the existing useMoneyAccountBalance hook's musdFiatFormatted field (spendable mUSD only — not the aggregated total).
  • Item 2 — "No MetaMask fee" badge on stables/aTokens rows in the Earn Crypto section → "No fee".
  • Item 3 — "Convert" button label on per-asset rows in the Earn Crypto section → "Add". The locale key name stays convert so call sites are untouched.
  • Item 4 — The move-mUSD row in MoneyAddMoneySheet is hidden when the user has no mUSD balance (totalFiatRaw non-positive or unparseable). An unparseable value fails open and keeps the row visible.
  • Item 5 — When that row is shown, its label changes from "Transfer your $X mUSD" → "Add your $X mUSD". The now-dead move_musd_no_amount key is removed from en.json.
  • Item 8MoneyHowItWorksView description 1 is updated to mention "curated by Veda and Steakhouse Financial" and to drop the em dash; a new description 3 paragraph "Money account is powered by Monad." renders after description 2.
  • Item 10 — The small How-It-Works tile in MoneyCondensedInfoCards swaps mm_how_it_works.png for the new green bar-chart icon exported from Figma (committed separately at the top of the branch as c3b1fc37af).

Items 6, 7, and 9 from the parent design review are intentionally out of scope (handled by MUSD-824, ticketed separately, and out-of-scope per design direction respectively).

Only locales/languages/en.json is touched — non-English translations come from the localization pipeline.

Changelog

CHANGELOG entry: Polished the Money Account Home with the spendable mUSD balance in the token row subtitle, a "No fee" badge and "Add" button on Earn Crypto rows, a hidden "Add your $X mUSD" entry on the Add money sheet when the balance is zero, a refreshed "How it works" description and a new Monad attribution paragraph, and an updated How It Works tile image.

Related issues

Fixes: MUSD-827

Manual testing steps

Feature: MUSD-827 Money Home design-review polishes

  Scenario: mUSD row subtitle on Home
    Given the user has a positive mUSD spendable balance
    When the user opens the Money tab
    Then the mUSD row subtitle reads "$<balance> • mUSD" (e.g. "$1.00 • mUSD")

  Scenario: Earn Crypto badge label
    Given the user has stablecoin or aToken balances eligible for the Earn Crypto section
    When the user scrolls to the Earn Crypto section on Money Home
    Then each subsidised-fee row shows the badge "No fee"
    And the per-asset action button reads "Add"

  Scenario: Add money sheet hides the move-mUSD row when balance is zero
    Given the user has $0 spendable mUSD
    When the user opens the Add money sheet from the Money Home Add button
    Then the sheet shows only "Convert crypto", "Deposit funds", and the disabled "Receive from external wallet" row
    And the "Add your $X mUSD" row is not rendered

  Scenario: Add money sheet shows the move-mUSD row with positive balance
    Given the user has a positive spendable mUSD balance (e.g. $12.34)
    When the user opens the Add money sheet from the Money Home Add button
    Then the third row reads "Add your $12.34 mUSD"

  Scenario: How It Works full screen
    Given the user is on the Money tab
    When the user opens "How it works"
    Then description 1 mentions "curated by Veda and Steakhouse Financial"
    And a third paragraph reads "Money account is powered by Monad."

  Scenario: How It Works tile image
    Given the user is on the Money tab in milestone or empty state
    When the user views the condensed info cards row
    Then the How-It-Works tile shows the new green bar-chart icon

Screenshots/Recordings

Before

After

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
  • I've tested with a power user scenario
  • I've instrumented key operations with Sentry traces for production performance metrics

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
Primarily UI copy/label updates, but it also changes when the Add Money sheet shows the mUSD move/add option based on parsed balances, which could hide a user action if balance/rates are miscomputed.

Overview
Polishes Money surfaces around mUSD and Earn Crypto CTAs: the Money Home mUSD row now displays a formatted spendable balance in its subtitle (via useMusdBalance), and per-token Earn Crypto actions/badges switch to “Add” and “No fee”.

Updates the Add Money sheet to source balances from useMusdBalance, hide the mUSD move/add row when the user has no balance, and format the label as “Add your {amount} mUSD” (falling back to token amount when fiat rates are unavailable). The How It Works screen copy is refreshed and adds a third description paragraph attributing Monad; tests and en.json strings are updated accordingly.

Reviewed by Cursor Bugbot for commit c2ea309. 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.

@Kureev Kureev self-assigned this May 20, 2026
@Kureev Kureev marked this pull request as ready for review May 20, 2026 12:15
@Kureev Kureev requested a review from a team as a code owner May 20, 2026 12:15
vaultApyQuery,
isAggregatedBalanceLoading,
apyPercent,
musdFiatFormatted,

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.

This musdFiatFormatted represents the mUSD held in the Money Account. The related designs in the ticket mention depositing mUSD into the Money account to earn yield. I suspect that we want to display the selected EVM account's mUSD balance here instead. You can access the active EVM account's mUSD balance via the useMusdBalance hook.

Sidenote - The CHOMP API will be automatically taking mUSD held in the Money account and depositing it into the Veda Vault on behalf of the user. This means the Money account's mUSD balance will likely be zero most of the time.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ah, gotcha!

const { styles } = useStyles(styleSheet, {});

const { totalFiatFormatted } = useMoneyAccountBalance();
const { totalFiatFormatted, totalFiatRaw } = useMoneyAccountBalance();

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.

The Add funds bottom sheet designs show the third option as "Add your $X.XX mUSD from your balance. This should be the selected EVM account's mUSD since the CHOMP API automatically sweeps the Money account's mUSD into the Veda Vault.

You can access the selected EVM account's mUSD balance using the useMusdBalance hook.

Currently, this is displaying the mUSD + Veda Vault balance for the Money account (already deposited).

Comment thread locales/languages/en.json Outdated
"description_with_amounts_prefix": "Convert your {{total}} in assets and you could earn up to",
"description_with_amounts_suffix": "in one year.",
"convert": "Convert",
"convert": "Add",

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.

Suggested change
"convert": "Add",
"add": "Add",

…ale key

- MoneyHomeView mUSD subtitle now sources the selected EVM account's
  mUSD fiat balance via useMusdBalance.fiatBalanceAggregatedFormatted
  instead of the Money Account aggregate. The Money Account's mUSD is
  auto-swept into the Veda Vault by CHOMP, so its surface-level balance
  would have been near-zero in practice.
- MoneyAddMoneySheet "Add your \$X mUSD" row uses the same selected EVM
  account source for both the gate and the amount label.
- Rename locale key money.potential_earnings.convert -> potential_earnings.add
  to match its display value, with call-site updates in
  PotentialEarningsTokenRow and the surrounding tests.

@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 a21d606. Configure here.

Comment thread app/components/UI/Money/components/MoneyAddMoneySheet/MoneyAddMoneySheet.tsx Outdated
… add-money sheet

Gate the move-mUSD row on hasMusdBalanceOnAnyChain so a user with mUSD tokens
isn't blocked from moving them just because conversion rates haven't loaded.
When rates are unavailable, the label falls back to the raw token amount
formatted to 2 decimals so it reads "Add your 42.50 mUSD" instead of
"Add your $0.00 mUSD".
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeMoney
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 90%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 14 changed files are scoped exclusively to the Money/Card feature area (app/components/UI/Money/). The changes are:

  1. MoneyHowItWorksView: Added a new description_3 text element with a new test ID - minor UI addition
  2. MoneyMusdTokenRow: Added optional balance prop to display fiat balance in subtitle - backward-compatible prop addition
  3. PotentialEarningsTokenRow: Changed button label from "Convert" to "Add" - text-only change
  4. MoneyHomeView: Added useMusdBalance hook and passes musdFiatFormatted to MoneyMusdTokenRow - minor data wiring
  5. MoneyAddMoneySheet: Removed move_musd_no_amount string key, renamed "Transfer" to "Add" in move_musd label - text changes
  6. locales/en.json: Updated strings for Money feature (potential_earnings.add, no_fee, description_1, description_3, move_musd)
  7. mm_how_it_works.png: New image asset

The SmokeMoney tag covers Card home, Add Funds flows, and ramps - all directly affected by these changes. The MoneyAddMoneySheet changes (label changes) are tested by the card-home-add-funds.spec.ts test. No changes to core controllers, navigation infrastructure, shared components, or other feature areas. No performance-sensitive code paths were modified (no list rendering changes, no new API calls, no state management changes).

Performance Test Selection:
No performance-sensitive changes were made. The changes are limited to UI text updates, a new optional prop for balance display, and a new text paragraph. No list rendering changes, no new API calls, no state management changes, no app startup or initialization changes that would impact performance metrics.

View GitHub Actions results

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.03%. Comparing base (3ee5c69) to head (c2ea309).
⚠️ Report is 50 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff            @@
##             main   #30437    +/-   ##
========================================
  Coverage   82.03%   82.03%            
========================================
  Files        5454     5461     +7     
  Lines      145830   146149   +319     
  Branches    33411    33515   +104     
========================================
+ Hits       119629   119900   +271     
- Misses      18016    18032    +16     
- Partials     8185     8217    +32     

☔ 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.

@sonarqubecloud

Copy link
Copy Markdown

@Kureev Kureev requested a review from Matt561 May 20, 2026 18:20
@Kureev Kureev enabled auto-merge May 21, 2026 14:49
@Kureev Kureev added this pull request to the merge queue May 21, 2026
Merged via the queue into main with commit 49ec292 May 21, 2026
172 of 189 checks passed
@Kureev Kureev deleted the kureev/MUSD-827 branch May 21, 2026 17:33
@github-actions github-actions Bot locked and limited conversation to collaborators May 21, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.79.0 Issue or pull request that will be included in release 7.79.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.79.0 Issue or pull request that will be included in release 7.79.0 size-M team-earn

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants