NavigationPreloadManager

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.

Methods

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

Examples

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);
  }());
});

Specifications

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

Browser Compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Basic support
Experimental
Chrome Full support 62Edge Full support 18Firefox No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
IE ? Opera Full support 49Safari ? WebView Android Full support 62Chrome Android Full support 62Edge Mobile ? Firefox Android No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
Opera Android Full support 49Safari iOS ? Samsung Internet Android No support No
enable
Experimental
Chrome Full support 62Edge Full support 18Firefox No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
IE ? Opera Full support 49Safari ? WebView Android Full support 62Chrome Android Full support 62Edge Mobile ? Firefox Android No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
Opera Android Full support 49Safari iOS ? Samsung Internet Android No support No
disable
Experimental
Chrome Full support 62Edge Full support 18Firefox No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
IE ? Opera Full support 49Safari ? WebView Android Full support 62Chrome Android Full support 62Edge Mobile ? Firefox Android No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
Opera Android Full support 49Safari iOS ? Samsung Internet Android No support No
setHeaderValue
Experimental
Chrome Full support 62Edge Full support 18Firefox No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
IE ? Opera Full support 49Safari ? WebView Android Full support 62Chrome Android Full support 62Edge Mobile ? Firefox Android No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
Opera Android Full support 49Safari iOS ? Samsung Internet Android No support No
getState
Experimental
Chrome Full support 62Edge Full support 18Firefox No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
IE ? Opera Full support 49Safari ? WebView Android Full support 62Chrome Android Full support 62Edge Mobile ? Firefox Android No support No
Notes
No support No
Notes
Notes Implementation tracked in bug 1290958
Opera Android Full support 49Safari iOS ? Samsung Internet Android No support No

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
See implementation notes.
See implementation notes.

Document Tags and Contributors

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