Offline and sync
Entries are written locally first and sync when there is a connection. A tunnel is not a reason to lose a day.
What works with no signal
- Writing anything. A reading, a dose, a meal, a note, a journal entry. It goes up when there is a connection.
- Reading what you have already opened. Pages you visited are cached, so they open again.
- Every calculator and timer. They compute in the browser and never needed a server.
- Reminders on Android. They are scheduled by the device, so they arrive whether or not anything is reachable.
What does not
- A page you have never opened. There is nothing cached to show. The app says the page needs a connection rather than rendering an empty state, which would read as you have nothing here.
- A photo you have never viewed. The image is in your Google Drive and has to be fetched once. Until then it shows a placeholder — tap it later, online, and it loads.
- Anything involving somebody else. Messages, community, shares and the professionals directory all need the other side.
- Signing in. The first sign-in needs a connection. An existing session does not.
How a conflict is settled
Two entries on the same day for the same tracker are settled by that tracker's own rule, and it is the same rule the database uses everywhere:
- A tracker that adds up treats the second entry as another reading.
- A tracker that takes the latest treats it as a correction.
So a glass of water logged on the phone and another on the laptop is two glasses, and a weight entered twice is one weight. That is decided by an index in the database rather than by whichever device syncs second.
The banner
When the app knows it is offline it says so, once, in a way you can dismiss. It does not silently drop a write and let you find out later — the honest failure is the whole point of the local-first write.
What is deliberately not built
There is no background sync daemon and no conflict-resolution interface. The model above is simple enough that neither is needed, and both would be surfaces that fail in ways nobody can debug from a screenshot.