← Home ← Code

The "Nuke JS" addon

I wrote a browser extension! It's called Nuke JS, and it nukes any JavaScript (and cookies, and cache) on a per-origin basis. It's made for Firefox, but if you feel this would be nice to have for Chromium, feel free to let me know by opening an issue and I'll have a look.

Why?

I recently stumbled upon some no-script recommendations, and I decided to give it a go. I wanted something really simple to use, and I figured I'd go all the way and installed an addon that disables JS by default. I could then enable it for a domain by clicking the action button.

But, as it turns out; horrible experience on the web. Just, horrendous. The web does not work without JavaScript. I use web apps on a daily basis and most web apps rely heavily on JavaScript to work. Some sites worked okay, actually, but a lot of the time I ended up just enabling JS wherever I went. The primary use-case I had for it was to get past annoying popups and trackers and the like, but these usually just happen when I'm searching for something (usually non-code related) and end up on some obscure blog site. Didn't take me long to draw the conclusion; JavaScript off by default is just not worth it.

Writing the addon

So, I thought, let's give this a go myself! Can't be that hard, can it? It's just, click a button, disable the JS. I've previously experienced the struggle with manifests and permissions, and I still struggled with that, but beyond that, the development experience was smooth sailing.

The entire plugin is essentially a single background script. It listens to when you click the action button, then either nukes the origin if it isn't, or un-nukes it if it was already nuked. Nuked origins then intercept requests for their scripts, canceling them. The nuked origins are kept track of and stored in local addon storage. Lastly, it listens to changes in tabs so that the action button icon can be changed according to what the user is currently looking at.

I haven't pushed it to the addon store just yet, because I'll be testing it first and honestly don't think I'd be adding a whole lot of value to the store by adding it. I made it primarily for fun, and alternatives probably already exists. But for the tech-savvy; feel absolutely free to grab the source code from the GitHub repository.

Happy nuking!