/ blog

End of an Era

24 June 2020 · Estimated reading time: 4 minutes

Pour one out for Dashboard Widgets. You had a good run!

Relative to everything else going on in the world, this is an insignificant thing. But in a small way, I’m mourning the end of the era of Dashboard Widgets in macOS.

They never really caught on, so you can be forgiven if you have no idea what I’m talking about. Dashboard Widgets were introduced along with Mac OS X 10.4 in April, 2005. They’re little utilities, built with HTML, CSS, and JavaScript (my fortés!) and invoked onto a semi-transparent black overlay by hitting F12.

Screenshot of the default Widgets on Mac OS X
Image courtesy of Mac For Beginners

Like an athlete past his prime, I’ve held on arguably a little too long. I’ve literally put off upgrading my work laptop to the latest version of macOS for the sole reason that I wasn’t willing to give up my widgets.

That damn badge on my System Preferences icon has been taunting me ever since the release of macOS Catalina 8½ months ago. I googled around for how to suppress the daily upgrade notifications, but the badge, that damn badge…it persisted.

That damn badge.
That damn badge.

There are 2 reasons I hold on so dearly to my Widgets.

  1. They’re useful! Most of the widgets I’ve built, I built because I had a need for them. In particular, I’ve used Make-A-Pass and PHP Function Reference at least a few times per week since I built them.
  2. As I say in one of my many blog posts about Widgets, “They’ve brought me minor fame and even more minor fortune. It’s been a lot of fun and I’ve learned a lot through the process.”

From the home of my widgets on my website:

I have had a widget be the featured widget on, another been a staff pick, and a couple of them have hung around the Top 50 list at different times.

My widgets have been distributed with magazines on CD-ROM in France, Germany and Taiwan, written about in MacWorld and other online publications, and been the subject of several podcasts and blog posts.

This post runs a risk of going on for days (I could talk at length about the unit testing framework I built for my Widgets or the system I devised to handle notifying users of new versions or how I localized a Widget and ended up managing translators in various countries, etc. etc.), so I’ll cut it short by saying that that damn badge finally got to me. I’m relenting. By the time you, dear reader, have seen this post, I’ll have upgraded to macOS Catalina and my 15 year flirtation with Dashboard Widgets will be done.

One of the amazing things about Dashboard Widgets is how—because they’re based on plain old HTML, CSS, and JavaScript—they opened up the world of app development to anyone who could cobble together the equivalent of a web page.

Building software has become both easier and harder in the time since Widgets were introduced. The frameworks and tools we have to work with are so much better and easier to use, but the expectations users have are way higher and navigating the various app store ecosystems to try to make a living is at best a precarious proposition.

For that reason alone, Dashboard Widgets will always occupy a warm place in my heart.

I’ll close with a screenshot of most of the Widgets I built over the last decade and a half. You’ll notice that several of them no longer work as designed due to the APIs they relied on having moved or shut down.

This truly is the end of an era.

Most of the Dashboard Widgets I built over the years