Case Study

Podium

One React Native core, built for several Saudi storefronts

podium.algarawigroup.com · App Store & Google Play · React Native, TypeScript

An Arabic-first fashion commerce app for Algarawi Group in Saudi Arabia, built as a white-label monorepo: every screen, hook and test lives in one shared core, and each brand is a thin native shell. Podium is live; Shoe Palace and Algarawi Kids are built on the same core and awaiting release, and a fourth brand is planned.

~10K downloads1 live brand · 2 awaiting releaseEN/AR at full key parity290 tests · 78 suitesReact Native 0.86 · React 19Published August 2026
Podium app icon

The white-label problem

Several storefronts that are the same app, differing only in identity.

  • All product code lives in one shared core package; each app is a thin native shell with its own bundle id, Xcode target and Gradle project.
  • The core reaches the active brand through exactly three module aliases (brand, environment, and native specs), so a feature never knows which app it is running inside.
  • A shared change lands in every app at once, so there is nothing to port, sync, or cherry-pick between apps.
  • The whole repo has one typecheck, one test run and one CI pipeline, plus a test that fails the build if an app's dependencies drift from the core.

Commerce

  • Server-backed cart for guests and signed-in users alike, merged on login, with variant and quantity switching.
  • Checkout across cash on delivery, online card payment, in-app wallet, and branch pickup, with guest OTP verification, Saudi National Address validation, coupons, and saved addresses.
  • Orders with a tracking timeline, bill view, and full returns creation and tracking.
  • Wallet and loyalty points: balance, transaction history, points ledger, and redemption.
  • Product listing with a full facet filter sheet (category, brand, colour, size, price, rating), plus search with suggestions, history, and recently viewed.

Built Arabic-first

The app is built for a Saudi audience reading right to left by default.

  • English and Arabic at complete key parity, with a native in-app language switch.
  • RTL is the baseline layout assumption.
  • An error taxonomy that maps transport failures to human copy in both languages, while server-authored business messages pass through untouched.

Release safety

  • A server-driven page-builder home: announcement strip, header tiles, and category navigation are all composed by the backend.
  • Remote config with a kill switch and a force-update gate, so a bad release can be contained without waiting on store review.
  • Over-the-air updates for JavaScript fixes, on top of signed release builds and CI that typechecks, lints, tests, and compiles Android.
  • Deep links over both a custom scheme and https App Links / Universal Links, with consume-once launch handling and share sheets that emit real product URLs.
  • GA4 analytics through Firebase covering the full funnel from screen view to purchase revenue, with crash reporting attributed to the user, and push notifications that route into the same deep-link handler.

Get the app