Flutter Firebase Last-Write-Wins Sync: Preventing Cloud Edits from Clobbering Local
Building an offline-first task app like ROCIs Tasks means wrestling with data synchronization. You want users to feel productive regardless of connectivity, but that introduces a critical challenge: what happens when the same task is edited on two different devices, or offline, and then comes online? We hit a frustrating wall where our app's startup routine would consistently clobber newer edits made on other devices.
The Mystery: Local Edits Overwriting Cloud Changes
The symptom was subtle but infuriating: a task completed on a tablet would reappear as incomplete on a phone after a fresh app launch. Or, a task edited on the web would revert to an older state on Android. Digging into the logs, we found that TaskSyncManager.uploadLocalDataToCloud() was the culprit. On every launch or sign-in, this function would blindly set() every local task to Firebase.…