Zora Market — Mobile App
The customer-facing iOS and Android app for Zora, built as a single Expo (React Native) codebase. Shoppers browse verified African vendors, search a multi-vendor catalogue, build a cart that survives a killed app, and pay through the native Stripe sheet — with Face ID sign-in, live order tracking over Supabase realtime, push notifications, and over-the-air updates that ship without waiting on a store review.
- Role
- Mobile Engineer — React Native & Expo
- Duration
- 4 months
- Year
- 2026
- Type
- mobile
Problem
Diaspora shoppers buy groceries on their phones, in short bursts, often on patchy connections. A responsive web storefront could not give that audience what it expects from a shopping app: biometric sign-in, a cart that survives the app being killed, browsing that still works when the network drops, push notifications as an order moves, and Apple Pay / Google Pay in a native payment sheet. It also had to make a multi-vendor basket legible — items from several independent stores in one checkout, each shipping from its own address — without the shopper losing track of what comes from where.
Solution
One Expo codebase ships to the App Store and Google Play out of the shared Zora monorepo, reusing the same TypeScript types and API client as the web surfaces so the two can never drift. TanStack Query with an AsyncStorage persister keeps listings warm across relaunches and usable offline; Zustand backed by MMKV holds cart and auth state through restarts; Supabase covers auth, data, storage and realtime order subscriptions; Stripe React Native drives the native payment sheet including platform pay. Face ID / Touch ID is opt-in after a first password sign-in, guests can browse and fill a cart before committing to an account, and the cart groups line items by vendor so multi-store shipping reads clearly. Expo Updates pushes fixes over the air between releases, EAS runs the build and submit pipeline, and Expo Router file-based navigation keeps the tab, modal and deep-link surface consistent across both platforms.