SmartsApp connects schools and parents through a real-time communication platform. The original build assumed reliable connectivity and treated offline states as edge cases. In the markets we operate in, that assumption was backwards — for a meaningful share of users, intermittent or no connectivity is simply how the app gets used most days.
Every screen needed to work first without a network, and treat a live connection as a bonus rather than a requirement.
We rebuilt the data layer around a local-first model: every action — a message sent, a payment initiated, an attendance record logged — writes to the device first and queues for sync. The UI never blocks on network state.
For payments specifically, we embedded a WebView bridge with a postMessage auth handshake so the parent web portal could be reused without duplicating payment logic natively — reducing both build time and the surface area for bugs.
If a write silently fails and the user finds out three days later, you haven’t built an offline app — you’ve built a data-loss machine with a nice UI.
Beyond the offline architecture, we stood up a proper EAS build pipeline — automated iOS/Android signing, staged rollouts, and OTA updates — so releases stopped being a multi-day manual ritual and became something the team could trust week to week.