Offline & Sync
How offline mode and cloud synchronization work
CaliMoney is designed to work without an internet connection. All data is written first to the local database (IndexedDB via Dexie) and then synced to Firestore when you're online.
Status indicator
When you have no connection, an Offline badge appears in the header. It disappears as soon as the connection is restored.
The badge waits a couple of seconds before appearing, so a brief drop — for example while you switch to another app and back on your phone — doesn't flash it. When you return to CaliMoney, the connection is checked again straight away.
What you can do offline
| Action | Offline |
|---|---|
| View movements | ✅ From local cache |
| Add movements | ✅ Saved locally |
| Edit movements | ✅ Saved locally |
| Delete movements | ✅ Saved locally |
| Clone movements | ✅ Saved locally |
| Copy a movement as text | ✅ Works offline |
| Edit recurring templates | ✅ Saved locally |
| Turn a suggested subscription into a template | ✅ Found on-device, saved locally |
| Manage categories | ✅ Saved locally |
| View dashboard | ✅ Data from cache |
| Import a CSV/Excel statement | ✅ Read entirely on-device — see Import |
| Import a PDF or photo statement | ❌ Requires connection (AI extraction) |
| Recover deleted movements from a snapshot | ✅ Snapshots live on this device — see Export |
| Sync with cloud | ❌ Requires connection |
Sync queue
Operations performed offline (add, edit, delete — movements, recurring movements and categories) are placed in a sync queue. Pending movements show a clock icon.
When you come back online, CaliMoney automatically syncs all pending operations in the order they were performed.
Pending movements can be edited, cloned and deleted like any other. Editing one updates the queued operation instead of adding another, and deleting one that has never reached the cloud simply removes it from your device.
Install as an app (PWA)
CaliMoney is a Progressive Web App: you can add it to your phone's home screen for a native-app-like experience with immediate offline access.
When you open the app on a mobile browser, an install banner appears at the bottom of the screen.
- Android (Chrome) — tap Install in the banner. The browser will prompt you to confirm.
- iOS (Safari) — the banner shows step-by-step instructions:
- Tap Share ⬆️
- Tap More options
- Tap Add to Home Screen
If you dismiss the banner, it will reappear the next time you open the app in your browser.