Problem
I wanted a habit tracker with zero loading spinners — every tap should feel instant, even offline.
Approach
All writes land in IndexedDB first and render immediately; a background sync queue reconciles with the server when a connection is available, with last-write-wins conflict resolution since habit check-ins rarely collide.
Result
The spinner-based approach is gone entirely, the app feels instant, and the sync layer became the basis for a small local-first pattern I reuse on other side projects.
