Gcbuying Mobile
The React Native (Expo) mobile app for the GCBuying fintech platform — gift cards, crypto trading, wallets, and bill payments on one cross-platform codebase, with 100K+ downloads, riding on the platform's GraphQL microservices backend.
Tech Stack
Overview
The Gcbuying mobile app brings the full fintech platform to phones — trading gift cards and cryptocurrency for Naira, managing wallets, and paying bills on the go. It has passed 100K+ downloads and is a primary channel for day-to-day engagement.
I built it as part of my work as lead developer on GCBuying: the product and brand were the founder's, the engineering was mine. Where the main case study covers the 17-service backend, this is the story of the app that sits on top of it.
Two lives — from bare React Native (2022) to a fresh Expo rewrite (2024)
The mobile app had two distinct lives on the same Play Store listing.
The first was a bare React Native app I built in 2022, alongside the Laravel → NestJS microservices rewrite. It gave the platform a phone presence on the same backend the web app was being rebuilt on, and ran for roughly two years — but the bare RN setup carried real cost: native build chains for both platforms, no over-the-air updates, and slower iteration on every feature.
In August 2024 I rewrote it fresh on React Native with Expo — one TypeScript codebase, two stores. Expo's managed tooling collapsed the native-build overhead the bare RN app had carried for two years; OTA updates and EAS builds turned shipping from ceremony into routine.
The payoff is concrete: a single, Expo-managed codebase roughly halved the effort of shipping a feature versus the bare RN setup, and feature parity with the web app became the default rather than the goal.
One backbone, two surfaces
The app is a client of the same backend as the web app — the 17-service NestJS platform, exposed over GraphQL. Using Apollo Client against the platform's code-first GraphQL API meant the mobile app reused the web app's data contracts instead of reinventing them, with Redux Toolkit for local state.
The result is genuine parity: the core flows behave the same on mobile and web because they're driven by the same services.
What the app does
Core fintech flows — gift-card selling, cryptocurrency trading with real-time rates, wallet balances and transaction history, and bill payments. The whole platform, in your pocket.
Engagement and growth — loyalty streaks, referrals, leaderboards, rate alerts, and push notifications, mirroring the growth layer built on the backend. Mobile attribution tracks where installs come from so the growth loops can be measured.
Multi-chain support — assets across multiple chains, including BNB.
Security — biometric login and secure token storage, the table stakes for an app that moves money.
Shipping fast and safe
- Over-the-air updates via Expo's update channel — ship fixes without waiting on app-store review.
- Staged rollouts on the Play Store and App Store, with analytics and crash reporting (Firebase) wired in from the first release.
- Shared observability with the platform, so mobile issues surface alongside the backend instead of in a silo.
Results
- 100K+ downloads across iOS and Android
- ~50% faster feature delivery from a single cross-platform codebase
- Feature parity with the web app, driven by the same GraphQL backend
- Instant fixes through over-the-air updates
Tech stack
- Framework: React Native 0.79, Expo SDK 53, TypeScript
- UI: NativeWind (Tailwind for React Native)
- State & data: Redux Toolkit, Apollo Client (GraphQL)
- Platform services: Firebase (analytics + crash reporting), push notifications, secure storage
- Backend: shares the GCBuying NestJS microservices over GraphQL
- Origin (2022–2024): bare React Native (no Expo) — retired in the August 2024 Expo rewrite