App Vitals Monitoring
Use this skill when you need to monitor app stability, performance, and errors from Google Play Console.
Preconditions
- Ensure credentials are set (
gplay auth loginorGPLAY_SERVICE_ACCOUNTenv var). - Service account needs "View app information and download bulk reports" permission.
- App must have active installs generating vitals data.
Crash Monitoring
List crash clusters
gplay vitals crashes list \
--package com.example.appGet crash cluster details
gplay vitals crashes get \
--package com.example.app \
--cluster-id CLUSTER_IDFilter by time range
gplay vitals crashes list \
--package com.example.app \
--start-time 2026-01-01T00:00:00Z \
--end-time 2026-02-01T00:00:00ZFilter by version code
gplay vitals crashes list \
--package com.example.app \
--version-code 42Filter by app version name
gplay vitals crashes list \
--package com.example.app \
--version-name "1.2.0"Paginate through all crash clusters
gplay vitals crashes list \
--package com.example.app \
--paginateOutput as table for readability
gplay vitals crashes list \
--package com.example.app \
--output tableANR Monitoring
List ANR clusters
gplay vitals crashes list \
--package com.example.app \
--type anrGet ANR cluster details
gplay vitals crashes get \
--package com.example.app \
--cluster-id CLUSTER_ID \
--type anrPerformance Metrics
Get performance overview
gplay vitals performance overview \
--package com.example.appStartup time metrics
gplay vitals performance startup \
--package com.example.appFilter by device type
gplay vitals performance overview \
--package com.example.app \
--device-type phoneFilter by OS version
gplay vitals performance overview \
--package com.example.app \
--os-version 14Rendering metrics (slow/frozen frames)
gplay vitals performance rendering \
--package com.example.appBattery metrics
gplay vitals performance battery \
--package com.example.appPermission denials
gplay vitals performance permissions \
--package com.example.appError Reporting
List error clusters
gplay vitals errors list \
--package com.example.appGet error details
gplay vitals errors get \
--package com.example.app \
--error-id ERROR_IDFilter errors by severity
gplay vitals errors list \
--package com.example.app \
--severity criticalFilter errors by time range
gplay vitals errors list \
--package com.example.app \
--start-time 2026-01-01T00:00:00Z \
--end-time 2026-02-01T00:00:00ZCommon Flags
| Flag | Description |
|---|---|
--package | App package name (required) |
--start-time | Start of time range (RFC 3339) |
--end-time | End of time range (RFC 3339) |
--version-code | Filter by version code |
--version-name | Filter by version name |
--type | Event type (crash, anr) |
--output | Output format (json, table, markdown) |
--paginate | Fetch all pages |
--pretty | Pretty-print JSON output |
Workflow Examples
Daily stability check
# Check crash rate for the latest version
gplay vitals crashes list \
--package com.example.app \
--version-name "2.1.0" \
--output table
# Check ANR rate
gplay vitals crashes list \
--package com.example.app \
--version-name "2.1.0" \
--type anr \
--output table
# Review performance
gplay vitals performance overview \
--package com.example.app \
--output tableInvestigate a crash spike
# 1. List top crash clusters
gplay vitals crashes list \
--package com.example.app \
--start-time 2026-02-10T00:00:00Z \
--output table
# 2. Get details for the top cluster
CLUSTER=$(gplay vitals crashes list \
--package com.example.app \
--start-time 2026-02-10T00:00:00Z | jq -r '.[0].clusterId')
gplay vitals crashes get \
--package com.example.app \
--cluster-id $CLUSTER \
--pretty
# 3. Check if it's version-specific
gplay vitals crashes list \
--package com.example.app \
--version-code 105 \
--output tableCI/CD stability gate
# Check if crash rate exceeds threshold before promoting
CRASH_COUNT=$(gplay vitals crashes list \
--package com.example.app \
--version-name "$VERSION" | jq 'length')
if [ "$CRASH_COUNT" -gt 10 ]; then
echo "Too many crash clusters ($CRASH_COUNT). Halting promotion."
exit 1
fi
gplay promote \
--package com.example.app \
--from beta \
--to production \
--rollout 10Best Practices
- Monitor after every release - Check vitals within 24-48 hours of rollout.
- Upload deobfuscation files - Ensure crash stack traces are readable.
- Set up CI stability gates - Block promotion when crash rates exceed thresholds.
- Track ANRs separately - ANRs impact Play Store ranking more than crashes.
- Compare across versions - Filter by version code to detect regressions.
- Use JSON output in scripts - Parse with
jqfor automated monitoring.