In-Context Undo
November 19, 2015Microcosmographia xxviii: In-Context Undo
Microcosmographia is a newsletter thing about honestly trying to understand design and humanity.
Jon, My partner in UX Launchpad, put his prodigious design insight and experience into a post about why undo has been demoted in mobile interfaces. I tend to agree that for designers, just complaining is not going far enough — we should try to understand why smart people designed the system the way it is, and whether there really is a better way. All while being realistic about all of the pressures and compromises that shipping design teams need to balance.
I hate shake to undo so much. Here’s a sidebar from my book about it:
Shake to Undo is, honestly, kind of terrible. Here’s how it’s supposed to work. In interfaces without a dedicated Undo button, you can flail the device back and forth to summon an alert with an Undo button and a Cancel button. In reality, people who know about it can never seem to reliably produce the right flailing motion to trigger the feature, so they end up repeatedly flapping their device about until the alert finally appears. People who don’t know about it have to live with their mistakes, wondering why the system doesn’t offer an undo feature—until one day when they’re absentmindedly gesticulating with their phone hand or momentarily holding their iPad at their side while they get on the bus, and then suddenly the thing is inexplicably suggesting that they undo their hard work. If you combine all three situations, you have a feature that’s unreliable, undiscoverable, and presumptuous. What would work better? If that were easy to answer, we probably would have seen it by now.
With a couple more years to think about it since having written that, if I’m so smart, what do I think would be better? I took Jon’s exhortation seriously and did some sketching. You know what? I’m still convinced. I don’t think there is a good system-wide standard way to offer undo on smartphones. But! I think there is a next best thing.
A system-wide standard interaction isn’t the only way to solve a problem on a platform. Lots of problems are instead dealt with via recommendations and precedents. For instance, Apple didn’t make a standard iOS document picker because it couldn’t work for every single app’s needs. But they did write advice about how to deal with documents into the iOS Human Interface Guidelines, and they did provide examples of good pickers in their iWork apps. Third-party developers take these precedents and use them to craft document-picking experiences that are right for their own apps.
What I’d like to see Apple encourage in the iOS Human Interface Guidelines, and build into their first-party apps, is in-context undo. If you’re giving visible feedback when a user completes an action, like you should be, you should often be able to build the undo interaction into that feedback.
- A deleted or moved item leaves a temporary gap, inside which is a little Undo button.
- A sent message gets a temporary little X button in the corner for taking it back.
- A changed item gets a Revert button added to its table view until you change another item.
- The keyboard gets an Undo key specifically for undoing typing.
Et cetera. This is more UI design than a simple Undo button that sits in the toolbar, for sure. You need to design many different undo buttons instead of just one, each made to work in its own context. You have to make it really clear, so that users aren’t constantly searching around for whether there might be an undo button hiding somewhere. Once the system is fairly sure you’ve moved on and you aren’t going to undo, it needs to gracefully get out of the way. In most apps it would only save you for one level of undo, not the many levels we have come to expect on the desktop. And of course each individual app’s implementation of the idea could be brilliant or miserable. But I think it’d be worth it. Certainly better than shake shake forever.
Thank You and Be Well
I had another letter all written and almost ready to go, and then Jon went and wrote that post today so I felt like I needed to respond!