Design for no signal
Assume the app is offline. Every screen reads from a local database first and shows when data was last synced.
Sync without conflicts
We queue changes locally with timestamps and send them in order when the connection returns. The server resolves conflicts with simple, documented rules.
- Local SQLite store
- Ordered change queue
- Server-side conflict rules
Test on real networks
We test on cheap Android phones over throttled 2G and 3G, because that is what reps actually use.
Key takeaways
- Read local first, sync later
- Make sync state visible to users
- Test on the devices your users carry
