Avoiding Hybrid App Crashes: What to Look For and How to Spot Potential Issues Before They Strike  

No icon

Partner Post - Zebra Technologies - Makes businesses as smart and connected as the world we live in

Posted: October 13, 2015

Rob Galvin

Rob Galvin is the Developer Community Manager of Enterprise Software for Zebra Technologies, where he works closely with Zebra’s RhoMobile Suite.

For mobile users, few things are more frustrating – or less tolerated – than an app that crashes. A study from Compuware has found that users will not put up with a problematic mobile app: 79% report they would retry an app only once or twice if it failed to work during their first time using it, and a mere 16% would go beyond two attempts. Given this pressure to perform, it’s imperative for developers to deliver apps that are as bulletproof as possible. While this is where hybrid apps can really demonstrate their resiliency, even hybrid app development requires a keen eye for issues and a knowledge of crash prevention measures as the app is brought from conception to market.

What should crash-adverse developers look for?

The good news: it’s relatively difficult to “crash” a hybrid application. By nature, hybrid apps run inside a webview that protects them from some of the problems you might typically run into with native apps, such as low level exceptions or memory leaks. What tends to happen in a crash is that a poorly written application will perform some blocking behavior, preventing it from doing anything else when requested. The app appears frozen to the user, and an operating system like Android may detect this and alert the user that the app is not responding. This is generally easy enough to avoid by writing performant applications using common best practices for hybrid application development. Which leads us to….

What are these best practices? Are there crash-inducing issues that can be difficult to identify before they show themselves?

Developers should always use desktop debugging tools like Chrome Inspector to detect issues, from basic JavaScript exceptions to network and performance profiling. Once the app has been fine-tuned on the desktop, tests should be repeated on the target mobile device using the same dev inspector tools (remotely) to identify issues. Having knowledge of these tools and what to look for in application profiling will minimize the issues that end users will see in the app. The most challenging problem to diagnose is a device-specific API issue. Although these cases are rare, the only way to identify them is to run the app on as many device types as possible during testing.

The Mobile App Platform That Clicks

main image

How can a developer adequately test when there are so many combinations of hardware and OS versions out there?

App developers should strive to test on as many versions of the operating system as possible, especially around major versions of releases. Typically though, differences in “minor” releases will not cause new application defects. There are also services online that lease testing time remotely on real hardware. Using these services can greatly reduce issues prior to apps being deployed in the field. Additionally, most APIs for device capabilities do not change across operating system versions. In fact, most changes in OS releases contain new APIs as well as some deprecated APIs, and only very rarely produce “breaking changes.” Although deprecated APIs function, it is still a sign that developers should look to move to another API to plan for future support and minimal disruption in application functionality.

Finally, how do you change the development process to minimize the chance that an app will crash?

The best development process improvements begin with great application design. The design must not only guarantee functionality but also ensure that user perception of application performance is acceptable. To that end, following an agile approach to solidifying the design is critical. Rapid iterations based on end user feedback will ensure that the application design is built for success and thus will result in minimal failures. Test users should also be allowed to report issues within an application framework, and background automatic updates should be provided to ensure that all users are running the latest version.

Bottom line: by conducting a thoughtful development process with an eye for rooting out the causes of potential crashes and a dedication to best practices, app crash incidents are minimized, and users receive a performant app that delivers the dependable functionality they expect and can build trust in.

Find out more on Zebra Technologies website here.