Contents

MetricReport

A daily performance report that contains metric values for your app.

Declaration

struct MetricReport

Mentioned in

Discussion

MetricReport is a value type that conforms to Sendable and Codable, so you can pass it across actor boundaries and serialize it with JSONEncoder directly.

Each report covers a 24-hour reporting period. Access metric data through intervalEntries, which contains one or more MetricReport.IntervalEntry values. Use the MetricReport.IntervalEntry collection’s fullDayEntry property to retrieve the full-day aggregate, then iterate its values array and switch over each MetricResult:

if let entry = report.intervalEntries.fullDayEntry {
    for result in entry.values {
        switch result {
        case .cpuTime(let metric):
            record(metric)
        case .peakMemory(let metric):
            record(metric)
        @unknown default:
            break
        }
    }
}

When state reporting is enabled via init(enabledStateReportingDomains:), the report also populates stateEntries with MetricResult values scoped to each recorded app state. Only a subset of metric types appear in state entries, including hang time, hitch time, scroll hitch time, app termination counts, signpost intervals, and app runtime metrics. Metrics such as CPU time, memory, network, disk I/O, GPU, app launch, and disk space appear only in intervalEntries.

This type replaces MXMetricPayload.

Topics

Report details

Metric data

Structures

See Also

Metric and diagnostic reports