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

The NavigationPreloadManager interface of the the Service Worker API provides methods for managing the preloading of resources with a service worker.


Returns a Promise that resolves when navigation preloading is enabled.
Returns a Promise that resolves when navigation preloading is disabled.
Sets the value of the Service-Worker-Navigation-Preload header and returns an empty Promise.
Returns a Promise that resolves to an object with properties indicating whether preload is enabled and the contents of the Service-Worker-Navigation-Preload.


Feature Detecting and Enabling Navigation Preloading 

addEventListener('activate', event => {
  event.waitUntil(async function() {
    if (self.registration.navigationPreload) {
      // Enable navigation preloads!
      await self.registration.navigationPreload.enable();

Using a Preloaded Response

The following example shows the implementation of a fetch event that uses a preloaded response. 

addEventListener('fetch', event => {
  event.respondWith(async function() {
    // Respond from the cache if we can
    const cachedResponse = await caches.match(event.request);
    if (cachedResponse) return cachedResponse;

    // Else, use the preloaded response, if it's there
    const response = await event.preloadResponse;
    if (response) return response;

    // Else try the network.
    return fetch(event.request);


Specification Status Comment
Service Workers
The definition of 'NavigationPreloadManager' in that specification.
Working Draft Initial definition.

Browser Compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support62 ? No1 ?49 ?
enable62 ? No1 ?49 ?
disable62 ? No1 ?49 ?
setHeaderValue62 ? No1 ?49 ?
getState62 ? No1 ?49 ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support6262 ? No149 ? No
enable6262 ? No149 ? No
disable6262 ? No149 ? No
setHeaderValue6262 ? No149 ? No
getState6262 ? No149 ? No

1. Implementation tracked in bug 1290958

Document Tags and Contributors

Contributors to this page: ExE-Boss, jpmedley, ankush_sk
Last updated by: ExE-Boss,