Mobile is a less reliable environment than the fixed web. Things don't always work exactly right. And so failing in a friendly way is really important. I particularly like the way Instagram handles this.
I went on a bike ride this morning out to Lazy Point. I saw a sign that I thought was great. I took a photo of it and shared it to Instagram and Foursquare.
Except, of course, there isn't good cell service out at Lazy Point. Which is a feature not a bug.
So after sharing the photo into Instagram, geolocating it on Foursquare, sharing it out, the upload failed. In many cases, all the work I had put into getting to that point would have been wasted. The app would have just said something like "upload failed" and I'd be back to the starting point.
But in Instagram, you get something that looks like this:
The first time I got this fail message on Instagram and saw that reload icon, I thought "brilliant." That is friendly failing right there.
So I finished my bike ride this morning and when I got home, I took a photo of my phone, then using my home wifi, hit the reload icon, and the photo got posted, shared, and all was good.
There's a lot to learn from the way Instagram handles this experience. They save the action you wanted to do in its entirety, and they keep the app in that state until you choose to try it again, or choose to exit out on your own. All mobile apps should work this way. Many don't.