Blog

Building your own Chrome extension

So I read a lot. I follow a bunch of mailing lists and tend to open a ton of potentially interesting links to browser tabs. This adds up to a lot of tabs, sometimes more than a dozen long-form articles. Realistically, there isn’t time to read all of them and still get some work done every day.

As a part of my morning routine, I glance through them, see if they’re promising for further reading, and pick the most interesting and relevant for today. I close the ones that don’t seem worth the time. However, between discarding and reading the articles right away, there is a wide category of articles that might be worth reading later.

The usual solution would be to use a reading list for managing those articles, but I don’t trust my ability to not pile an endless list of articles that I “should” read through. See Andy Matuschak’s note on related thought. I want to work in my browser, where I do most of my reading. To solve this, I’ve used “tab snooze” extensions for chrome, which let me snooze a tab for a specified later date when it’s opened automatically.

Sadly, the published extensions (e.g. Tab Snooze) are either too complicated or abandoned and broken. I wanted to create my own version that’s simple enough for me. Enter Snoozify.

Snoozify

I created my own Chrome extension for snoozing tabs for a specified date in the next two calendar weeks. You can see the code and installation instructions in the Snoozify Github repository.

A screenshot of Snoozify

Screenshot of Snoozify

The extension is barely functional, has almost no visual design, a couple of handfuls of CSS lines, no tests, and no publishing to Chrome’s extension store. But it works for me.

Every morning when I open my browser, the extension automatically opens a couple of links (tabs) that I thought would be interesting on that morning. Then I either read them, close them, or just postpone them further. The same applies to any new links I open from the web and newsletters. It dramatically changes the way I’m handling interesting content.

Andy Matuschack described it like this:

If you recast the destructive operations as “not right now,” they feel completely different. That browser tab isn’t gone—it’ll come back later. Maybe it’s a day later at first, then if I skip it again, a few days later, then maybe a week, and so on, until “not right now” is effectively “close”… but it doesn’t feel nearly so stressful.

– Andy Matuschak, Spaced repetition can lower the stakes around destructive inbox-maintenance operations

This way I can open as many tabs as I like with no stress, no stress of handling infinite reading lists. If I don’t feel like reading anything, I’ll just select all of the tabs and snooze them until the next week.

The experience of building your own Chrome extension

This is the first time I’ve dabbled with Chrome extensions. In total, building this took 10-15 hours. It was fun to learn something new and create something useful.

It was also empowering, customizing existing tools and routines to empower better tools for myself. Geoffrey Litt describes it like this in his article on browser extensions:

Instead of being a passive user of pre-built applications, I can start assembling my own personalized way of using my computer.

– Geoffrey Litt, Browser extensions are underrated: the promise of hackable software

See also his experience on building Twemex, a popular Chrome extension for improving Twitter.

I have a lot of ideas on how to improve Snoozify and take it in new directions. I’d like to implement a “Later”-button to the extension, that just pushes the article a little bit further each time you press it. In the end, the article might pop up next time months later if it’s not that interesting for you right now.

All in all, I have a feeling I’ll be creating browser extensions in the future as well. It’s also related to the feeling of ownership. From a data perspective, I touched on the subject when writing about local-first software. Building your own browser extensions approaches the same topic from a tools perspective.


Get blog updates by adding your email to below. You can also subscribe with RSS.