diff --git a/src/main.tsx b/src/main.tsx index 1ef21a493..05c38cf73 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -25,11 +25,12 @@ import './styles/tailwind.css'; import './precheck'; import ready from './ready'; -import { registerSW } from './utils/sw'; +import { registerSW, lockSW } from './utils/sw'; if (BuildConfig.NODE_ENV === 'production') { printConsoleWarning(); registerSW('/sw.js'); + lockSW(); } ready(() => { diff --git a/src/utils/sw.ts b/src/utils/sw.ts index 931c5b60c..b5e49c860 100644 --- a/src/utils/sw.ts +++ b/src/utils/sw.ts @@ -1,9 +1,16 @@ /** Register the ServiceWorker. */ function registerSW(path: string) { if ('serviceWorker' in navigator) { - window.addEventListener('load', () => { - navigator.serviceWorker.register(path, { scope: '/' }); - }); + navigator.serviceWorker.register(path, { scope: '/' }); + } +} + +/** Prevent a new ServiceWorker from being installed. */ +function lockSW() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.register = () => { + throw new Error('ServiceWorker already registered.'); + }; } } @@ -22,4 +29,5 @@ const unregisterSW = async(): Promise => { export { registerSW, unregisterSW, + lockSW, }; \ No newline at end of file