Skip to content

Commit 4199268

Browse files
authored
fix: service-worker.js and qwik-prefetch-service-worker.js unregistering (#7781)
* fix: service-worker.js and qwik-prefetch-service-worker.js unregistering * chore: changeset
1 parent 81017f9 commit 4199268

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

.changeset/early-eels-listen.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@builder.io/qwik': patch
3+
'@builder.io/qwik-city': patch
4+
---
5+
6+
PATCH: Keeping the service worker components now properly unregisters them.

packages/qwik-city/src/runtime/src/sw-register.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@
22

33
(() => {
44
if ('serviceWorker' in navigator) {
5-
navigator.serviceWorker.register('__url').catch((e) => console.error(e));
5+
navigator.serviceWorker.getRegistrations().then((regs) => {
6+
for (const reg of regs) {
7+
const url = '__url'.split('/').pop();
8+
if (reg.active?.scriptURL.endsWith(url || 'service-worker.js')) {
9+
reg.unregister().catch(console.error);
10+
}
11+
}
12+
});
613
} else {
714
// eslint-disable-next-line no-console
815
console.log('Service worker not supported in this browser.');

packages/qwik/src/core/components/prefetch.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const PrefetchServiceWorker = (opts: {
4242
// the file 'qwik-prefetch-service-worker.js' is not located in /build/
4343
resolvedOpts.path = baseUrl + resolvedOpts.path;
4444
}
45-
let code = PREFETCH_CODE.replace("'_URL_'", JSON.stringify(resolvedOpts.path));
45+
let code = PREFETCH_CODE.replace('"_URL_"', JSON.stringify(resolvedOpts.path.split('/').pop()));
4646
if (!isDev) {
4747
// consecutive spaces are indentation
4848
code = code.replaceAll(/\s\s+/gm, '');

0 commit comments

Comments
 (0)