Why DeckPad is a web page, not an app

Shipping a native client would have killed the only feature that matters: running on hardware nobody supports anymore.


Every time I describe DeckPad, someone asks the same question: why isn’t there an iPad app? The App Store is right there. Native would feel nicer. It would certainly be easier to explain.

The answer is that a native app would have made DeckPad impossible.

The device that started this

The first DeckPad client ran on a first-generation iPad mini from 2012. That device is stuck on iOS 9. The App Store still technically works on it, but almost nothing installable will run — modern apps require a minimum iOS version that machine can never reach. Apple stopped signing new builds for it long ago.

So the moment DeckPad becomes an app, the iPad mini is out. And the iPad mini is the entire point.

What old Safari can still do

Here’s the thing nobody expects: the browser on that 2012 tablet is fine. Not fast, but fine. It does flexbox, CSS transitions, touch events, and fetch-adjacent networking well enough to render a grid of buttons and send a tap to a server on the same Wi-Fi.

A button deck is not a demanding piece of software. It draws some tiles, it listens for touches, it sends short messages to your Mac. Every one of those capabilities shipped in browsers over a decade ago.

The bar isn’t “what can a modern browser do.” It’s “what could a browser do in 2015.” That turns out to be almost everything a deck needs.

What you give up

I want to be honest about the tradeoffs, because there are real ones.

What you get

In exchange, the install story collapses to one line: type this address into any browser.

No account. No download. No compatibility matrix. No “requires iPadOS 17.” An Android tablet from 2016, a Kindle Fire, a spare Chromebook, an old phone on a stand — they all work, and they all worked on the first try, because they all have the one thing DeckPad requires.

The drawer full of dead hardware isn’t a constraint I worked around. It’s the product.