Building a Modular Web3 Rewards Claim System for a FinTech Platform
A modular rewards module for a live FinTech platform that let two on-chain reward providers run in parallel without touching the existing production flow.
- Focus
- Frontend engineering
- Core stack
- Next.js, React
- Contributions
- 6 key areas
- Engagement
- Production delivery
01 — Context
The business challenge
A production financial platform already had one on-chain rewards mechanism live and generating real user activity. Leadership wanted to test a second rewards provider to compare performance and engagement, but the existing system could not be touched. Any bug introduced during the new integration risked breaking reward payouts for active users, which made stability the top priority. The two systems also needed to share the same wallet connection layer, so users would not be asked to reconnect or re-authenticate depending on which rewards program they were using.
02 — Engineering
The approach & technical solution
Rather than bolting the second provider directly onto the existing codebase, I designed a modular service layer that treated each rewards provider as an interchangeable module behind a shared interface. This meant the new integration could be built, tested, and shipped without modifying a single line of the original implementation. Reusable React hooks handled eligibility checks, reward-balance fetching, and claim status independently of which provider was active, while wallet authentication and transaction signing were shared across both systems so users experienced one consistent connection flow regardless of which rewards program they interacted with. Handling the full transaction lifecycle — pending, success, failure, and retry — was central to the work, since on-chain transactions can fail or stay pending for reasons outside the application's control, and users needed clear, honest feedback at every stage rather than a spinner that never resolved.
03 — Delivery
Key technical contributions
Designed a modular service layer that decoupled each rewards provider from shared UI components, so a new provider could be added or removed without touching existing code.
Built reusable React hooks for eligibility checks, reward balance fetching, and on-chain claim transactions.
Integrated wallet authentication and transaction signing shared across both reward systems.
Implemented full transaction lifecycle handling — pending, success, and failure states — with clear feedback at every step.
Added loading skeletons, automatic retries, response caching, and comprehensive error handling to keep the experience resilient to network and RPC issues.
Structured the module so it could be promoted to a permanent feature or removed entirely without affecting the original rewards implementation.
04 — Result
Business outcome
The platform ran both rewards systems in parallel in production without incident, giving the business real usage data to compare providers under identical conditions. Because the second integration was fully isolated, the team retained the option to promote it, retire it, or plug in further providers through the same modular pattern later, turning what could have been a risky one-off integration into a repeatable approach for evaluating future reward partners.
Confidentiality: Client details are anonymized under NDA. Company names, product names, domains, and confidential specifics have been removed or generalized.
Related case studies
Web3 Identity
Creating a Seamless Multi-Wallet Authentication Experience
A seamless, reliable wallet connection experience across multiple wallet providers, chains, and transaction types.
Blockchain Analytics
Designing a High-Performance DeFi Portfolio Dashboard
One dashboard unifying wallet balances, staking positions, and protocol data from multiple independent sources without sacrificing speed.
Related articles
Wallet UX Best Practices for Modern Web3 Apps
Learn how to design wallet connection flows, handle network switching, manage disconnected states, and build trust in Web3 products. Practical patterns for dashboards and DeFi apps with wagmi v2 code examples.
Web3UXWagmiHow to Manage Frontend State for Wallet and On-Chain Data in Web3 Apps
A practical guide to separating wallet state, app state, and server cache state in Web3 dashboards. Covers wagmi, Zustand, TanStack Query, and architecture patterns that scale.
Web3State ManagementReact QueryCommon Web3 Frontend Development Mistakes and How to Avoid Them
The most common Web3 frontend bugs: poor wallet error handling, over-fetching RPC data, weak loading states, wrong network handling, and bad mobile UX. Practical fixes with code examples.
Web3FrontendUX
Need a Web3 dashboard or frontend like this?
I build production-ready Web3 dashboards, DeFi interfaces, and analytics frontends with Next.js, TypeScript, and Tailwind CSS.