Service workers and browser extensions

I quite enjoy a good bug hunt. Just yesterday, myself and Cassie were doing some bugfixing together. As always, the first step was to try to reproduce the problem and then isolate it. Which reminds me…

There’ve been a few occasions when I’ve been trying to debug service worker issues. The problem is rarely in reproducing the issue—it’s isolating the cause that can be frustrating. I try changing a bit of code here, and a bit of code there, in an attempt to zero in on the problem, butwith no luck. Before long, I’m tearing my hair out staring at code that appears to have nothing wrong with it.

And that’s when I remember: browser extensions.

I’m currently using Firefox as my browser, and I have extensions installed to stop tracking and surveillance (these technologies are usually referred to as “ad blockers”, but that’s a bit of a misnomer—the issue isn’t with the ads; it’s with the invasive tracking).

If you think about how a service worker does its magic, it’s as if it’s sitting in the browser, waiting to intercept any requests to a particular domain. It’s like the service worker is the first port of call for any requests the browser makes. But then you add a browser extension. The browser extension is also waiting to intercept certain network requests. Now the extension is the first port of call, and the service worker is relegated to be next in line.

This, apparently, can cause issues (presumably depending on how the browser extension has been coded). In some situations, network requests that should work just fine start to fail, executing the catch clauses of fetch statements in your service worker.

So if you’ve been trying to debug a service worker issue, and you can’t seem to figure out what the problem might be, it’s not necessarily an issue with your code, or even an issue with the browser.

From now on when I’m troubleshooting service worker quirks, I’m going to introduce a step zero, before I even start reproducing or isolating the bug. I’m going to ask myself, “Are there any browser extensions installed?”

I realise that sounds as basic as asking “Are you sure the computer is switched on?” but there’s nothing wrong with having a checklist of basic questions to ask before moving on to the more complicated task of debugging.

I’m going to make a checklist. Then I’m going to use it …every time.

Have you published a response to this? :


Previously on this day

6 years ago I wrote Medieval times

Two German trips in two months.

10 years ago I wrote Talking the talk

Shooting the breeze in MP3s.

10 years ago I wrote Tears in the rain

All of these moments will be lost in time.

11 years ago I wrote </head>

A virtual conference is a real success.

12 years ago I wrote Voices that natter

Presentation: done. Conference: done.

15 years ago I wrote D'ye ken John Peel?

“Then here’s to John Peel with my? heart and soul”

17 years ago I wrote The Chimera Project

I’ve started surfing the web with a new browser. It’s called Chimera, a Mac OS X browser from Mozilla.

17 years ago I wrote Direct Marketing

Don Henley improves his street cred:

18 years ago I wrote Robohouse

Hmm… apparently I’m "Number 5, Goofy robot with life from Short Circuit".