feat: add watchlist full empty view#33492
Conversation
|
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. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ 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 a1de3ab. Configure here.
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: The Watchlist feature lives inside the Trending tab (Tokens section), which is covered by SmokeWalletPlatform. The trending smoke specs (tests/smoke-appium/trending/) use the SmokeWalletPlatform tag and test the Trending tab including its subsections. While no existing smoke test directly exercises the watchlist empty-state CTA, the WatchlistFullScreenView is part of the Trending/Tokens flow and SmokeWalletPlatform is the appropriate tag to validate the Trending tab still works correctly after these changes. No other tags are warranted:
The risk is low since these are additive UI changes (new empty-state component) with no modifications to existing critical paths. Performance Test Selection: |
|




Description
Implements ASSETS-3122: the full-screen watchlist empty state with selectable default token cards and an Add N tokens CTA.
Previously, an empty watchlist on the full-screen view rendered nothing below the header. Users with no watchlisted tokens now see a 2-column grid of suggested defaults (all selected by default), can toggle selections via card/checkbox, and add their choices in one action via the existing
useTokenWatchlistAddItemMutation.Defaults (product/Slack-confirmed):
Not in this PR:
Technical notes:
useSuggestedWatchlistItemsQuerywith geo-aware asset IDs and a variant React Query cache key (with-spacexvsbase)WatchlistEmptyCTA,WatchlistDefaultTokenCardbottomsheetfooter, safe-area padding)BadgeWrapper+BadgeNetwork(non-deprecated)Changelog
CHANGELOG entry: Added a suggested-token empty state to the full-screen watchlist so new users can quickly add popular tokens to their watchlist
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-3122
Manual testing steps
To locally mock that you are from 'US' a country where spaceX is blocked you can go to useSuggestedWatchlistItemsQuery and do:
const geolocation = 'US'; //useSelector(getDetectedGeolocation);Screenshots/Recordings
Before
After
Screen.Recording.2026-07-20.at.12.05.08.mov
Empty full view for a non spaceX blocked country
Empty full view for "US"
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Geo-gating for a regulated default token and bulk watchlist writes via mutation need correct behavior across regions; risk is mitigated by fail-closed geo, separate cache keys, and broad unit tests.
Overview
Replaces the blank full-screen watchlist empty state with
WatchlistEmptyCTA: a 2-column grid of suggested defaults (all selected initially), toggles viaWatchlistDefaultTokenCard, and a sticky Add N tokens action wired to the existing add mutation and analyticssource.Defaults move from a fixed ETH/BTC/SOL list to five curated mainnet assets (BTC, ETH, SOL, BNB, PEPE), with optional SpaceX (Ondo) as a sixth when
defaultWatchlistGeosays the user is eligible (blocked countries/regions; unknown geo is fail-closed).useSuggestedWatchlistItemsQueryreads detected geolocation and passessuggestedIncludeSpaceXso React Query cachesbasevswith-spacexseparately.The empty CTA handles loading skeletons, submit/disable/retry when the hydrated watchlist refetch does not populate, and new i18n strings for the add button.
Reviewed by Cursor Bugbot for commit a0828ec. Bugbot is set up for automated code reviews on this repo. Configure here.