Identification Please — Introducing Twenty One

Two weeks ago, I went over to Dogfish Head’s website to check the availability of their 20th anniversary beer. Before I could do anything, a familiar dialog appeared over the content of the website, forcing me to input my date of birth. I’ve seen these age gates (in the parlance of web developers) hundreds of times before, but it really bothered me this time. I was on my iPhone in an area with really bad data service, and having to type into the birthday field made the page zoom into crazy dimensions. Not to mention, I knew that I’d have to submit this form that would execute a JavaScript and re-download the entire page again. Now my birthday is sitting on my phone somewhere in a cookie unsecured.

This is not good UX, and it’s not legally required in the USA.

I drafted a tweet saying I needed Crystal for brewery websites, and then thought to myself I can make Crystal for brewery websites pretty quickly…so I never posted the tweet, drove home empty handed, and wrote Twenty One.

Twenty One makes use of WebKit content blockers to block JavaScript and hide parts of websites in an efficient manner. The app downloads a constantly-updated list in the background and applies the rules to Safari on iOS. The same rules can be used in Safari on OS X via an extension, but currently the entire extension must be updated. Because it only uses content blockers, not all websites can have their age gates blocked, such as those that make use of cookies and redirects. I’ve publicly shamed documented those breweries.

Twenty One is free for iOS and OS X, and is additionally open-source. If you’d like to support continued development, head on over to GitHub and request your favorite brewery, submit a pull request with your blocking rules, or check out my iOS Untappd client, Tappd That.