Testing

Background Sync: Browser Support, Features, Limitations

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.

Author

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.

What is Background Sync?

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.

Which browsers does Background Sync support?

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.

Loading browser compatibility data...

Background Sync compatibility in Chrome

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.

Background Sync compatibility in Edge

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.

Background Sync compatibility in Firefox

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.

Background Sync compatibility in Safari

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.

Background Sync compatibility in Opera

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.

Background Sync compatibility in Samsung Internet

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.

Background Sync compatibility in Android Browser

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.

Background Sync compatibility in Internet Explorer

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

Note: Background Sync breaks across Firefox, Safari, and iOS. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!

What are the use cases of Background Sync?

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.

  • Send chat messages and emails: A mail or chat PWA stores the outgoing message in IndexedDB and registers a sync tag. The service worker fires the actual POST when the network returns, even if the user has closed the tab.
  • Submit form data: A form-heavy app queues the request body when fetch fails. The sync event handler replays the queued request, so users do not have to retry by hand after a tunnel or elevator drop.
  • Upload photos and small files: A social or note-taking app queues a single photo upload. The browser retries with exponential backoff until the file lands on the server, then clears the tag.
  • Update settings and preferences: A dashboard saves a preference change locally and registers a sync. The change reaches the account server even if the user toggles airplane mode while saving.
  • Sync notes and offline edits: An editor like Google Docs uses the sync queue to push the diff once the laptop reconnects to wifi, instead of relying on a fragile setInterval poll.
  • Workbox queue plugin: Workbox ships a BackgroundSyncPlugin that wraps Background Sync around any failed POST. PWAs using Workbox get a drop-in offline retry queue without writing the sync event handler from scratch.
...

What is the difference between Background Sync and Periodic Background Sync?

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.

DimensionBackground SyncPeriodic Background Sync
TriggerNetwork returns after an offline registrationBrowser-chosen interval, gated by site engagement
Service worker eventsyncperiodicsync
Manager interfaceSyncManager on ServiceWorkerRegistration.syncPeriodicSyncManager on ServiceWorkerRegistration.periodicSync
PermissionNone requiredUser must grant the periodic-background-sync permission
Browser supportChrome 49+, Edge 79+, Opera 42+, Samsung Internet 5.0+Chrome 80+, Edge 80+, Opera 67+, Samsung Internet 13+
Tag namespaceOne-off tags, deduped on registerLong-lived tags that persist until unregister
Typical use caseSend a queued message after an offline draftRefresh news cache or feed once a day
Frequency controlBrowser retries with backoff until successAuthor sets minInterval; browser decides actual cadence

What are the known limitations of Background Sync?

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.

  • No Firefox or Safari support: Firefox, Safari on macOS, Safari on iPadOS, and Safari on iOS all lack SyncManager. Sites that need offline replay on those browsers must keep a queue in IndexedDB and replay on the next page load.
  • Secure context only: Background Sync requires HTTPS, like every other service worker API. The localhost origin is treated as secure for development, but plain http origins get a SyncManager that throws on register.
  • Short execution window: The browser keeps the service worker alive for a few minutes per sync attempt, then terminates it. Long uploads or downloads should use the Background Fetch API, which is built for transfers that may take an hour.
  • lastChance flag: The SyncEvent has a lastChance boolean that is true on the final retry. After the last chance, the tag is dropped and the work is lost unless the page registers it again on next visit.
  • No exact retry schedule: The browser owns the retry timing, with exponential backoff and a battery and network heuristic. Pages cannot pin a retry to a wall-clock time, which makes Background Sync unfit for time-critical flows.
  • Tag deduplication: Calling register twice with the same tag is a no-op once the first registration is pending. Pages that need parallel work should generate unique tags or store the payload in IndexedDB and key off that.
  • No fine-grained progress events: The sync event resolves a single Promise with waitUntil. There is no built-in stream of progress, so per-item progress UI has to bridge through postMessage from the service worker.
  • WebView and iOS PWAs lose the queue: Android WebView and PWAs installed from Safari on iOS do not run sync events. An app that wraps a web frontend in either container needs a native fallback queue.

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.

...

Citations

All Background Sync version numbers and platform notes in this guide come from these primary sources:

Author

Prince Dewani is a Community Contributor at TestMu AI, where he manages content strategies around software testing, QA, and test automation. He is certified in Selenium, Cypress, Playwright, Appium, Automation Testing, and KaneAI. Prince has also presented academic research at the international conference PBCON-01. He further specializes in on-page SEO, bridging marketing with core testing technologies. On LinkedIn, he is followed by 4,300+ QA engineers, developers, DevOps experts, tech leaders, and AI-focused practitioners in the global testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

Frequently asked questions

Did you find this page helpful?

More Related Hubs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests