You are a mobile developer. You just finished that user story. You are ready to merge. Just a final check with your designers, product owner, your QA guys. They won’t find anything. Confidence level is over 9000. Time to get a coffee while these guys are blown away by your awesome work.

Might be a good idea to hit the release button already and start the upload. Maybe… Or maybe not? 😱 Let’s better try to get some more real certainty before starting to work on the next feature.

Here are some quick checks you can do manually, on a real device and without any extra setup and tooling in roughly 10 minutes.

Run the minified version

While developing a feature, you probably turned off obfuscation or minifying of your code with tools like ProGuard. They would slow down your builds yet another few minutes every time you want to deploy on a device.

But then, when you release your feature to your users, you want those lines of code to be minified and obfuscated. But every now and then, ProGuard will obfuscate things that should be stay as they are. And sometimes it removes methods that are actually in use.

At least once per feature, you should run a build of that minified version and check if everything is still configured as you need it.

Things you will catch:

Misconfigured code obfuscation

Misconfigured minifying

Run it on an old device

So, you probably have some fancy flagship phone in front of you, because that makes developing easier and faster. You also want your app to shine on these phones by using state of the art features and UX as soon as possible.

But, the sad truth is that most of your users won’t have that iPhone X or an Android phone with Oreo. You should take the time to checkout your oldest supported OS version on an old device. In the end, if you officially support them, you should also make sure that your features work fine on them.

Things you will catch:

Layouts that are not adaptive enough

Missing loading states

Crashes and random behaviour (because some old devices never received patches for the bugs that were fixed 3 years ago)

Run it on slow mobile connection

And then you are probably working in an office with a high speed Wifi connection that basically never breaks. Your users instead might be sitting in a subway train, having barely any connection.

To simulate this, iOS devs can switch the mobile connection speed to something bad in the settings menu. On Android, we sadly don’t have this option, but you can also just turn off Wifi and put in a mobile sim card. If your connection is still too good, go into the elevator or garage of you office building.

Things you will catch:

Connections timeouts or requests timeouts that are set too low

Missing loading indicators

Missing empty states

Toggle Flight Mode

And then there are times, where your users don’t have any internet at all. A bit more complicated, but you can still try to make the user experience as nice as possible.

For testing this, you can use the flight mode toggle of your phone. Here are two tricky scenarios:

Turn flight mode on before you even open your screen to test and then switch internet back on. Let the screen load as usual and then turn on flight mode afterwards.

Things you will catch:

Do you show some helpful error state?

Does your app recover smoothly when the connection is back?

Is there some data that you should cache for the user?

Switch Locale

Finally, let’s consider that your app probably runs in more than one country and you provide different languages and locales.

Switching them is very fast on Android and somewhat fast on iOS. So you should give it a try and switch.

Things you will catch:

Is everything translated?

Do the different translations fit into your layout?

Do strings like dates and currencies respond to the Locale change?

Conclusion

To sum it up: Prepare an old phone with a SIM card, set it to one of the languages that your app support but which you usually don’t use, install the obfuscated and minified version of your app on it and start playing around with the flight mode toggle. Your users will be happy that you did it. 😻

I hope this checklist helps you getting your features ready to be released in no time. It helps me getting out of my comfy development zone and back to the common challenges that our customers will have.

If you want more posts like this one, please give it some 👏 or let me know in the comments 👇