These pages show Cloud's URLs. Sign in on Hosted and they show your server's.

The Releases dashboard

How each build's sessions end, which builds people run, how fast they start, the web vitals, the devices' health, and why the OS ended the app.

Who it is for: Whoever ships a build: how its sessions end, how fast it is adopted, and what the devices running it go through.

Open it from Dashboards in the Observatory: choose Releases. It is a built-in board, so it is read-only; Save a copy makes one you can change. How every panel reads the range, its colors and its empty states is on Reading a board.

The toolbar: the filters Build, Platform and Service, each All until you pick a value, and the time range. Each menu lists the values flutter.session.count carries in the range. Each panel below names the filters that narrow it.

[TODO: screenshot of the Releases dashboard over the last 7 days, every filter All: Overview, Adoption and Startup]

Overview

Crash-free sessions

The share of ended sessions that did not end in a crash. Abnormal ends are shown apart and do not count against it. It is a session figure, not a count of crashes: the Crashes list counts crashes.

  • How it is computed: Crash-free sessions = 1 − crashed sessions / ended sessions, as a percent, the way Sentry counts it. Both come from flutter.session.count: an ended session is one whose session.status is ok, errored, unhandled, crashed or abnormal, and only crashed counts against the figure. A range whose sessions all ended without a crash reads 100%. One figure for the whole picked range.
  • Better: Higher is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • Colors: The figure turns amber below 99.5% and red below 99%.
  • No session ended: when no session ended in the range, it shows this instead of a figure: No session end recorded in this range, so crash-free sessions can't be computed.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Sessions started

How many sessions started.

  • How it is computed: flutter.session.count where session.status is started. One figure for the whole picked range.
  • Better: Higher is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Crashed sessions

Sessions that ended in a crash. A session figure: the Crashes list counts crashes.

  • How it is computed: flutter.session.count where session.status is crashed. One figure for the whole picked range.
  • Better: Lower is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • Colors: The figure turns amber above 1 and red above 10.
  • No session ended: when no session ended in the range, it shows this instead of a figure: No session end recorded in this range, so crashed sessions can't be computed.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Abnormal session ends

Sessions the OS ended without a crash, of sessions that ended.

  • How it is computed: flutter.session.count where session.status is abnormal, divided by ended sessions (ok, errored, unhandled, crashed or abnormal), as a percent. One figure for the whole picked range.
  • Better: Lower is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • No session ended: when no session ended in the range, it shows this instead of a figure: No session end recorded in this range, so abnormal session ends can't be computed.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Adoption

Sessions started by build

Which builds people run: sessions started per build.

  • How it is computed: Sessions started (flutter.session.count where session.status is started), counted per build (app.build_id), the top ten. A ranked list, each figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Session outcomes

How the sessions that ended in this range ended.

  • How it is computed: flutter.session.count for ended sessions, counted per session.status. A ranked list, each figure for the whole picked range.
  • No session ended: when no session ended in the range, it shows this instead of a figure: No session end recorded in this range, so session outcomes can't be computed.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Sessions started by build over time

The six most started builds, each step.

  • How it is computed: Sessions started (flutter.session.count where session.status is started), counted per build in each step. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Crash-free sessions by build

Crash-free sessions per build, each step. Abnormal ends are shown apart. The dashed lines are the 99.5% and 99% targets. A session figure, not a count of crashes.

  • How it is computed: Crash-free sessions per build (app.build_id): 1 − crashed sessions / ended sessions, as a percent, from flutter.session.count. Only crashed counts against it. Lines, one point per step across the picked range.
  • Colors: Dashed lines mark 99.5% (warn) and 99% (crit).
  • No session ended: when no session ended in the range, it shows this instead of a figure: No session end recorded in this range, so crash-free sessions by build can't be computed.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.session.count.

Startup

Cold start by build (p95)

Cold start time at the 95th percentile, per build.

  • How it is computed: The 95th percentile of flutter.app.startup.duration for cold starts, one line per build. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.app.startup.duration.

Starts by type

Cold, warm and hot starts in this range.

  • How it is computed: The number of flutter.app.startup.duration samples per app.start.type (cold, warm, hot). A ranked list, each figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.app.startup.duration.

Warm and hot starts (p95)

How long warm and hot starts take at the 95th percentile.

  • How it is computed: The 95th percentile of flutter.app.startup.duration for warm and hot starts together. One figure for the whole picked range.
  • Better: Lower is better.
  • Colors: The figure turns amber above 1 s and red above 2 s.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.app.startup.duration.

Web vitals over time (p75)

Largest contentful paint

Largest contentful paint at the 75th percentile, each step.

  • How it is computed: The 75th percentile of flutter.experience.lcp. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.experience.lcp.

Interaction to next paint

Interaction to next paint at the 75th percentile, each step.

  • How it is computed: The 75th percentile of flutter.experience.inp. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.experience.inp.

First contentful paint

First contentful paint at the 75th percentile, each step.

  • How it is computed: The 75th percentile of flutter.experience.fcp. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.experience.fcp.

Time to first byte on the web

Web only: a page load's wait for its first byte at the 75th percentile, each step. Mobile requests time theirs on their HTTP spans.

  • How it is computed: The 75th percentile of flutter.experience.ttfb. Lines, one point per step across the picked range.
  • Web only: it hides while Platform is set, because web reports carry no platform.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on flutter.experience.ttfb.

Device health

Memory pressure level over time

The highest OS memory-pressure level any device reported, each step: Android's trim level, or 1 for an iOS memory warning.

  • How it is computed: The highest value of memory_pressure.level. The levels: 1 is an iOS memory warning; Android records 5, 10 and 15 (running moderate, running low, running critical) and 60 and 80 (background moderate, background complete). UI hidden (20) and Background (40) are the app leaving the screen, not pressure, and are not recorded. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on memory_pressure.level.

Low-power mode share

The share of battery reports with iOS Low Power Mode or Android Battery Saver on; a device that reports more often weighs more.

  • How it is computed: The average of dartastic.battery.low_power_mode, shown as a percent. One figure for the whole picked range.
  • Better: Lower is better.
  • Colors: The figure turns amber above 20% and red above 50%.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.battery.low_power_mode.

Median battery level

The median battery-level report: half read more charge than this. Low means your app must be frugal.

  • How it is computed: The median of dartastic.battery.level, shown as a percent. One figure for the whole picked range.
  • Better: Higher is better.
  • Colors: The figure turns amber below 50% and red below 20%.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.battery.level.

Devices by battery state

Charging, discharging, full, not present or unknown: the devices reporting each. A device that changed state counts under each state it reported.

  • How it is computed: Distinct app installs (app.installation.id) reporting dartastic.battery.state, counted per state. A ranked list, each figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.battery.state.

Thermal state over time

The worst thermal state any device reported, each step: 0 nominal, 1 fair, 2 serious, 3 critical, 4 emergency.

  • How it is computed: The highest value of dartastic.thermal.state. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.thermal.state.

Thermal state changes

Changes the OS pushed, by the state entered.

  • How it is computed: dartastic.thermal.state.event, counted per dartastic.thermal.state. A ranked list, each figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.thermal.state.event.

App exits

App exits by reason

Exits the OS reported, by its reason.

  • How it is computed: dartastic.app.exit.count, counted per app.exit.reason. A ranked list, each figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.count.

App exits by reason over time

Exits the OS reported, by reason, each step.

  • How it is computed: dartastic.app.exit.count, counted per app.exit.reason in each step. Lines, one point per step across the picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.count.

Low-memory exits

Exits the OS made for lack of memory: iOS out-of-memory and memory-pressure terminations, and Android low-memory kills.

  • How it is computed: dartastic.app.exit.count where app.exit.reason is oom or memory_pressure. One figure for the whole picked range.
  • Better: Lower is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • Colors: The figure turns amber above 1 and red above 10.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.count.

Exits for not responding

Exits the OS reported as an ANR kill.

  • How it is computed: dartastic.app.exit.count where app.exit.reason is anr. One figure for the whole picked range.
  • Better: Lower is better. Beside the figure, its change from the prior range of the same length: green when it moved the better way, red when it moved the other way.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.count.

Exits with a trace file

Android exits for which the OS kept an ANR or native crash trace.

  • How it is computed: dartastic.app.exit.trace.available. One figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.trace.available.

Memory at exit, median

The resident set size when Android ended the app, the median across exits.

  • How it is computed: The median of dartastic.app.exit.memory.rss. One figure for the whole picked range.
  • Filters: Build, Platform and Service narrow it.
  • Opens: its title opens the Metric screen on dartastic.app.exit.memory.rss.