App Starts

Learn how to monitor your mobile application's performance by using App Starts to identify slow or regressed screens.

The App Starts dashboard in Sentry Dashboards shows an overview of the amount of time it takes for your application to complete cold and warm starts. It helps you identify slow or regressed screens and gives additional information so you can better understand the factors contributing to the slowness of your application start times.

For Android:

  • >=7.4.0 for automatic instrumentation of app start spans and app start profiling
  • Performance-V2 feature flag (<8.0.0) and App Start Profiling must also be enabled in the SDK, e.g.:
MyApplication.java
Copied
import io.sentry.android.core.SentryAndroid;

SentryAndroid.init(this, options -> {
  options.setEnablePerformanceV2(true);
  options.setEnableAppStartProfiling(true);
});

For iOS:

  • >=7.2.0 for automatic instrumentation of app start spans
  • >=8.21.0 for app start profiling

For React Native:

By default, the App Starts dashboard displays metrics for the two releases with the highest screen counts for the time range you've selected. To choose a different set of releases to compare, use the "release selector" at the top of the dashboard. To change the app start type (cold or warm), use the "App Start" selector at the top of the dashboard.

The charts display the following metrics (using cold starts as an example):

  • Average Cold Start
    • The overall time it takes your application to start, compared by release.
  • Cold Start Device Distribution
    • The average cold start time grouped by device class (high, medium, low, or unknown).

Reasons Why You Might Not Be Seeing Any Data:

  • You don't have any transactions with op ui.load
  • Your SDKs don't meet the minimum SDK requirements

The table at the bottom shows spans that have changed from one release to the next and allows you to filter for specific span operations and device classes. Being able to narrow down to specific event samples helps debug slow starts.

Clicking the "By Event" toggle in the top right corner of this table will show you events split by release and you'll be able to see overall changes in start times between the two releases you've selected.

The following table describes the span operations that are surfaced in the spans table:

PlatformSpan Operations
Common
  • file.write
  • ui.load
  • http.client
  • db
  • db.sql.query
  • db.sql.transaction
iOS
  • app.start.cold
  • app.start.warm
Android
  • activity.load
  • application.load
  • contentprovider.load
  • process.load

Clicking on a span description opens up the Traces page, where you can see sampled spans.

In the table, you'll see a list of sampled spans. Click into one to get a waterfall view of the span.

Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").