10 Things You Need to Do to Keep Your Game’s ANRs in Check
by Karolina Cooper
You may be wondering why your game’s organic installs have recently been going down. Amongst many reasons, there is one factor that has been growing in importance in recent months as more case studies emerge about its impact on Organic Installs. It’s the ANR (Application Not Responding) rate on Google Play.
WHAT GOOD LOOKS LIKE
Google is very specific about what they consider to be a good ANR rate. It needs to be below 0.47. If your game’s peer ANR rate is even lower, you should strive to achieve the peer benchmark.
This information can be viewed in the Quality section of the Google Play Console, under Android Vitals. There you can see what your current ANR is, review historic performance and filter by app version, Android OS version, and device models.
Quick tip: the ANR data gets erased after 90 days, so if you want to track improvement over time you need to capture it yourself.
WHY IT’S IMPORTANT TO KEEP ANRs LOW
Google’s algorithm can “reward” or “punish” games based on ANR, which has become apparent in some of the games in our portfolio. We can see organic traffic flatline or decrease as a result of increasing ANR, as presented in the example below combining data from Google Console and Sensor Tower. This is due to the game’s visibility and organic / non-requested featuring being clobbered by the algorithm.
On the contrary, games that manage to decrease their ANR rate can see a significant improvement in installs. In the example below, ANR dropped from 3% to 1% after upgrading the Google Billing Library, and organic installs increased 30% over a period of 30days.
Quick tip: The increase is not immediate, it takes time for the algorithm to gradually “reward” the game for maintaining lower ANR over a prolonged period of time.
THE IMPACT ON YOUR GAME
Google pays attention to ANRs because they are a solid indicator of player experience. A game with high ANRs is more likely to have:
- Bad user ratings and reviews
- Low retention metrics
- Less in-app purchases
- Higher uninstall rate
- Less overall revenue
This is bad not only for developers and players, but also for the platform that wants to resurface the highest quality games for players. That’s why games with high ANR usually get de-prioritized in the following ways:
- Less editorial featuring and lower quality editorial placement
- Less store visibility (game being resurfaced in less places throughout the store)
- Less impressions being driven to the game which results in less installs
Unfortunately, decreasing ANRs is an incredibly difficult task, with multiple overlapping causes and not enough information in the Google Play console to reproduce errors. Every game is different, and what works for one might not work for another. But rest assured that your effort is not wasted and every test brings you closer to a solution. Other game teams are also struggling to keep their ANRs within range, so you are not alone in this journey. This can be seen in the example below: the peer line is above the threshold.
THE 10 STEPS: WHAT CAN YOU DO ABOUT HIGH ANRs
Here at Tilting Point we are actively working on fixing ANRs in several games. And while there’s definitely a lot of trial and error involved, there are several best practices we would like to recommend to help you approach ANRs in a more methodical way:
- Check the Google Play Console and extract as much information as possible
The logs are usually too generic and do not provide a detailed stack trace that allows you to reproduce the issue in a QA environment. But they might help developers understand what area of the game causes issues, and therefore start investigating.
2. Make sure 1% of devices aren’t causing 90% of issues
Sometimes a large number of ANRs are caused by a very small number of devices. These can often be older or lower memory devices.
The example below shows that almost 20% of all sessions on Motorola Lenovo K12 are affected. That’s a very high percentage of sessions, and at the same time total sessions at 5K are lower than on other devices, so this device could potentially be removed.
Although blacklisting devices is a relatively quick and easy solution, we don’t recommend doing it across too many devices as it can restrict access to your game for too many players.
3. Apply #2 to other factors
Google Play console allows filtering by other potential factors such as:
- Android versions
- App versions
Check if, for example, certain older Android versions could be causing issues. But don’t test them all at once, because then you won’t know what made the biggest impact.
4. Check your ANRs over time
If your game’s ANRs spiked on a particular day or week, evaluate what changes were made in the game, such as:
- Was a build published during that time, or a new event implemented server side?
- Maybe a new SDK was added or upgraded?
If you know what might have caused the issue, consider reverting the change if possible, and see if it makes a difference.
5. Keep your SDKs updated, including Ad SDKs
Old SDKs might no longer be compatible with newer Google systems, and will contribute to ANR errors. So make sure to:
- Check for Unity, Google Billing Library, or Firebase updates. In the example below, a Unity update contributed to a significant ANR drop from 2% to 0.7%.
- Check for updates from Ad networks, as they frequently release new SDKs to keep up with fast evolving industry changes. So make sure you keep them up-to-date to include all the performance improvements.
6. Review how Ad SDKs are integrated in the game
Ad SDKs are frequently mentioned as the reason for high ANRs. However, it might not be the SDK causing an issue, but the way it is integrated and interacts with the game. Look at the UI response and how game UI interacts with the Ad:
- What happens if a player is in the middle of watching an Ad and gets a phone call?
- Are there any special actions we perform right before showing an Ad?
- How do different SDKs interact with each other?
7. Review Google documentation
Google has an entire ANR section on its developer.android.com site. Follow the steps provided by Google to see if they result in a decrease in ANRs.
Here at Titling Point, we put together a CHECKLIST to make it easier for developers to go through recommended steps with Google.
It is important to stress that every game is different, and following these steps will not work for every game the same way. But these recommendations can help you troubleshoot and discover what might be the underlying issue or area to focus on.
8. Implement a tool that helps detect ANRs
Some developers create their own homegrown tools, but you can also implement a 3rd party solution such as BugSnag or Embrace. These tools will detect issues, after which you will need to apply fixes, launch a client build and see if the ANR rate goes down. Unfortunately it can be quite manual, but to help the process BugSnag has customizable breadcrumbs, which are attached to each error report to help diagnose what events led to the error.
You can also try Firebase’s Crashlytics, which reports the thread and callstack causing ANRs. It captures ANRs automatically, which can help understand what segments of what libraries are causing issues. Adding custom keys can also be helpful to get a specific state of the app leading up to an ANR, and then search and filter reports in the Firebase console.
Another option is the Firebase Test Lab, where you can set up multiple build configurations and tests. This can help identify the build that causes the least amount of issues, although running multiple tests can be time consuming.
- Check that the tool itself and the way it’s implemented doesn’t contribute to extra ANRs.
- Watch out for data inconsistency between Android Vitals (Google Console), Firebase’s Crashlytics and BugSnag when it comes to occurrences, impacted users and even stack trace at times. Check Android Vitals first and make sure the information is aligned with other tools. We had situations in the past where we fixed the top issue in Crashlytics and the ANR trend went drastically down, but such change didn’t occur in Android Vitals so there was no impact on organic installs.
9. Test different scenarios with the QA team
The QA team is your best friend when it comes to solving ANRs. It’s important to put together a list with different scenarios that you expect might be causing problems. We think these are particularly important:
- See what happens when you have the game open, and then you engage in another action
- Look at loading, or situations when there are lots of objects to initialize
- Review items that are causing excessive disk usage
- Review long calculations / several operations
- Reduce the number of game saves when the player minimizes the game
- Look at focusing out on a heavy loading screen
- Try delegating resource intensive operations to worker threads
- Test how the game reacts to a bad network connection and network interruptions
10. Work directly with network providers and the Ad Monetization team
Some ad network providers might already be aware of certain issues, and working on solutions:
- In some cases they might create a custom SDK to address the issues.
- They might get you to perform an Ad Test that involves disconnecting networks and bringing them back. But I should make it clear that simply disconnecting an Ad Network is not a solution in itself, because it doesn’t actually fix the underlying problem and causes you to lose valuable ad revenue.
LET TILTING POINT HELP YOU WITH YOUR ANRs
ANR fixing is unfortunately not a “one size fits all” solution. Every game is different, and the way the game interacts with SDKs or how they are implemented can vary. That is why it is important to go through these steps to understand what works for your game. Better yet, you can partner with an experienced publisher like Tilting Point to help you solve these nuances, so you have more time to focus on development and creativity!
I hope you found this information useful. Perhaps you have your own method that worked well for your game? Or you might have more questions on how to achieve the best results. Please don’t hesitate to reach out at email@example.com or firstname.lastname@example.org . We are here to help!
Karolina Cooper has over 13 years of gaming industry experience, with expertise in performance marketing, brand marketing and go-to-market strategy for entertainment games and apps. Before Tilting Point, Karolina worked at Electronic Arts, Village Roadshow and Glu Mobile, among others.