The challenge
The client needed a patient-facing health tracking app — appointment booking, vitals logging, medication reminders, and secure messaging with providers. They had a tight budget and couldn't afford separate iOS and Android teams, but their users (patients 40-70 years old) demanded native-quality UX with no compromises.
The hard constraints: GDPR-compliant data handling, offline capability for rural patients, and accessibility compliance (WCAG 2.1 AA) — many users have visual impairments.
Our approach
We chose React Native with Expo for maximum code sharing (92% shared) while maintaining native feel. We designed an offline-first architecture using WatermelonDB for local persistence with background sync — the app works fully without internet and queues all changes for sync when connectivity returns.
Performance was a first-class concern. We set budgets: cold start under 2s, screen transitions under 200ms, and JavaScript bundle under 2MB. We enforced these with automated Detox tests running on every PR.
Key technical decisions:
- Expo SDK 51 with custom native modules for HealthKit/Google Fit integration
- Reanimated 3 for 60fps gesture-driven animations
- Chose NOT to use a cross-platform UI library — we built custom components matching iOS and Android platform conventions
- WatermelonDB for offline-first local database with conflict resolution
What we built
A production health app serving 50k+ patients across iOS and Android:
- Vitals tracking with HealthKit/Google Fit sync and offline support
- Secure appointment booking with real-time availability
- Encrypted provider messaging with push notifications
- Medication reminders with smart scheduling
- Accessibility-first UI passing WCAG 2.1 AA audit
- OTA updates via EAS for instant hotfixes