How to measure and understand your app’s performance

How to measure and understand your app’s performance

1 Overview

The challenge

You’ll need to understand how your app is performing, and use your resources to effectively diagnose any issues and optimise your app’s performance. Your challenge is finding an effective way to gather and use this information without diverting too much time or resource from your business growth.

Your aim

Gain insight into your app's performance, and diagnose app performance issues occurring on your users’ devices.

How to go about it

Firebase gives you insights into app performance and stability, so you can channel your resources effectively. Fix app performance issues, use traces to monitor the performance of specific parts of your app, and see a summarised view in the Firebase console. You can also stay on top of your app’s start-up time and monitor HTTP requests without writing any code. This guide discusses the importance of performance monitoring as you prepare to grow your business, and how it works.

2 The benefits of performance monitoring

Firebase Performance Monitoring is a service that helps you to gain insight into the performance characteristics of your iOS and Android apps. You use the Performance Monitoring SDK to collect performance data from your app, and then review and analyse that data in the Firebase console. Performance Monitoring helps you to understand where and when the performance of your app can be improved so that you can use that information to fix performance issues.

Keep your app fast and responsive

Get insights into how your app performs from your users’ point of view, with automatic and customised performance tracing.

Use traces to get performance context

Using custom traces, you can understand the context in which performance issues take place and more easily address them. You can also make use of automated traces, like app startup time.

Keep your eyes on network behavior

Understand the network latencies affecting your users with automated monitoring of HTTP/S requests. You can track response times, success rates, payload sizes, and the time spent waiting for the payload versus downloading it.

Pinpoint the origin of issues

Break down both trace and network data into dimensions like app version, country, device, and OS level to get to the bottom of issues.

3 How Firebase Performance Monitoring works

Key capabilities

  • Automatically measure critical aspects of app

When you integrate the Performance Monitoring SDK into your iOS or Android app, you don't need to write any code before your app starts monitoring several critical aspects of app performance: startup time, rendering data by screen, activity while in the foreground, activity while in the background, and HTTP/S network requests.

  • Insights to approve app’s performance

Optimising the performance of your app can be challenging when you don't know exactly why it is falling short of user expectations. That's why Performance Monitoring lets you see performance metrics broken down by country, device, app version, and OS level.

  • Customise Performance Monitoring for your app

You can create traces to capture your app's performance in specific situations, like when you load a new screen. And, you can create custom metrics to count events that you define (like cache hits) during those traces.

How it works

Performance Monitoring is available for iOS and Android apps that include the Performance Monitoring SDK. Performance Monitoring monitors traces and HTTP/S network requests in your app.

A trace is a report of performance data captured between two points in time in your app. When installed, the Performance Monitoring SDK automatically provides app start traces, which measure the time between when the user opens the app and when the app is responsive. It also provides app in foreground traces and app in background traces to give you insight into how your app performs when in the foreground or when idle.

  • App start traces, which measure the time between when the user opens the app and when the app is responsive.
  • Screen traces, which span the lifetime of a screen and measure slow and frozen frames.
  • App in background traces, which measure the time when the app is running in the background.
  • App in foreground traces, which measure the time when the app is running in the foreground and available to the user.

You can also configure custom traces. A custom trace is a report of performance data associated with some of the code in your app. You define the beginning and end of a custom trace using the APIs provided by the Performance Monitoring SDK. A trace can be further configured to record custom metrics for performance-related events that occur within its scope. For example, you could create a custom metric for the number of cache hits and misses or the number of times that the UI becomes unresponsive for a noticeable period of time.

An HTTP/S network request is a report that captures the time between when your app issues a request to a service endpoint and when the response from that endpoint is complete. For any endpoint that your app makes a request to, the SDK will capture several metrics:

  • Response time: Time between when the request is made and when the response is fully received
  • Payload size: Byte size of the network payload downloaded and uploaded by the app
  • Success rate: Percentage of successful responses compared to total responses (to measure network or server failures)

For both traces and HTTP/S network requests, you can see performance monitoring data categorised as follows:

Traces

App version Country Device OS Radio Carrier

HTTP/S network requests

App version Country Device OS Radio Carrier MIME type

User data

Performance Monitoring does not permanently store any personally identifiable information (such as names, email addresses, or phone numbers). While monitoring HTTP/S network requests, Performance Monitoring uses URLs (not including URL parameters) to build aggregated and anonymous URL patterns that are eventually persisted and shown in the Firebase console.