Answer
Persist data locally (SQLite) as the source of truth for the UI, queue local changes with a pending/dirty flag, and reconcile with the server when Connectivity reports access. Use timestamps or version columns for conflict detection and a defined resolution policy (last-write-wins or merge). Sync in a background-safe service.
if (Connectivity.Current.NetworkAccess == NetworkAccess.Internet)
await _syncService.PushPendingAsync(); // then pull server changesReal-world example A field-service app lets technicians work fully offline; edits queue locally and sync automatically when signal returns.