wholesale-partner-mobile-app
privateCross-platform mobile app for a wholesale brand's partners to browse the product catalog, search inventory, place orders, and manage their account. Built with Expo/React Native on top of a Shopify storefront, it combines fast product search, custom checkout with saved payment methods, order history, biometric login, and push notifications into a single native experience for iOS and Android.
React NativeExpoTypeScriptShopify Storefront API (GraphQL)StripeAlgoliaFirebaseSentryZendeskReact QueryReact NavigationNativeWind (Tailwind CSS)
Mobile Client (iOS & Android)
- Built with Expo and React Native, distributed to the App Store and Google Play
- Over-the-air updates and staged rollouts managed through Expo Application Services (EAS)
- Deep linking support for navigating directly to products, education content, and account screens
Application Layer
- Screen and navigation structure built with React Navigation (stack, tabs, drawer)
- React Query manages server state, caching, and data fetching throughout the app
- Dedicated data-fetching layer wraps Shopify GraphQL queries for products, collections, customers, and orders
Authentication & Customer Accounts
- Customer login backed by the Shopify Storefront customer API with token-based session storage
- Session tokens persisted securely on-device with support for biometric (Face ID / fingerprint) re-authentication
- Supports a limited "view-only" customer mode in addition to fully authenticated accounts
Product Discovery & Search
- Product catalog, collections, and content sourced from a Shopify storefront
- Algolia powers fast, faceted product search and filtering separate from Shopify's native search
Cart, Checkout & Payments
- Cart state managed against the Shopify Storefront cart API
- Checkout flow creates a Shopify order from the cart
- Payment collection handled through a custom Stripe payment sheet, including Google Pay / Apple Pay support
Backend API Server
- Companion API server brokers requests between the app, Shopify, and Stripe
- Acts as the backend for order/payment operations and push notification delivery
Notifications
- Push notifications registered and delivered via Expo/Firebase Cloud Messaging
- Device push tokens are tied to the authenticated customer for targeted delivery
Support & Engagement
- In-app customer support chat powered by Zendesk
- Analytics and marketing attribution tracked via Firebase Analytics and the Facebook SDK
Observability
- Error and performance monitoring via Sentry, including source map uploads for readable stack traces
- App version, build number, and release channel tracked to correlate crashes with specific releases
- # Why a custom Stripe checkout instead of Shopify Checkout?
- A native, in-app checkout was built instead of redirecting to Shopify's hosted web checkout, so partners can review pricing, addresses, and pay without ever leaving the app. For a seamless, branded experience.
- # Why separate Algolia from Shopify search?
- Shopify remains the source of truth for product and order data, but Algolia is used specifically for product search and filtering, offloading query performance and relevance tuning from the storefront API to a service purpose-built for search.
- # Why biometric-backed session tokens?
- Customer session tokens are stored in secure, encrypted on-device storage and can be unlocked with Face ID/fingerprint, balancing convenience for repeat wholesale customers with protection of account and order data on shared or lost devices.
- # Why a dedicated API server rather than calling Shopify directly for everything
- A separate backend service mediates order and payment operations (and push notification delivery) between the app, Shopify, and Stripe, keeping sensitive operations and business logic out of the client and giving a single place to coordinate multiple third-party services.
- # Why OTA updates via EAS?
- Expo Application Services enables shipping JavaScript/asset updates to staging and production channels without a full app store release cycle, letting bug fixes and content changes reach partners faster while native changes still go through standard store review.