Loading...
Loading...
Check the health of published EAS Updates: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.
npx skill4agent add expo/skills eas-update-insightseas-clinpm install -g eas-clieas loginchannel:insightsapp.jsonupdate:insights| Command | Purpose |
|---|---|
| Discover recent update groups, their |
| Per-platform launches, failed launches, crash rate, unique users, payload size, daily breakdown |
| Update group details + the same metrics appended |
| Embedded/OTA user counts, most popular updates, cumulative metrics for a channel + runtime |
--json --non-interactivegroupeas update:list--branch <name>--all--json --non-interactive--all# Latest group id across all branches
eas update:list --all --json --non-interactive | jq -r '.currentPage[0].group'
# Latest group id on a specific branch
eas update:list --branch production --json --non-interactive | jq -r '.currentPage[0].group'currentPage{
"currentPage": [
{
"branch": "production",
"message": "\"Fix checkout crash\" (1 week ago by someone)",
"runtimeVersion": "1.0.6",
"group": "03d5dfcf-736c-475a-8730-af039c3f4d06",
"platforms": "android, ios",
"isRollBackToEmbedded": false
}
]
}codeSigningKeyrolloutPercentage--branch <name>nameideas update:insights <groupId>eas update:insights 03d5dfcf-736c-475a-8730-af039c3f4d06| Flag | Description |
|---|---|
| Look back N days. Default: 7. Mutually exclusive with |
| Explicit time range, e.g. |
| Filter to a single platform. Omit to see all platforms in the group. |
| Machine-readable output. Implies |
| Required when scripting. |
groupIdtimespanstartenddaysBackplatforms[]updateIdtotalsuniqueUsersinstallsfailedInstallscrashRatePercentpayloadlaunchAssetCountaverageUpdatePayloadBytesdaily[]{ date, installs, failedInstalls }platforms[].totals.crashRatePercentfailedInstalls / (installs + failedInstalls) * 100platforms[].totals.installsuniqueUsersplatforms[].dailyCould not find any updates with group ID: "<id>"Update group "<id>" has no ios update (available platforms: android)--platform iosEAS Update insights is not supported by this version of eas-cli. Please upgrade ...npm install -g eas-cli@latesteas update:view <groupId> --insightsupdate:view# Human-readable
eas update:view 03d5dfcf-... --insights
eas update:view 03d5dfcf-... --insights --days 30
# JSON: wrapped as { updates: [...], insights: {...} }
eas update:view 03d5dfcf-... --json --insights--insightsupdate:view--days--start--end--insightseas channel:insights --channel <name> --runtime-version <version>eas channel:insights --channel production --runtime-version 1.0.6| Flag | Description |
|---|---|
| Required. The channel name (e.g. |
| Required. Match exactly what was published. Check |
| Look back N days. Default: 7. |
| Explicit time range, like |
| Machine-readable output. |
channelruntimeVersiontimespanembeddedUpdateTotalUniqueUsersotaTotalUniqueUsersmostPopularUpdates[]rankgroupIdmessageplatformtotalUniqueUserscumulativeMetricsAtLastTimestamp[]uniqueUsersOverTimecumulativeMetricsOverTimelabelsdatasetsembeddedUpdateTotalUniqueUsersmostPopularUpdates[]totalUniqueUsersotaTotalUniqueUsersuniqueUsersOverTimecumulativeMetricsOverTimeCould not find channel with the name <name>mostPopularUpdates# 1. Grab the latest publish on production
GROUP_ID=$(eas update:list --branch production --json --non-interactive \
| jq -r '.currentPage[0].group')
# 2. Give it some adoption time (minutes to hours), then check crash rate
eas update:insights "$GROUP_ID" --json --non-interactive \
| jq '.platforms[] | {platform, installs: .totals.installs, crashRate: .totals.crashRatePercent}'crashRatefor channel in production staging; do
echo "--- $channel ---"
eas channel:insights --channel "$channel" --runtime-version 1.0.6 --json --non-interactive \
| jq '{
channel,
embedded: .embeddedUpdateTotalUniqueUsers,
ota: .otaTotalUniqueUsers,
topUpdate: .mostPopularUpdates[0]
}'
doneeas update:insights "$GROUP_ID" --days 1 --json --non-interactive \
| jq '.platforms[] | select(.totals.crashRatePercent > 1)'eas update:view "$GROUP_ID" --insights --days 30jq--json--non-interactivedaily[].dateYYYY-MM-DDinstallsfailedInstallsotaTotalUniqueUsersmostPopularUpdatesinstallsfailedInstalls