In our effort to consistently bring more value to our customers, Embrace has been rehauling many of our ANR reporting features. We're excited to bring to you a revamped ANR experience, with both analytic and visual improvements to help make troubleshooting easier for Android users. Read on for a more detailed look at our latest slew of updates: 


1. Improved ANR Issues List: 

  • New Issue Prioritization: We've reworked how we prioritize individual issues by taking into consideration the number of occurrences of an issue, its user impact, and its session impact.
  • New Issue Category Grouping: We've improved how we group issues, with new categories like Ad SDK, Android, Java, IO, and more. 
  • Insights Pane: A new pane that appears to the right of the ANR Issues list will help you better troubleshoot issues. Click on any "problematic" method in the issues list, and the insights pane will give you a list of notable frames (commonly occurring frames in the stack trace under this method), as well as a list of possible issues in under its stack trace that we've determined may be contributing to an ANRs.
  • Different sample types and greater sample analysis: Previously, we did not use all the samples taken during an ANR interval. We now analyze all the samples, with two new sample types in mind, and pick a sample that occurs most frequently. You'll see this shown as the "most representative" sample.  We've also introduced the “ad-focused” sample type. For this type, we only consider samples that contain a reference to an SDK based on a curated list of ad SDKs. We've also removed “Last sample," as this was not actionable and could actually be misleading because it may have pointed to actions that happened after the completion of the task that caused the ANR. 


2. New Flame Graph Experience: 


We've redesigned our classic flame graph view to support better root cause analysis. This new view includes: 

  • Issue drill-down: For the selected issue on the flame graph, you can access and inspect all the significant branches for that specific method across different ANR samples.
  • Insights Pane:  the user can explore different branches of the issue tree in the flame graph while seeing a list of possible known issues to explore in a separate insights pane that pops out on the left. 
  • Sample Sessions: Scroll down the left insights pane, and you'll see a list of user sessions that experienced ANRs with that particular issue.
  • New filters and tools: We've added better functionality to explore and debug ANRs in the flame graph view. This includes new filters for the graph: debugging (default), prioritization, and custom. The custom view allows you to make adjustments to focus, group, and collapse methods, as well as change the minimum percentage of appearances that methods must make within the samples so as to appear on the graph. 


3. ANR Method Troubleshooting View: 


We've added a new view to show a graph anchored around the selected method you're examining. It allows you to see all the code paths that lead to the selected method, as well as the code paths following the method. Users can get to this page from branches in the flame graph and from the known issues list. This view also reports on: 

  • Common Issues/Methods ANR contribution: This view will breakdown the percentage of appearances of the problematic methods across calling or being called by the selected one across the different samples
  • Sample Sessions:  As above, you'll be able to access specific user sessions that experienced ANRs that include this method. 


We'll continue making functional and visual improvements to our ANRs feature based on customer feedback, so please do reach out if you have any questions. And keep an eye out for more updates!


4. Flamegraph Color Method Mapping:

  • ad_sdks:  lime green
  • android: lighter blue
  • concurrency: orange
  • io: dark blue
  • java: teal
  • reflection: orange
  • sandwich-anchored-method: red
  • serialization: dark purple
  • unity: blue
  • unknown: pink
  • view: teal