BackgroundFetchRegistration: match() method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Note: This feature is available in Web Workers.

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

Syntax

js
match(request)
match(request, options)

Parameters

request

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:

ignoreSearch Optional

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 https://example.com/?value=bar would be ignored when performing a match. It defaults to false.

ignoreMethod Optional

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

ignoreVary Optional

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.

Exceptions

InvalidStateError DOMException

Returned if you call match() when there are no fetches in progress. This state will be reflected by BackgroundFetchRegistration.recordsAvailable being set to false.

Examples

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.

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

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

Specifications

Specification
Background Fetch
# background-fetch-registration-match

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
match
Experimental
Chrome – Full support
Chrome 74 (Release date: 2019-04-23)
footnote Full support
Edge – Full support
Edge 79 (Release date: 2020-01-15)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 62 (Release date: 2019-06-27)
footnote Full support
Safari – No support
Safari
footnote No support
Chrome Android – Full support
Chrome Android 74 (Release date: 2019-04-24)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – Full support
Opera Android 53 (Release date: 2019-07-11)
footnote Full support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – Full support
Samsung Internet 11 (Release date: 2019-12-05)
footnote Full support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.