Staking & Rewards Flow
Context
As part of Magic’s wallet product ecosystem, users can stake their tokens to earn rewards over time. The core challenge was to design an intuitive, multi-step workflow that guided users through transferring funds, staking, monitoring progress, and claiming rewards — all without breaking the sense of continuity across asynchronous blockchain operations.
Problem
Staking is inherently non-linear. Users must:
- Approve contract interactions
- Initiate on-chain transactions
- Wait for confirmations
- Handle network conditions and wallet state
- Return later to claim rewards or unstake
Design Goals
Interruptions (refresh, navigation, loss of session) risked losing context, leading to confusion and repeated or failed actions. We needed a flow that:
- Maintained stable in‑app state during long‑running operations
- Reflected real-time chain state changes
- Clearly communicated progress and completion
- Avoided overwhelming the user with blockchain details
Constraints & Challenges
- Complex async workflows involving blockchain confirmations
- Wallet state and token balances could change outside the app
- Refreshing the page could reset UI state mid-flow
- Needed to avoid unnecessary re-renders in high-frequency state updates
- Required a UI that was trust-building, not “magic happens here”
My Role
I was the primary engineer responsible for implementing the staking user experience, including the state management, interaction patterns, and progress UI.
Specifically, I
- Partnered with design on the multi‑step staking workflow and built the end‑to‑end frontend implementation
- Implemented shared state with React Context and React Query to coordinate flow state and network data
- Set up GraphQL-driven polling and event-based updates to reflect live reward accrual
- Kept sensitive UI transitions smooth, even during async operations
- Refined messaging and progress indicators so users always knew what was happening and what would come next
Outcome
- Users progressed through staking steps reliably without losing place during async operations or in‑app navigation
- UI behavior remains consistent even under asynchronous network conditions
- Reduced user confusion and support requests related to staking flow interruptions
- The workflow patterns developed here were later reused in other multi-step funding & onboarding flows across the product

