Last week Chairman Gruber linked to yet another open source implementation of pull-to-refresh, the fancy reloading action popularized by Tweetie / Twitter for iPhone. When it first appeared in Tweetie 2, it was a neat technology demo that showed some next generation user interactions possible on the iPhone. It was so unique in fact, that it was obvious the feature would be copied. Unfortunately, the amount of copycats has become a bit overwhelming and frustrating.
Pull-to-refresh makes sense in a Twitter client because it gives the impression that you are infinitely scrolling the table view. When you reach the top of the table and pull down it down further, you are rewarded with new tweets1. For many, it feels like a natural interaction. For me, however, it’s the one of the reasons I don’t like or use the official Twitter app. Pull-to-refresh feels much more work to reload a tweet stream than a simple button tap like Twitterrific or Birdfeed2.
If pull-to-refresh stayed exclusive to Twitter for iPhone, I wouldn’t mind it as much, but like most popular things, my disdain grows as I see more poorly implemented or misguided variations of the feature.
Both Gowalla and Foursquare implement the feature to refresh the current status of your friends lists. Unlike Twitter for iPhone, where you’re given more tweets to scroll up and read, Gowalla & Foursquare instead just refresh existing table cells. Other applications I have seen have used the pull-to-refresh motion to sync data between a desktop and iOS application, as well as to lock and unlock device orientation. Not exactly intuitive.
Another application I am a fan of, Reeder, uses the pull-to-refresh motion to allow you to move up and down a list of items in your RSS queue. If you pull the top or bottom of an article past a certain threshold, it will move you to the next item in the list. It’s a neat gimmick and makes more sense than it does in the location applications, but I still find it more of a distraction compared to the up & down buttons that are in Reeder’s bottom toolbar.
In all these cases, the user has the same interaction of scrolling past the bounds of a table, but each different variation offers a different result for the user. I don’t see how that is a good user experience.
I think Marco Arment summed it on Twitter best:
The problem, like gradients, reflections, animations, and PHP, is not that it’s a bad idea but that many won’t use it properly.