Login & Sync (Mobile)¶
How authentication and data sync work in the mobile app.
Login¶
The mobile app uses the same email + password as the web. There's no separate mobile account.
After successful login the app stores a Bearer token in the device's secure keystore (iOS Keychain, Android Keystore). The token has an expiration — when it expires, the app silently refreshes it on the next API call.
If your password changes on the web, the existing mobile token still works until expiration. To force re-auth on mobile after a password change, use Profile → Sign Out and log in again.
What gets cached locally¶
The mobile app stores an offline copy of:
- Your aircraft list
- Logbook entries (last 12 months by default; full history on demand)
- Open squawks
- Inspection due-dates
- Reservations (next 30 days)
- The bundled US airport database (~16,000 airports for offline lookup)
- Your tile preferences
Things that are NOT cached locally:
- Engine monitor charts (always fetched live)
- Aircraft photos (loaded on demand)
- PDF documents (logbook entries' attachments — viewed in-place via download)
- Any data over 12 months old (loaded on demand)
Sync model¶
Sync is bidirectional but not real-time. The app pulls fresh data from the server when:
- You open a tile that uses cached data (lazy refresh, max once per minute)
- You pull-to-refresh on a list view
- A push notification triggers a targeted refresh
- You hit Sync → Pull in the Sync screen
- The sync engine wakes up periodically (~every 15 minutes when foregrounded)
It pushes local changes to the server when:
- You save a new logbook entry, squawk, etc.
- You hit Sync → Push explicitly
- The sync engine fires an outbound batch (~every 5 minutes when foregrounded)
You can verify sync state at any time via Sync in the side menu.
Conflict resolution¶
If you edit the same record on web and mobile while offline, the rule is
last-write-wins by updated_at timestamp. The losing edit goes into the
sync engine's "rejected changes" log, which you can review in Sync → Rejected.
Rare but possible — e.g., editing a logbook entry on the web at home while the mobile app is in airplane-mode mid-flight. When the mobile reconnects, the web edit wins (it's newer), and the mobile edit is preserved in rejected.
Force a full refresh¶
If something looks stale and pull-to-refresh doesn't help:
- Sync tile → Full Sync
- Wait for the progress bar
- The app drops local cache and pulls everything fresh
Full sync downloads more data than incremental, so prefer incremental when you're on cellular.
Sign out¶
Profile → Sign Out clears the auth token and the local data cache. Your data remains intact on the server.
Don't sign out before a flight
If you sign out and then take off into an area without cell service, the cached data is gone — you'll have to wait until you land and sign back in. Stay signed in unless you're handing the device to someone else.