In our first blog of this series, we covered some of the basics of how to use the Google Play Console to monitor the health of your app release.
We know that the GPC is great at flagging the errors that might be plaguing your app. However, it’s got some serious limitations in how useful its diagnostic features are in helping you resolve those errors. Because of these types of limitations, you’ll likely need to also use a specialized mobile monitoring tool to maintain good app performance.
GPC doesn’t offer any real session context
Perhaps one of the most serious limitations of GPC is that it provides no real context into a user’s experience. Crashes, ANRs, and other issues are reported as aggregate metrics — the percent of users affected, or the total number of unique incidents surfaced. And, while stack traces are available in many cases, these offer no clues about outside factors that could influence the failure of your code.
Many dedicated mobile solutions, like Embrace, Instabug, Datadog, and others, allow you to see an individual error within the context of a user’s journey through your app. Embrace’s User Timeline, for example, lets you see all the network calls, taps, swipes, etc., that preceded an issue, so you know what your users were trying to do and how to reproduce the error they encountered.
There’s very little help for solving network issues
Networking problems are extremely common in the world of mobile because users are often moving in and out of areas of good service or switching between wifi and cellular data. As such, they’re not treated as unique errors, but rather as normal operating conditions that impact the functionality of everything else.
Insight into your app’s potential networking problems is extremely sparse in GPC. In its developer resources, Google suggests that devs try to get to the bottom of networking issues by playing around with the networking settings on an emulator, or turning on airplane mode when you’re testing the app on your device.
In contrast to this, many dedicated mobile monitoring tools will give you very thorough insight into individual network calls and problematic domains. Embrace, for example, provides you with a high-level view of networking health, like the frequency of 400 and 500 response codes among network paths, plus individual network calls within the context of a user’s timeline.
You won’t always have a stack trace
Stack traces are an important tool when trying to troubleshoot a crash or ANR flagged by GPC. However, you might not always have a stack trace available. And, in many cases, a stack trace isn’t all that helpful because the crashing frame in your stack is referencing one library or another, making the root cause difficult to diagnose.
Google’s suggestion in these cases is to try and reproduce the crash manually or to reach out to affected users. The difficulties in doing this are clear, as these methods rely on trial-and-error from the developer and/or a willing customer to be able to offer feedback that is actually helpful.
Many forms of troubleshooting rely on observing a closed, predictable environment
As we’ve touched on earlier in this blog, many GPC resources suggest using an emulator or various system tracing tools, like Android Studio’s profilers, to try and reproduce and resolve issues. This can help a lot, especially in pre-release and debugging stages.
However, the major downfall with these diagnostic tools is that they rely on the developer trying to reproduce an issue in a singular, controlled environment with often better resources in terms of memory, bandwidth, and storage.
The nature of mobile is inherently unpredictable, as there are so many combinations of unique variables that create the conditions under which a user experienced a problem. Having the right context to see exactly how it played out, rather than trying to reproduce in your own controlled environment, is essential.
Better tooling, better diagnostics, and a better app
While the Google Play Console is a great place to start when it comes to checking your releases before launch, its diagnostic limitations means it can only provide so much in terms of testing.
Few apps operate in tight, predictable environments, and so apps with higher standards of performance will want to conduct their own user testing prior to launch to suss out any bugs that might have been missed in a canned test environment.
To make user testing more efficient, and to make it easier to test for and catch bugs during both pre-release and in production, mobile teams can leverage more specialized tooling like Embrace.
Embrace provides high-level insight into your app’s overall stability and performance, including things like crashes, ANRs, UI issues, network health, custom user flows, and more.
Our data-rich issue detection and resolution tool is specially designed for early discovery because we capture the full story for each individual session. That means that you’re able to catch early performance risks as soon as they start impacting even just a handful of people, rather than 5-10% of your entire user base.