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..692b1ab0f 100644 --- a/src/utils/sw.ts +++ b/src/utils/sw.ts @@ -7,6 +7,15 @@ function registerSW(path: string) { } } +/** Prevent a new ServiceWorker from being installed. */ +function lockSW() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.register = () => { + throw new Error('ServiceWorker already registered.'); + }; + } +} + /** Unregister the ServiceWorker */ // https://stackoverflow.com/a/49771828/8811886 const unregisterSW = async(): Promise => { @@ -22,4 +31,5 @@ const unregisterSW = async(): Promise => { export { registerSW, unregisterSW, + lockSW, }; \ No newline at end of file