Before Instapaper Pro 2.2, I got frequent emails from customers who were upset that they had inadvertently tapped the status bar, which scrolls to the top of the article and loses their position. I understood completely, since losing your read position is a form of minor data loss.

Most of them were unaware that this is a systemwide gesture on the iPhone OS: if you tap the status bar in any screen that contains a table view or web view, it scrolls to the top. It’s quite useful if you know about it and expect it, but alarming — and, in Instapaper’s case, destructive — if you don’t.

Application developers can selectively detect or disable this gesture for most scrolling views except web views. The best I could do, and only after a lot of poking around, was to either disable it entirely (which is bad for people who actually use it), or detect when it was initiated but without the ability to selectively prevent it. So, when I detect the status-bar tap, I temporarily store your position, wait for the scroll-to-top to execute, and give you this option in the bottom toolbar for 5 seconds:

Including this wasn’t a clear-cut decision for a few reasons:

  • It differs from systemwide behavior, which is usually the wrong choice.
  • Implementing it without calling undocumented methods was very difficult and took a surprising amount of work. The first submission of Instapaper Pro 2.2 was rejected for an undocumented call for this feature that I had forgotten to remove.
  • There’s no good word to put on that “Cancel” button. (I’ve actually canned features for reasons like this.) “Cancel” itself is problematic — are you canceling the scroll-to-top, which the right button already does? — but it was the best I could come up with for now, and it’s automatically localized to different languages by the OS. (The runner-up was “Stay”, which I may consider switching to in the future.)

But preventing user data loss — in this case, the scroll position — is so important that I had to include it.

So far, this has proven worthwhile: I’ve already received thank-you messages from a numerous users specifically about this feature. I was afraid nobody would notice it, but it looks like that was unfounded.

I elected not to use the “shake to undo” gesture for this feature. Most iPhone owners don’t know about that gesture, and even for those who do, there would still need to be something to tell them that undoing the scroll-to-top was even an option for them in Instapaper.