// service · mobile development
Mobile development
Cross-platform with React Native or native Swift/Kotlin where it matters.
Mobile is harder than the web because the failure modes are louder. We optimize for ship-and-recover-fast: TestFlight on Day 1, an OTA update path, real-device testing on every PR, and a crash dashboard that’s already useful before you have a single user.
Stack & defaults
Framework
React Native + Expo
Native modules
Swift / Kotlin
Language
TypeScript
UI
Tamagui / NativeWind
CI / Deploy
EAS Build + Submit
Observability
Sentry / Datadog
Backend
Firebase / Supabase
Testing
Detox / Maestro
What you receive
iOS + Android binaries on Day 1
TestFlight + Play internal track set up before any feature work begins.
Native module strategy
We pick what's worth a native module (camera, biometrics, BLE) and what can stay JS.
Offline-first data layer
Optimistic UI, queue-and-replay sync, conflict resolution. Standard, not bespoke.
App Store + Play submission
We handle review, screenshots, ASO copy, and the inevitable rejections.
Crash + analytics dashboard
Sentry for crashes, your choice of analytics. Wired by week one.
30-day post-launch support
Hotfix coverage, plus an OTA update flow for non-binary changes.
Timeline
Wk 1–2
Discovery
Brief, ADR, native module audit, prototype on real devices.
Wk 3–7
Foundation
Auth, navigation shell, design system, sync layer.
Wk 8–12
Build
Feature delivery, weekly TestFlight builds.
Wk 13–14
Submission
Store review, ASO, launch readiness.
FAQ
React Native or native?
We default to React Native + Expo. We go native when the product needs it: heavy graphics, deep system integrations, or strict App Store category requirements.
Do you handle App Store + Play submissions?
Yes — including responses to review-team feedback. ASO copy and screenshots are part of the deliverable.
What about updates after launch?
OTA updates via Expo for JS-only changes, full binary releases for native changes. Both are wired into CI.
How do you handle device testing?
We test on real iOS + Android devices on every PR. BrowserStack for the long tail.