feat(wallet): onboarding funnel + empty state - #561
Merged
Merged
Conversation
bmc08gt
force-pushed
the
feat/v2-ui-onboarding-funnel
branch
from
August 12, 2026 14:33
7e66b4d to
c4bc01d
Compare
bmc08gt
force-pushed
the
feat/v2-ui-onboarding-funnel
branch
from
August 12, 2026 14:44
c4bc01d to
4e758bd
Compare
Add the 'added money' and 'tipped' milestones backing the funnel, derived from event history (not current balance) so they stay complete after a spend: - hasEverAddedMoney: a completed deposit/buy activity exists. - hasEverTipped: a self-sent TIPPED conversation message exists. Exposed on Session as hasEverAddedMoney()/hasEverTipped().
Add the 'Send Your First Tip' funnel (Add Money / Scan a Tip Card steps, a completed-count, green checks + dimming when done) and show it on the v2 Wallet whenever onboarding is incomplete. It doubles as the empty state — a new user sees the $0 header + funnel (no more 'No Balance Yet' screen), matching Figma — and sits above the card stack once funded. Add Money opens deposit options; Scan a Tip Card switches to the Scan tab. The collapse threshold now measures the header+funnel block so the deck still tightens once it reaches the top.
bmc08gt
force-pushed
the
feat/v2-ui-onboarding-funnel
branch
from
August 12, 2026 14:53
4e758bd to
0267658
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Phase 3 of the v2 UI port (Android #1209, Figma 8966:1486): the "Send Your First Tip" onboarding funnel, which doubles as the wallet empty state.
Stacked on #560 (token cards) — review/merge that first; this targets it.
Changes
OnboardingFunnelView— title + completed-count, then a card of steps (Add Money / Scan a Tip Card) with icon, title, subtitle, and chevron; completed steps show a green check, dim to 38%, and stop responding to taps. Ported from Android'sOnboardingFunnel.Session.hasEverAddedMoney()/hasEverTipped(),Database+Onboarding): derived from event history, not current balance, so a milestone stays complete after the balance is spent —TIPPEDconversation message exists (received tips don't count).$0header + funnel; once funded the funnel sits above the card stack, and it disappears when both milestones are complete. "Add Money" opens deposit options; "Scan a Tip Card" switches to the Scan tab.Testing
xcodebuild build: SUCCEEDED.$0header, "Send Your First Tip" 0/2, both steps with correct icons/copy/chevrons — matches Figma 8966:1486. The test account currently has no balance/history, which naturally exercises the empty state (both milestones false → funnel shown). The funnel-above-cards and hidden-when-complete states follow from the same conditionals.