Background refresh / silent notification

A brief, OS-controlled chance to sync while the app is off screen, sometimes triggered by a push that shows no visible alert.

update the app without showing a notificationquiet push notificationsync while the app is closedwake the app in the backgroundinvisible notificationbackground fetchthe app only updates when I open itbackround refresh

See it

Live demo coming soon

What it is

Background refresh is a short chance to fetch fresh data while the app is not on screen. The OS may schedule it from your request, or a silent notification may suggest that work is ready without displaying an alert. On iOS the common anchors are BGAppRefreshTask and an APNs payload with content-available. On Android, WorkManager handles deferrable sync and an FCM data message can signal new work.

Reach for it when stale data would make the next open feel broken: download the latest messages, refresh a small cache, or reconcile an account. Make the job quick, idempotent, and resumable. Save a cursor after each successful batch so an interrupted run continues instead of starting over.

Gotcha: this is a hint, not an alarm clock. Battery policy, network state, usage patterns, and provider throttling can delay or suppress the work, and on iOS someone who swipes the app out of the app switcher stops both paths until they open it by hand again. Never promise an exact run time, and do not make a silent push the only path for something critical. Reconcile again when the app returns to the foreground.

Ask AI for it

Add idempotent background sync using BGTaskScheduler with BGAppRefreshTask on iOS and WorkManager on Android. Also accept an APNs silent notification with content-available set to 1 and an FCM data message as hints to enqueue the same sync job, never as separate sync implementations. Fetch only changes after a persisted cursor, commit data and the new cursor atomically, stop cleanly when the OS expiration callback fires, and retry transient network failures with bounded backoff. Run the same reconciliation on every foreground transition, since background execution is not guaranteed, and add tests proving duplicate hints cannot duplicate records.

You might have meant

push notification rich pushpush tokenapp lifecyclebackground mode