5 tips for building usable cross-platform apps
PhoneGap, and the new PhoneGap build, make it really easy to publish an app. So easy, in fact, that if your app is simple enough, you can create and publish within a day. Last week, I did just that on request from a user.
This ease of publishing, however, can lure you into building terrible, unintuitive apps. In working on my side project, I ran into a number of problems, one after another. Until I hit the problems, they were hard to see or easy to justify around. Don’t make my mistakes.
1.) Respect the Android back button
Your sexy HTML5 app has menus, and screens, and all sorts of things the user can play with. And then the user hits the hard back button on their sexy new android device. Your app closes. Despite how sexy your app is, it’s about to get removed. As an iPhone user, this wasn’t immediately obvious to me. I put in soft back buttons, so what’s the issue, right?
Well, Android users really like that button, and when it doesn’t work like they expect, they’re 1.) angry and 2.) confused. You don’t want angry and confused customers, do you? For a good discussion of how the back button is supposed to work and flow, check out the responses to my question on ux.stackexchange.com. The images and descriptions are better than what I could summarize here, and the rabbit hole is deeper than you imagine.
2.) Support landscape
This one through me for a loop, and I’m still working on this for my own app. Why landscape, you ask? I’ve had several users complain that they can’t interact with several parts of the app because of dead spots on their android device. Dead spots? DEAD SPOTS? This isn’t the 90s, no, but the quality of android devices vary wildly, and not everyone replaces their expensive phone-computer-toy-thing when it gets damaged. Supporting landscape mitigates the old-phone issue and expands your user base. The facebook app responds surprisingly well to orientation change, and there’s a lot going on in there. Are you doing more than facebook? I doubt it. Support landscape.
3.) Build feedback directly into your app
But wait, what about those support emails the damned app-stores make me provide? Well, users don’t give a shit about those support addresses. This isn’t unfounded hyperbole; statistically, they really don’t give a shit.
Before I added feedback links into my app, I had a feedback rate of about 0.05%-0.2% of the user base per week. Now, it’s more like 0.2% per day, more than a 7x increase in feedback. This list is the result of direct user feedback, and feedback is good. Does someone think your update is shit and can’t use it any more? Maybe you should find out why. Instead of an uninstall and a 1-star review, respond directly, fix the problems, and keep going. User retention is possible.
4.) Stop explaining and start redesigning
Now that you’ve setup a feedback system for your app (you have already, haven’t you?), users are pestering you about feature X. Feature X is so simple, but you keep needing to explain how it works for some reason. What gives? Well, to be blunt, your design sucks. In my case, my design sucked. Admit to it. Own your failure, and do something about it. In my case, users were getting trapped on an edit screen, not knowing that the save button ended “edit mode”. The concept was bad, and by removing the button and making every edit action end edit mode, the problem reports stopped.
But what about mass editing, you say? Stupid question. That’s not a real use case that aligns with my particular application, and you should be thinking about your own design. Build your application around how people use it, rather than at people using it. Imaginary use cases don’t help your application, so try not to spend time supporting imaginary users. Imaginary users don’t have credit cards or watch your ads, right? Right.
But how do I know what my users are doing…?
5.) ANALYTICS!
Analytics is the only way to really know how users use your app. I tried to skirt around this by relying on feedback, and in a single update, I made the app unusable for a significant portion of the user base. I removed an option which I thought absolutely-at-odds with the purpose of the app, but I was wrong. Really wrong. Angry “You suck at apps” comments wrong.
We already do this for our web applications, so what makes mobile apps different? Analytics tells you what’s used and when, so you know when you’re wrecking your application on an update. And hey, maybe the graphs of user patterns will let you more strategically jam ads into your application, or something like that.
So go forth, brave developer, and build something worth using. Even if you fail…and you might, own your failure and keep going!













