Background Sync works in Chrome 49+, Edge 79+, Opera 42+, and Samsung Internet 5.0+. Firefox, Safari, and iOS do not support it. Learn the API and limits.

Prince Dewani
May 1, 2026
Background Sync is a WICG JavaScript API that lets a service worker defer network tasks until the device has stable connectivity. It works in Chrome 49+, Edge 79+, Opera 42+, and Samsung Internet 5.0+ on desktop and Android, while Firefox, Safari on macOS, Safari on iOS, and Internet Explorer do not support it.
This guide covers what Background Sync is, the browsers that support it, the use cases, the difference from Periodic Background Sync, and the known limitations.
Background Sync is a JavaScript API that lets a web app register a task in a service worker so the browser runs it later when the device has stable network. The Web Platform Incubator Community Group at the W3C edits the spec, and the SyncManager interface attached to ServiceWorkerRegistration is the entry point.
Chromium-based desktop and Android browsers ship Background Sync by default, while Firefox and every Safari version leave it out, putting global support at about 76% of users.
Chrome supports Background Sync from Chrome 49 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 4 to 48 did not support the API. Chrome for Android tracks the same desktop versions, so any Chromium build above 49 exposes navigator.serviceWorker registration with a sync property.
Microsoft Edge supports Background Sync from Edge 79 on Windows, macOS, and Linux, after Edge moved to Chromium. Pre-Chromium EdgeHTML versions 12 to 78 never added the API. Edge for Android picks up the same Chromium-based support and exposes the SyncManager interface to installed PWAs.
Firefox does not support Background Sync on Windows, macOS, Linux, or Android. Mozilla has flagged the API as worth prototyping but has not implemented SyncManager. There is no about:config preference that turns it on, and the Bugzilla tracking ticket for sync events has been open for years with no shipped target.
Safari does not support Background Sync on macOS, iPadOS, or iOS in any version, including Safari 26 on iOS 26.5. Apple WebKit has not published a public position on the spec, and there is no Experimental Features toggle that turns it on. iPhone and iPad PWAs must fall back to a server-side queue or retry on next page load.
Opera supports Background Sync from Opera 42 on Windows, macOS, and Linux, and tracks every Chromium release after that. Opera 9 to 41 did not support the API. Opera Mobile for Android also supports it, while Opera Mini stays on a server-rendered pipeline that does not run service workers, so SyncManager is unavailable there.
Samsung Internet supports Background Sync from Samsung Internet 5.0 on Galaxy phones and tablets. Samsung Internet 4 and earlier did not support it. The feature is on by default in modern builds, including Samsung Internet 27, and matches the Chromium upstream behavior for sync events.
The legacy stock Android Browser does not support Background Sync. Chrome for Android supports it from Chrome 49 on. Android WebView, which apps embed for in-app browsing, does not expose SyncManager either, so an Android app that wraps a PWA inside a WebView still loses the sync queue.
Internet Explorer does not support Background Sync in any version. The API depends on service workers, which IE never shipped. Microsoft has retired Internet Explorer 11, so move PWAs to Chromium-based Edge or Chrome for any new work that needs sync events.
Note: Background Sync breaks across Firefox, Safari, and iOS. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
Background Sync fits any flow where the user takes an action that has to reach the server, but the network is not guaranteed at that moment. Production PWAs use it to make offline writes feel reliable.
Background Sync runs once when the network returns after an offline action. Periodic Background Sync runs on a browser-chosen interval to refresh content. They share a service worker design but use different events, permission models, and browser support floors.
| Dimension | Background Sync | Periodic Background Sync |
|---|---|---|
| Trigger | Network returns after an offline registration | Browser-chosen interval, gated by site engagement |
| Service worker event | sync | periodicsync |
| Manager interface | SyncManager on ServiceWorkerRegistration.sync | PeriodicSyncManager on ServiceWorkerRegistration.periodicSync |
| Permission | None required | User must grant the periodic-background-sync permission |
| Browser support | Chrome 49+, Edge 79+, Opera 42+, Samsung Internet 5.0+ | Chrome 80+, Edge 80+, Opera 67+, Samsung Internet 13+ |
| Tag namespace | One-off tags, deduped on register | Long-lived tags that persist until unregister |
| Typical use case | Send a queued message after an offline draft | Refresh news cache or feed once a day |
| Frequency control | Browser retries with backoff until success | Author sets minInterval; browser decides actual cadence |
Background Sync is a small, sharply scoped API. Most of the painful edge cases come from cross-browser gaps, the tight time budget, and the way the browser decides when to fire the sync event.
In my experience, the trickiest failure is silent data loss on iOS. A team I worked with shipped a Background Sync queue for a field-service PWA and assumed iPad users were covered, since the same code worked in Chrome on Android. iPad users lost any write made while offline, because Safari never fires the sync event. The fix was a manual replay loop on the next visibilitychange event, gated by feature detection of registration.sync.
All Background Sync version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance