You step into the subway. Five stops, 17 minutes, no signal. By the time you come up, you've answered three emails, drafted a Slack reply, and the timer should still be running on the Acme call. Most apps would have lost or paused the entry. Timesheet does not.
The mobile apps track time fully offline. Entries are written to a local database with their actual start and end times. When the device reconnects, the cloud receives the changes, the other devices pull them down, and everything lines up without you doing anything.
What Offline Actually Means
Offline-capable means three things:
- Read works without internet. Past entries, project lists, tags, rates, contracts: all available from the local database the app maintains on the device.
- Write works without internet. Starting and stopping timers, creating entries with explicit start and end times, editing, deleting, and attaching pauses or expenses all save locally and persist across app restarts.
- Conflicts resolve cleanly. When the device finally reconnects, the local changes are uploaded; cloud changes from other devices are downloaded; differences are reconciled on a per-entry basis.
The user-facing promise: the app does not block, does not lose data, and does not throw errors at you because of a missing connection.
What Lives on the Device
Each Timesheet mobile app keeps a local database (Room on Android, GRDB on iOS). It holds:
- All your projects, tags, rates, and (on Business plans) contracts
- All time entries from at least the last 90 days
- All pauses associated with those entries
- Pending changes waiting to upload
- The current state of the timer
The web app and browser extension do not have this database. They require an internet connection to work.
How Sync Actually Behaves
There are three distinct paths the data can take:
Online: write-through
When the device has a connection, each save is written locally first, then sent to the cloud within seconds. Other devices receive the change on their next sync.
Offline: write-local, queue-for-later
When the device has no connection, each save is written locally only. The app records the change as "pending upload" and queues it.
Reconnect: catch-up sync
The moment the device reconnects (Wi-Fi, cellular, or hotspot), the app:
- Uploads pending local changes in the order they were made
- Downloads any changes made on other devices since the last sync
- Merges everything into the local database
- Updates the active timer if a newer state exists in the cloud
This usually happens in under five seconds, even for hundreds of pending entries.
Conflict Resolution: What Wins
Most apps that offer offline mode hand-wave the conflict question. Here's the actual behavior:
One Entry, Two Devices
If you edit the same entry on the phone (offline) and on the web (online), the cloud accepts the write that arrives second and records both versions in the audit log (Business plan). The local copy on the phone is overwritten with the cloud's final state on the next sync. You will see a small "synced from cloud" indicator on the entry for a few seconds after the merge.
In practice, this case is rare. The audit log makes it traceable when it does happen.
The Active Timer
Only one timer can be running per user at a time. If the watch is running a timer and the phone independently starts a different one while disconnected, the most recent start time wins on reconnect. The earlier timer closes automatically with its last-known elapsed value.
Deletes
Deletes use a "tombstone" mechanism: a deleted entry stays in the local database with a deleted flag until the cloud confirms the delete. This prevents a delete on device A from "resurrecting" on device B that hasn't synced yet.
Where the Plans Matter
| Plan | Offline tracking | Cloud sync | Multi-device |
|---|---|---|---|
| Basic (free) | Yes | No | No |
| Plus | Yes | Yes | Yes |
| Pro | Yes | Yes | Yes |
| Business | Yes | Yes | Yes |
On the free Basic plan, the phone tracks offline, but there is no cloud and no other device to sync with. Backups are local-only (and via the manual Export Excel / CSV feature).
Plus and up adds the cloud and multi-device sync. The Apple Watch sync, the iPad sync, and the web sync all light up.
Real Scenarios
The Subway Commute
Phone tracks an entry from 08:15 to 08:32 on "Reading · Industry News" while underground. Entry saves locally. At 08:35 the phone catches LTE again, the entry uploads in under a second.
The Flight
A six-hour flight. You start a timer on "Travel · Acme Visit" at takeoff. You also draft three new entries for last week, hand-typed on the iPad. All four entries save locally to both devices. On the ground, both devices reconnect and exchange data. Within ten seconds, the laptop's web app shows all four.
The Basement Server Room
A technician spends two hours in a server room with no cellular signal. The watch starts the timer on arrival via NFC, the phone (in the locker) is offline. The watch tracks locally. On return, the phone and the watch sync directly over Bluetooth, then both push to the cloud.
The Coffee Shop Wi-Fi Drop
You're working at a coffee shop. The Wi-Fi drops for 90 seconds in the middle of a Pomodoro. The desktop app keeps running the timer. The drop has no visible effect; the entry has the correct start and end times.
Battery and Storage
Offline mode is light on resources:
- Storage: the local database fits in under 50 MB for most users, including all entries from the past year
- Battery: background sync uses iOS's Background Tasks API and Android's WorkManager, both of which throttle aggressively to preserve battery; impact is usually under one percent per day
- Network: when the device reconnects, sync is a delta exchange (only what changed), not a full re-download
What Happens If the Database Gets Corrupted
The mobile apps include a recovery routine that runs on app launch. If the local database is corrupted (very rare, usually a sign of low storage or a forced power-off mid-write):
- The app detects the corruption
- It backs up the corrupt file for support analysis
- It pulls a fresh copy of the data from the cloud (on Plus and up)
- The timer state is restored from the cloud as well
On Basic (no cloud), corruption recovery is limited. The app attempts to repair, and unrepairable entries are quarantined in a "needs review" list.
Common Patterns That Work Well
Trust the offline mode. The most common mistake is to delay or skip tracking because "I'll do it once I'm back online." The app handles offline; you don't need to.
Don't bounce between devices mid-entry. Stopping a timer on the watch and editing the resulting entry on the iPad while offline mostly works, but the audit log gets noisier. Pick a device for the day.
Sync proactively before long offline stretches. Right before a flight, open the app once, let it confirm "All synced." This guarantees the device starts the offline stretch with the freshest data.
Check the sync indicator. A small cloud icon in the corner shows the sync status: synced, syncing, queued, or offline. The icon changes the moment something is pending.
Common Questions
How long can the phone be offline before it stops working? Indefinitely. The database is local; it doesn't expire. Some users go weeks offline; sync still catches up cleanly on reconnect.
Does the watch sync directly or through the phone? Both. Apple Watch and iPhone sync directly over Bluetooth when both are nearby. The iPhone also pushes to the cloud when it has internet. A cellular watch pushes to the cloud directly.
Are running timers lost when the app is force-closed? No. The timer state is persisted to the local database every few seconds. Reopening the app picks up where it left off.
Can two devices be online with conflicting timer states? Briefly, yes, but the conflict resolution rules pick a winner within seconds. The losing timer closes with its last-known elapsed value as a finished entry.
What about the browser extension? The Plasmo browser extension is an online-only client. It reads from the cloud and writes to the cloud. There is no local database in the extension. Use the mobile apps for offline coverage.
Summary
- Mobile apps fully support offline tracking, with concrete start and end times on every entry
- Local writes queue and upload the moment the device reconnects
- Conflict resolution is per-entry, with the audit log capturing both versions on Business
- Offline tracking is on every plan; cloud sync requires Plus
- The web app and browser extension are online-only
Where to Go Next
- Use Timesheet across all your devices with cloud sync for the full multi-device picture
- Track from your Apple Watch for the wrist-and-pocket combo
- Automate time tracking with geofence, Wi-Fi, and NFC for the triggers that work even when the data lane doesn't