Bugs! No matter how many times coders swear they will stop writing bugs, those ubiquitous creatures keep surfacing. Even with layers of testing defenses, inevitably, bugs make it into production, where users can experience them. The solution? Have contingency plans in place for when they surface. Here are some tips about releasing apps in the inevitably-buggy digital world.
Monitoring
Ensure you know when your app has a bug by monitoring how it’s doing in the field. There are plenty of great services these days for remote monitoring that not only tell you when your app crashes but also give you logs so you can debug it. At an absolute minimum, you’ll want remote crash reporting. Remote logging is also useful for issues that users hit that don’t crash the app.
Rollouts and Beta Testing
One easy way to limit the damage of your buggy app is to release it to fewer people.
Staged rollouts are a great tool for this. If you only push your crashy app to a small amount of users, then you’re limiting the scope of your disappointment while garnering the opportunity to address the issue with minimal blowback.
You should also have a beta-tester program where testers opt to use less stable early releases and provide you with an early-warning system.
Feature Flags
Feature flags allow you to enable or disable features in your application. They’re great for developing new features – i.e. when you release a new feature and something goes wrong, you can disable it without having to put out another release.
Timing
Never release just before a break – i.e. . weekends, holidays, vacations, conferences ect…because when something goes wrong…and it will…breaks over!
The Update Killswitch
In extreme cases, you may have to address a severe or fatal error and the only way to address it is to shut down the app entirely. Having an automatic shut-down notice with a message that you are updating the app lets your users know you are about to release a new and improved version that will be available shortly.
Do NOT take killswitches lightly – using them too frequently could also kill goodwill with your users. However, they’re good to have at the ready, just in case; it’s better to have it and not use it, than not have it and need it.
Ignore the Little Things
Finally: chill out.
Chances are, your app is not controlling life support systems in a critical care unit. If the app crashes once, or something goes minorly wrong, it is not the end of the world.
You would be surprised how forgiving users are for one-off crashes or issues with easy workarounds. As long as they like your app as a whole, they’ll keep using it.
Your first instinct may be to rush another release out the door to fix the bug. Resist the urge! Rushed releases are much more error prone. Unless the issue is critical, take your time to fix it correctly.
We all release buggy apps, but if you go about it in a reasonable manner, you can live to tell the tale. Follow the steps above and you’ll sleep better at night.