From bd48b6ada55da04c20e3862a279dc60dc8f7463d Mon Sep 17 00:00:00 2001 From: Adam Bar <adamrbar@gmail.com> Date: Thu, 25 Apr 2019 10:02:58 +0200 Subject: [PATCH] Ensure Service Worker is registered even if register is called after load event --- .../template/src/serviceWorker.js | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/packages/react-scripts/template/src/serviceWorker.js b/packages/react-scripts/template/src/serviceWorker.js index f8c7e50c2..50e1c6a88 100644 --- a/packages/react-scripts/template/src/serviceWorker.js +++ b/packages/react-scripts/template/src/serviceWorker.js @@ -31,26 +31,32 @@ export function register(config) { return; } - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + if (document.readyState === 'complete') { + doRegister(config); + } else { + window.addEventListener('load', () => doRegister(config)); + } + } +} - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); +function doRegister(config) => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA' + ); }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); } } -- GitLab