REST Resource: vitals.slowrenderingrate
Stay organized with collections
Save and categorize content based on your preferences.
Resource: SlowRenderingRateMetricSet
Singleton resource representing the set of Slow Rendering metrics.
This metric set contains low-level rendering data captured by SurafeFlinger. Sessions are evaluated based on the present-to-present histogram of frames handled by any SurfaceFlinger layer owned by the app.
A slow session is a session where more than 25% of frames for the session did not meet the metric's target frame rate (either 20fps, or 30fps).
NOTE: This metric set is only available for games.
Supported aggregation periods:
DAILY
: metrics are aggregated in calendar date intervals. Due to historical constraints, the only supported timezone is America/Los_Angeles
.
Supported metrics:
slowRenderingRate20Fps
(google.type.Decimal
): Percentage of distinct users in the aggregation period that had slow rendering.
slowRenderingRate20Fps7dUserWeighted
(google.type.Decimal
): Rolling average value of slowRenderingRate20Fps
in the last 7 days. The daily values are weighted by the count of distinct users for the day.
slowRenderingRate20Fps28dUserWeighted
(google.type.Decimal
): Rolling average value of slowRenderingRate20Fps
in the last 28 days. The daily values are weighted by the count of distinct users for the day.
slowRenderingRate30Fps
(google.type.Decimal
): Percentage of distinct users in the aggregation period that had slow rendering.
slowRenderingRate30Fps7dUserWeighted
(google.type.Decimal
): Rolling average value of slowRenderingRate30Fps
in the last 7 days. The daily values are weighted by the count of distinct users for the day.
slowRenderingRate30Fps28dUserWeighted
(google.type.Decimal
): Rolling average value of slowRenderingRate30Fps
in the last 28 days. The daily values are weighted by the count of distinct users for the day.
distinctUsers
(google.type.Decimal
): Count of distinct users in the aggregation period that were used as normalization value for the slowRenderingRate20Fps
/slowRenderingRate30Fps
metric. A user is counted in this metric if their app rendered any frames. Care must be taken not to aggregate this count further, as it may result in users being counted multiple times. The value is rounded to the nearest multiple of 10, 100, 1,000 or 1,000,000, depending on the magnitude of the value.
Supported dimensions:
apiLevel
(string
): the API level of Android that was running on the user's device, e.g., 26.
versionCode
(int64
): version of the app that was running on the user's device.
deviceModel
(string
): unique identifier of the user's device model. The form of the identifier is 'deviceBrand/device', where deviceBrand corresponds to Build.BRAND and device corresponds to Build.DEVICE, e.g., google/coral.
deviceBrand
(string
): unique identifier of the user's device brand, e.g., google.
deviceType
(string
): the type (also known as form factor) of the user's device, e.g., PHONE.
countryCode
(string
): the country or region of the user's device based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US for the United States).
deviceRamBucket
(int64
): RAM of the device, in MB, in buckets (3GB, 4GB, etc.).
deviceSocMake
(string
): Make of the device's primary system-on-chip, e.g., Samsung. Reference
deviceSocModel
(string
): Model of the device's primary system-on-chip, e.g., "Exynos 2100". Reference
deviceCpuMake
(string
): Make of the device's CPU, e.g., Qualcomm.
deviceCpuModel
(string
): Model of the device's CPU, e.g., "Kryo 240".
deviceGpuMake
(string
): Make of the device's GPU, e.g., ARM.
deviceGpuModel
(string
): Model of the device's GPU, e.g., Mali.
deviceGpuVersion
(string
): Version of the device's GPU, e.g., T750.
deviceVulkanVersion
(string
): Vulkan version of the device, e.g., "4198400".
deviceGlEsVersion
(string
): OpenGL ES version of the device, e.g., "196610".
deviceScreenSize
(string
): Screen size of the device, e.g., NORMAL, LARGE.
deviceScreenDpi
(string
): Screen density of the device, e.g., mdpi, hdpi.
Required permissions: to access this resource, the calling user needs the View app information (read-only) permission for the app.
JSON representation |
{
"name": string,
"freshnessInfo": {
object (FreshnessInfo )
}
} |
Fields |
name |
string
Identifier. The resource name. Format: apps/{app}/slowRenderingRateMetricSet
|
freshnessInfo |
object (FreshnessInfo )
Summary about data freshness in this resource.
|
Methods |
|
Describes the properties of the metric set. |
|
Queries the metrics in the metric set. |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-03-19 UTC.
[null,null,["Last updated 2025-03-19 UTC."],[[["\u003cp\u003eThe Slow Rendering Rate Metric Set provides insights into low-level rendering data for games, specifically focusing on frame rates handled by SurfaceFlinger.\u003c/p\u003e\n"],["\u003cp\u003eA session is considered slow if over 25% of its frames fail to achieve the target frame rate (20fps or 30fps).\u003c/p\u003e\n"],["\u003cp\u003eMetrics include percentages of slow-rendering users, rolling averages weighted by distinct users, and the count of distinct users used for normalization.\u003c/p\u003e\n"],["\u003cp\u003eYou can segment this data using various dimensions like API level, device model, country, RAM, and CPU/GPU details to identify performance bottlenecks.\u003c/p\u003e\n"],["\u003cp\u003eThis metric set requires the "View app information (read-only)" permission and allows you to describe its properties and query its metrics.\u003c/p\u003e\n"]]],["The SlowRenderingRateMetricSet resource provides low-level rendering data for games, evaluating sessions based on frame rates handled by SurfaceFlinger. Key metrics include `slowRenderingRate20Fps` and `slowRenderingRate30Fps`, representing the percentage of users experiencing slow rendering, alongside 7 and 28-day user-weighted averages. Available dimensions to filter data include device specifics (API level, model, brand, RAM, etc.) and app versions. Daily aggregation, in `America/Los_Angeles` timezone, is supported. Two main methods to acces the data: `get` and `query`.\n"],null,["# REST Resource: vitals.slowrenderingrate\n\n- [Resource: SlowRenderingRateMetricSet](#SlowRenderingRateMetricSet)\n - [JSON representation](#SlowRenderingRateMetricSet.SCHEMA_REPRESENTATION)\n- [Methods](#METHODS_SUMMARY)\n\nResource: SlowRenderingRateMetricSet\n------------------------------------\n\nSingleton resource representing the set of Slow Rendering metrics.\n\nThis metric set contains low-level rendering data captured by SurafeFlinger. Sessions are evaluated based on the present-to-present histogram of frames handled by any SurfaceFlinger layer owned by the app.\n\nA slow session is a session where more than 25% of frames for the session did not meet the metric's target frame rate (either 20fps, or 30fps).\n\n*NOTE:* This metric set is only available for games.\n\n**Supported aggregation periods:**\n\n- [DAILY](/play/developer/reporting/reference/rest/v1beta1/AggregationPeriod#ENUM_VALUES.DAILY): metrics are aggregated in calendar date intervals. Due to historical constraints, the only supported timezone is `America/Los_Angeles`.\n\n**Supported metrics:**\n\n- `slowRenderingRate20Fps` (`google.type.Decimal`): Percentage of distinct users in the aggregation period that had slow rendering.\n- `slowRenderingRate20Fps7dUserWeighted` (`google.type.Decimal`): Rolling average value of `slowRenderingRate20Fps` in the last 7 days. The daily values are weighted by the count of distinct users for the day.\n- `slowRenderingRate20Fps28dUserWeighted` (`google.type.Decimal`): Rolling average value of `slowRenderingRate20Fps` in the last 28 days. The daily values are weighted by the count of distinct users for the day.\n- `slowRenderingRate30Fps` (`google.type.Decimal`): Percentage of distinct users in the aggregation period that had slow rendering.\n- `slowRenderingRate30Fps7dUserWeighted` (`google.type.Decimal`): Rolling average value of `slowRenderingRate30Fps` in the last 7 days. The daily values are weighted by the count of distinct users for the day.\n- `slowRenderingRate30Fps28dUserWeighted` (`google.type.Decimal`): Rolling average value of `slowRenderingRate30Fps` in the last 28 days. The daily values are weighted by the count of distinct users for the day.\n- `distinctUsers` (`google.type.Decimal`): Count of distinct users in the aggregation period that were used as normalization value for the `slowRenderingRate20Fps`/`slowRenderingRate30Fps` metric. A user is counted in this metric if their app rendered any frames. Care must be taken not to aggregate this count further, as it may result in users being counted multiple times. The value is rounded to the nearest multiple of 10, 100, 1,000 or 1,000,000, depending on the magnitude of the value.\n\n**Supported dimensions:**\n\n- `apiLevel` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): the API level of Android that was running on the user's device, e.g., 26.\n- `versionCode` ([int64](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.int64_value)): version of the app that was running on the user's device.\n- `deviceModel` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): unique identifier of the user's device model. The form of the identifier is 'deviceBrand/device', where deviceBrand corresponds to Build.BRAND and device corresponds to Build.DEVICE, e.g., google/coral.\n- `deviceBrand` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): unique identifier of the user's device brand, e.g., google.\n- `deviceType` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): the type (also known as form factor) of the user's device, e.g., PHONE.\n- `countryCode` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): the country or region of the user's device based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US for the United States).\n- `deviceRamBucket` ([int64](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.int64_value)): RAM of the device, in MB, in buckets (3GB, 4GB, etc.).\n- `deviceSocMake` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Make of the device's primary system-on-chip, e.g., Samsung. [Reference](https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER)\n- `deviceSocModel` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Model of the device's primary system-on-chip, e.g., \"Exynos 2100\". [Reference](https://developer.android.com/reference/android/os/Build#SOC_MODEL)\n- `deviceCpuMake` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Make of the device's CPU, e.g., Qualcomm.\n- `deviceCpuModel` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Model of the device's CPU, e.g., \"Kryo 240\".\n- `deviceGpuMake` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Make of the device's GPU, e.g., ARM.\n- `deviceGpuModel` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Model of the device's GPU, e.g., Mali.\n- `deviceGpuVersion` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Version of the device's GPU, e.g., T750.\n- `deviceVulkanVersion` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Vulkan version of the device, e.g., \"4198400\".\n- `deviceGlEsVersion` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): OpenGL ES version of the device, e.g., \"196610\".\n- `deviceScreenSize` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Screen size of the device, e.g., NORMAL, LARGE.\n- `deviceScreenDpi` ([string](/play/developer/reporting/reference/rest/v1beta1/anomalies#DimensionValue.FIELDS.string_value)): Screen density of the device, e.g., mdpi, hdpi.\n\n**Required permissions** : to access this resource, the calling user needs the *View app information (read-only)* permission for the app.\n\n| JSON representation |\n|--------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"name\": string, \"freshnessInfo\": { object (/play/developer/reporting/reference/rest/v1beta1/FreshnessInfo) } } ``` |\n\n| Fields ||\n|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------|\n| `name` | `string` Identifier. The resource name. Format: apps/{app}/slowRenderingRateMetricSet |\n| `freshnessInfo` | `object (`[FreshnessInfo](/play/developer/reporting/reference/rest/v1beta1/FreshnessInfo)`)` Summary about data freshness in this resource. |\n\n| Methods ------- ||\n|----------------------------------------------------------------------------------------------|---------------------------------------------|\n| ### [get](/play/developer/reporting/reference/rest/v1beta1/vitals.slowrenderingrate/get) | Describes the properties of the metric set. |\n| ### [query](/play/developer/reporting/reference/rest/v1beta1/vitals.slowrenderingrate/query) | Queries the metrics in the metric set. |"]]