Skip to content

feat: implement wallet home onboarding steps functionality#28851

Merged
andrepimenta merged 23 commits into
mainfrom
TMCU-610-shadowbox-checklist-logic
May 8, 2026
Merged

feat: implement wallet home onboarding steps functionality#28851
andrepimenta merged 23 commits into
mainfrom
TMCU-610-shadowbox-checklist-logic

Conversation

@PatrykLucka

@PatrykLucka PatrykLucka commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a wallet home post-onboarding checklist when aggregate balance is empty (homepage v1, mainnet, remote flag walletHomeOnboardingSteps): three steps with hero media and Rive transitions; Add on step 1 (no skip); Skip + primary on steps 2–3. While the tile is active (including the awaiting-balance shell after reopen), AssetDetailsActions stay hidden; the last step can await onCoordinatedFlowExit() so Wallet can run a curtain over the cluster before the flow completes.

Redux: walletHomeOnboardingStepsEligible (set from eligible first-time onboarding success, cleared on wallet delete), walletHomeOnboardingSteps.stepIndex, suppressedReason (null | flow_completed | account_funded). Selectors gate UI; account_funded also clears eligibility in the reducer. Migration 133 backfills the new fields for existing installs (132 on main remains the Tempo token-balance fix only).

Changelog

CHANGELOG entry: Added a postonboarding checklist on the wallet home when balance is empty

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/TMCU-610

Manual testing steps

Feature: Wallet home post-onboarding checklist
  Scenario: Eligible user with zero aggregate balance sees checklist
    Given walletHomeOnboardingSteps enabled and homepage sections v1
    And the user completed onboarding from an eligible success flow with zero aggregate balance
    When they open wallet home on a mainnet
    Then the checklist appears in the balance area and buy/swap/send/receive are hidden
  Scenario: User completes the checklist
    Given the checklist is visible
    When they advance through steps (Add on step 1; Skip or primary on 2–3) through the last step
    Then the normal empty state or balance UI returns and main wallet actions return
  Scenario: Funding suppresses the checklist
    Given the checklist is visible and settled aggregate balance becomes positive
    Then the checklist does not return after balance later goes to zero again

Screenshots/Recordings

Before

After

postonboarding-steps-animations.mov

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

Medium Risk
Adds a new remote-flagged, stateful onboarding flow that changes Wallet home rendering and navigation timing; risk is mainly UI/Redux state coordination and migration/rehydration edge cases.

Overview
Adds a remote-flagged Wallet home post-onboarding checklist that replaces the balance row/empty state with a 3-step tile (fund/trade/notifications) when the user is eligible and has an empty aggregate balance, including Rive-driven transitions and deferred “advance after return” behavior.

Introduces new onboarding Redux state/actions/selectors (walletHomeOnboardingStepsEligible, walletHomeOnboardingSteps, suppression reasons, and a session-only skipInitialBalanceWait), wires eligibility from OnboardingSuccess, persists/migrates the new fields (migration 135), and updates Wallet rendering to hide main action buttons during the flow and coordinate the last-step exit animation.

Updates feature-flag plumbing to gate the flow via a new AB test flag (homeTMCU610AbtestWalletHomePostOnboardingSteps), registers analytics mapping, and adds extensive unit/integration tests plus a Rive mock tweak to support assertions across remounts.

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

@PatrykLucka PatrykLucka self-assigned this Apr 15, 2026
@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.

@metamaskbot metamaskbot added the team-mobile-ux Mobile UX team label Apr 15, 2026
@PatrykLucka PatrykLucka marked this pull request as ready for review April 15, 2026 11:51
@PatrykLucka PatrykLucka requested review from a team as code owners April 15, 2026 11:51
Comment thread locales/languages/en.json Outdated
Comment thread app/components/UI/WalletHomeOnboardingSteps/WalletHomeOnboardingSteps.test.tsx Outdated
@github-actions github-actions Bot added the risk-high Extensive testing required · High bug introduction risk label Apr 15, 2026
Comment thread app/selectors/featureFlagController/homepage/index.ts
@PatrykLucka PatrykLucka force-pushed the TMCU-610-shadowbox-checklist-logic branch from 04edc92 to a867595 Compare April 15, 2026 12:51
@github-actions github-actions Bot added risk-high Extensive testing required · High bug introduction risk and removed risk-high Extensive testing required · High bug introduction risk labels Apr 15, 2026
@github-project-automation github-project-automation Bot moved this to Needs dev review in PR review queue Apr 16, 2026
@github-actions github-actions Bot added risk-high Extensive testing required · High bug introduction risk and removed risk-high Extensive testing required · High bug introduction risk labels Apr 20, 2026
@PatrykLucka PatrykLucka force-pushed the TMCU-610-shadowbox-checklist-logic branch from 5a4dbfc to 5039516 Compare April 20, 2026 16:26
@github-actions github-actions Bot added risk-high Extensive testing required · High bug introduction risk and removed risk-high Extensive testing required · High bug introduction risk labels Apr 20, 2026
@PatrykLucka PatrykLucka force-pushed the TMCU-610-shadowbox-checklist-logic branch from 5039516 to 50cb995 Compare April 22, 2026 10:32
@github-actions github-actions Bot added the risk:medium AI analysis: medium risk label Apr 22, 2026
@PatrykLucka PatrykLucka force-pushed the TMCU-610-shadowbox-checklist-logic branch from 50cb995 to de1acf3 Compare April 22, 2026 10:40
@github-actions

Copy link
Copy Markdown
Contributor

AI PR Analysis

🚫 Merge safe: false | 🟡 Risk: medium

Merge decision: A high-severity bugbot finding flags that selectWalletHomeOnboardingStepsEnabled may bypass the remote feature flag gate (the actual file shows the correct implementation, but the bugbot comment references a hardcoded true — this discrepancy needs resolution). Additionally, the Wallet view now conditionally hides AssetDetailsActions based on the new onboarding steps surface state, which is a behavioral regression risk for all users on the wallet home screen.

  • Wallet home action buttons hidden for all eligible users: AssetDetailsActions (Buy/Swap/Send/Receive) is now conditionally rendered based on hideWalletMainActionsForPostOnboardingSteps state in Wallet/index.tsx. If the onboarding steps surface activates unexpectedly (e.g., due to feature flag or eligibility logic bugs), users lose access to core wallet actions.
  • Feature flag selector ambiguity: Bugbot flagged selectWalletHomeOnboardingStepsEnabled as potentially hardcoded to true, bypassing remote gating. The actual file shows correct implementation, but the discrepancy between the bugbot finding and the code needs verification — if the flag was hardcoded at any point during development, it could affect users in production.
  • AccountGroupBalance now has side effects: The component gained Redux dispatch logic (suppressing onboarding steps when balance > 0) and a callback prop. The useEffect that fires suppressWalletHomeOnboardingSteps('account_funded') runs on every render cycle where balance conditions are met — if hasBalanceFetched or balance selectors behave unexpectedly, this could permanently suppress the flow or fire repeatedly.
  • State migration 132 is additive and safe: Migration correctly adds walletHomeOnboardingStepsEligible: false and walletHomeOnboardingSteps to existing state. No data loss risk.
  • OnboardingSuccess prop change: backedUpSRP boolean prop replaced with successFlow enum in ManualBackupStep3. The old prop is removed — any other callers using backedUpSRP would break at compile time (TypeScript catches this).
  • Placeholder locale strings: trade_subtitle contains placeholder text and notifications_subtitle duplicates fund_subtitle — users will see incorrect copy when the feature is enabled.
  • Dimensions.get static capture: SLIDE_DISTANCE is computed once at module load, which will be wrong on foldable/split-screen devices.
  • Test quality: Four assertions use toBeTruthy() instead of toBeOnTheScreen() per project guidelines.

View run

@PatrykLucka PatrykLucka force-pushed the TMCU-610-shadowbox-checklist-logic branch from de1acf3 to 78d907f Compare April 27, 2026 11:50
@PatrykLucka PatrykLucka requested review from a team as code owners April 27, 2026 11:50
Comment thread app/components/UI/Assets/components/Balance/AccountGroupBalance.tsx Outdated
Comment thread locales/languages/en.json
@PatrykLucka PatrykLucka requested a review from cortisiko May 7, 2026 10:36

@christopherferreira9 christopherferreira9 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.

Looks good for QA

@andrepimenta andrepimenta left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Hey Patryk, we have another huge PR coming in from the RN upgrade, it will be merged today. Any chance we can wait until that is merged and then merge this?

Or could you create perhaps another branch and merge both: #29195 and make sure all checks pass as well?

@github-project-automation github-project-automation Bot moved this from Needs more work from the author to Review finalised - Ready to be merged in PR review queue May 8, 2026
@PatrykLucka PatrykLucka enabled auto-merge May 8, 2026 09:24
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 78.80795% with 96 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.50%. Comparing base (4797726) to head (b8a5fb5).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...tHomeOnboardingSteps/WalletHomeOnboardingSteps.tsx 68.97% 52 Missing and 33 partials ⚠️
app/components/Views/Wallet/index.tsx 83.87% 2 Missing and 3 partials ⚠️
app/reducers/onboarding/index.ts 75.00% 0 Missing and 2 partials ⚠️
app/store/migrations/135.ts 91.30% 2 Missing ⚠️
.../Assets/components/Balance/AccountGroupBalance.tsx 94.44% 1 Missing ⚠️
app/store/persistConfig/index.ts 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #28851      +/-   ##
==========================================
- Coverage   81.50%   81.50%   -0.01%     
==========================================
  Files        5328     5339      +11     
  Lines      141146   141577     +431     
  Branches    32157    32265     +108     
==========================================
+ Hits       115046   115393     +347     
- Misses      18239    18287      +48     
- Partials     7861     7897      +36     

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

@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeAccounts, SmokeConfirmations, SmokeIdentity, SmokeNetworkAbstractions, SmokeNetworkExpansion, SmokeSwap, SmokeStake, SmokeWalletPlatform, SmokeMoney, SmokePerps, SmokeMultiChainAPI, SmokePredictions, SmokeSeedlessOnboarding, SmokeBrowser, SmokeSnaps
  • Selected Performance tags: @PerformanceAccountList, @PerformanceOnboarding, @PerformanceLogin, @PerformanceSwaps, @PerformanceLaunch, @PerformanceAssetLoading, @PerformancePredict, @PerformancePreps
  • Risk Level: high
  • AI Confidence: %
click to see 🤖 AI reasoning details

E2E Test Selection:
Fallback: AI analysis did not complete successfully. Running all tests.

Performance Test Selection:
Fallback: AI analysis did not complete successfully. Running all performance tests.

View GitHub Actions results

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

Comment thread app/components/Views/Wallet/index.tsx
@sonarqubecloud

sonarqubecloud Bot commented May 8, 2026

Copy link
Copy Markdown

@andrepimenta andrepimenta disabled auto-merge May 8, 2026 13:24
@andrepimenta andrepimenta merged commit f8f8c8e into main May 8, 2026
127 of 134 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators May 8, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.78.0 Issue or pull request that will be included in release 7.78.0 label May 8, 2026
@wachunei wachunei deleted the TMCU-610-shadowbox-checklist-logic branch May 8, 2026 14:05
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.78.0 Issue or pull request that will be included in release 7.78.0 risk:medium AI analysis: medium risk risk-high Extensive testing required · High bug introduction risk size-XL team-mobile-ux Mobile UX team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.