PeriodicSyncManager

Draft
This page is not complete.

The PeriodicSyncManager interface of the Web Periodic Background Synchronization API provides a way to register tasks to be run in a service worker at periodic intervals with network connectivity. These tasks are referred to as periodic background sync requests. Access PeriodicSyncManager through the ServiceWorkerRegistration.periodicSync.

Properties

None.

Methods

PeriodicSyncManager.register
Registers a periodic sync request with the browser with the specified tag and options. Returns a Promise that resolves when the registration completes.
PeriodicSyncManager.getTags
Returns a Promise that resolves with a list of strings representing the tags that are currently registered for periodic syncing.
PeriodicSyncManager.unregister
Unregisters the periodic sync request corresponding to the specified tag and returns a Promise that resolves when unregistration completes.

Examples

The following examples show how to use the interface.

Requesting a Periodic Background Sync

The following asynchronous function registers a periodic background sync at a minimum interval of one day from a browsing context:

async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register('fetch-news', {
      minInterval: 24 * 60 * 60 * 1000,
    });
  } catch {
    console.log('Periodic Sync could not be registered!');
  }
}

Verifying a Background Periodic Sync by Tag

This code checks to see if a Periodic Background Sync task with a given tag is registered.

navigator.serviceWorker.ready.then(registration => {
  registration.periodicSync.getTags().then(tags => {
    if (tags.includes('get-latest-news'))
      skipDownloadingLatestNewsOnPageLoad();
  });  
});

Removing a Periodic Background Sync Task

The following code removes a Periodic Background Sync task to stop articles syncing in the background.

navigator.serviceWorker.ready.then(registration => {
  registration.periodicSync.unregister('get-latest-news');
});

Specifications

Specification Status Comment
Web Periodic Background Synchronization
The definition of 'PeriodicSyncManager' in that specification.
Working Draft Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
PeriodicSyncManager
ExperimentalNon-standard
Chrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0
getTags
ExperimentalNon-standard
Chrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0
register
ExperimentalNon-standard
Chrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0
unregister
ExperimentalNon-standard
Chrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.

See also