Seven things all iPhone apps need

If you’ve got an iPhone or iPod Touch you’ve probably downloaded some apps to play with. If you’ve downloaded more than one you’ll quickly realise that some are better than others.
For developers there are lots of choices to make when crafting an app; not only does the app need to be based around a good idea but the app needs to behave in a way that is familiar to iPhone users. If it takes a user more than a minute or so to figure out how your app works chances are they’ll never use it again and will leave you a bad rating.
Both outcomes are bad particularly when you consider that to be successful in the store your app needs to be in one of the ‘top’ something lists.
With that in mind I’ve put together a list of things that in my experience help make an iPhone app great.

An iPhone app should do one thing well

Design your app from the ground up to perform one function well. Reducing the complexity of your app reduces the time it takes to master and the quicker a user can get familiar with your app the more useful it’s likely to be. There are lots of great examples of apps that do one thing well like Things Byline Traffic Australia and Notes.
Performing one task well doesn’t mean you shouldn’t provide configuration options via preferences but your default settings should be appropriate for 90 percent of users.

Make sure it performs all tasks well

The converse of point one is also true. If you’re designing an app that needs to do lots of things make sure that it performs all the functions well. A good example is 1Password. It’s a complex app that stores passwords notes lets you generate random passwords and also provides the ability sync to a desktop client but if you’re familiar with the desktop client you’ll automatically understand the iPhone app and all the functions work as expected.

Use icons and imagery that are familiar

The iPhone interface is great because it’s so visual. Icons mean something – just look at default set of app that Apple ship on the iPhone and you’ll see why. When you’re designing your app make sure that you follow the same rules. Use familiar icons like a plus to add something new or a star for favorites. Only design your own icons if a standard one that users are already familiar with doesn’t exist. Sticking to the basics will mean users will understand your app better.

All apps should autosave

I can’t believe how many apps don’t remember the state they were in on exit. This to me is almost an instant fail especially on a device like the iPhone where phone calls and SMSs can interrupt whatever your user is doing frequently.

Apart from anything else the iPhone is not perfectly stable — you need to plan for the fact that your app probably will crash.

Let me listen to my music

One of the main features of the iPhone is the iPod app. It’s one of the special few apps that Apple allows to run in the background. Make sure that users can continue listening to their music while using your app. Games are especially guilty of doing poorly in this area. If you’re a game developer and you think that your users should listen to the music that came with the game at least give them an option to turn it off.

Where appropriate all apps should be location aware

There’s really no excuse here. If an app isn’t location aware and it could be delete it now. It’s all part of making the experience better for users and if the phone automatically knows where they that’s one less piece of information they need to input.

On the flipside users should be able to enter location info manually in case they want the information your app offers about another area. AroundMe an app I use regularly doesn’t offer this but it should.

Focus on minimal startup time

This is a no-brainer and isn’t just relevant on the iPhone but all mobile platforms. The faster an app starts the more likely it is to be useful. Any app (games excluded) that takes more than between 5-8 seconds to load is too slow. And instead of pretending the app has loaded (Apple give developers the option to show a splash screen while the app is loading) just present a black screen or present the user with a ‘loading’ dialogue.
Can you think of more that I’ve missed? Sound off in the comments.