Skip to content

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:

  1. Sync tile → Full Sync
  2. Wait for the progress bar
  3. 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.