Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The fetch() method of the BackgroundFetchManager interface returns a Promise that resolves with a BackgroundFetchRegistration object for a supplied array of URLs and Request objects.


fetch(id, requests)
fetch(id, requests, options)



A developer-defined identifier that can be passed to the other methods to retrieve a backgroundFetchRegistration.


A RequestInfo object or an array of such objects.

options Optional

A BackgroundFetchOptions object.

Return value

A Promise that resolves with a BackgroundFetchRegistration object.



Raised if no request is provided, if the mode of a request is 'no-cors', if no service worker is present, a request already exists with the requested id, or the request fails.

AbortError DOMException

Indicates that the fetch was aborted.

NotAllowedError DOMException

Indicates that user permission has not been granted to make background fetches.


The following examples shows how to use fetch() to create a BackgroundFetchRegistration. With an active service worker, use the ServiceWorkerRegistration.backgroundFetch property to access the BackgroundFetchManager object and call its fetch() method.

navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
      title: "Episode 5: Interesting things.",
      icons: [
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
      downloadTotal: 60 * 1024 * 1024,


Background Fetch
# background-fetch-manager-fetch

Browser compatibility

BCD tables only load in the browser