The match() method of the BackgroundFetchRegistration interface returns the first matching BackgroundFetchRecord.


let record = BackgroundFetchRegistration.match(request, options);



The Request for which you are attempting to find records. This can be a Request object or a URL.

options Optional

An object that sets options for the match operation. The available options are:


A boolean value that specifies whether to ignore the query string in the URL. For example, if set to true the ?value=bar part of would be ignored when performing a match. It defaults to false.


A boolean value. When true, prevents matching operations from validating the Request http method. If false (the default) only GET and HEAD are allowed.


A boolean value. When true indicates that the VARY header should be ignored. It defaults to false.

Return value

A Promise that resolves with the first BackgroundFetchRecord that matches the request or undefined if no match is found.

Note: BackgroundFetchRegistration.match() is basically identical to BackgroundFetchRegistration.matchAll(), except that rather than resolving with an array of all matching records, it resolves with the first matching record only.



A DOMException indicating that you called match() when there are no fetches in progress. This state will be reflected by BackgroundFetchRegistration.recordsAvailable being set to false


In this example we look for a record with the url "/ep-5.mp3". If a BackgroundFetchRecord is found then we can return some information about it.

bgFetch.match('/ep-5.mp3').then(async (record) => {
  if (!record) {
    console.log('No record found');

  console.log(`Here's the request`, record.request);
  const response = await record.responseReady;
  console.log(`And here's the response`, response);


Background Fetch
# background-fetch-registration-match

Browser compatibility

BCD tables only load in the browser