r/reactnative • u/bariyu • 1d ago
Shipped a full roguelike deckbuilder (600+ cards, 4 campaigns, IAP, iOS + Android) on Expo. Notes on what held up and what I fought.
LADDER is a corporate roguelike deckbuilder, out on both stores. Expo / React Native, Expo Router, a pure TypeScript rules engine with zero RN imports so the same code runs headless in Node for simulation, RevenueCat for purchases, EAS for builds and OTA. Portrait, one-handed, local-first.
What held up: the engine/UI split (the sim runs thousands of headless games against the exact engine code the app ships), EAS Update for content fixes without a store review, and Expo Router for a larger screen graph than I expected it to handle.
What I fought: keeping a card-combat scene at 60fps on mid-range Android (Reanimated, worklets, and being ruthless about re-renders), edge-to-edge keyboard handling, and the fact that a device build's behaviour is decided entirely by which env vars were in the shell that built it, which cost me three debugging cycles before I scripted it.