Hello!

Today I'm thinking about a line from Elon Musk that people are buying Full Self-Driving with a car attached, not the other way around. People buying the outcome (it drives me places) instead of the tool (a car) is going to impact a lot more products, especially software. At a high level, this is how AI upends existing companies. Why does this matter so much for software? Because software teams spent decades making tools people use to get the outcomes they want. Photoshop is a good example. It has thirty-plus years of interface built around manipulating pixels, but when you want to edit a photo you're thinking "make her hair flow to the left," not "select these pixels and apply a transform." The tool sits between you and what you actually want. I've been chasing this idea for a while. Back in 2024, I wrote about how the continuous march of "more features, more UI" leaves people with more functions they don't know about and don't use, and how AI lets you control software with hundreds of features by just telling it what you want to do. Last month I pushed it further: start from the outcome ("here's the news you asked for") and let people engage with the tools later if they want to. Outcome first, tool second. The car example just makes it really concrete. Nobody wants a steering wheel, they want to get somewhere. As we've said for years, we don't call carpenters "hammer users." So if you're building software today, ask yourself: what's the "it drives me places" version of your product? Because if you don't ship that, someone else will, with your tool attached as an afterthought.

How to design a pull to refresh feature?


Let's start with the mechanic itself: pull to refresh is a touch gesture where to load new content, you simply drag a list down with your finger to trigger a refresh action. As you do, not only does the content update but a lot of new screen space gets revealed that was previously off screen. And that screen space often goes unused.

So the first design insight is: don't waste that revealed space. When we built the pull to refresh feature on the Polar app, we used it to reinforce our visual identity. As you pull down to refresh a list, a bit of artwork is revealed, and if you keep pulling, more and more of the art is made visible until you see the complete picture.

In our case, that artwork was a polar bear caught in the act: snorkeling for fish, breaking out, or just hanging around (usually hanging by his underwear, if I'm being honest). We made each update of Polar unique with a continually changing interactive component, so every release featured a new "hidden" character behind the pull to refresh gesture. Users loved tracking him down, and even made polls comparing the bears to debate their favorites.

That little detail does a few useful things. It's another touchpoint for your visual identity. It creates a reason for people to discuss what Jared Spool calls "socially transmitted functionality," meaning features other people tell you about. There's no visual affordance for the pull to refresh action, so you either try it and discover it works, or someone tells you about it. The visual treat gets more people talking.

There's a subtler benefit too. We kept our filtering actions and tabs off screen to keep the focus on lists of content, and making the pull to refresh fun got people using it more, and as a consequence, discovering those off screen features. So the gesture isn't just a refresh, it's a teaching moment.

A few implementation notes from experience. We designed a lot of behavior around single thumb use: pull down to bring back the menu, keep pulling to refresh and reveal the bear, and land right back where you were. When iOS7 came along with default transparency, our previously hidden pull to refresh elements showed through and made header text harder to read. We got around it with blur, blurring the elements below the header to create a sense of depth through translucency without hurting readability.

So the takeaway: pull to refresh is more than a loading spinner. It's empty screen space you're revealing anyway, so give people a reason to smile, a reason to talk, and a nudge toward the rest of your app.