All skills
expo avatar

/eas-update-insights

@5c8f62e official
by expoexpo/skills2.6k stars
156

EAS service (paid). Check the health of published EAS Update: 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.

Use this Skill: https://skilld.dev/gh/expo/skills/eas-update-insights

This session only. Nothing lands on disk.

referenceschannel-insights-schema.md

≈601 tokens on demand. Your agent reads this file only when SKILL.md points to it.

eas channel:insights JSON schema

Complete JSON output shape returned by eas channel:insights --channel <name> --runtime-version <version> --json --non-interactive.

{
  "channel": "production",
  "runtimeVersion": "1.0.6",
  "timespan": { "start": "...", "end": "...", "daysBack": 7 },
  "embeddedUpdateTotalUniqueUsers": 2401,
  "otaTotalUniqueUsers": 8312,
  "mostPopularUpdates": [
    {
      "rank": 1,
      "groupId": "abc123",
      "message": "Fix checkout crash",
      "platform": "ios",
      "totalUniqueUsers": 4210
    }
  ],
  "cumulativeMetricsAtLastTimestamp": [
    { "id": "...", "label": "Embedded update", "data": 12345 },
    { "id": "...", "label": "Embedded update failed installs", "data": 0 }
  ],
  "uniqueUsersOverTime": { "labels": ["..."], "datasets": [ { "id": "...", "label": "...", "data": [100, 200] } ] },
  "cumulativeMetricsOverTime": { "labels": ["..."], "datasets": [ { "id": "...", "label": "...", "data": [10, 20] } ] }
}

Field reference

Path Meaning
channel The channel queried.
runtimeVersion The runtime version filter used. Channel insights are always scoped to a single runtime.
timespan.start / .end / .daysBack Window bounds (UTC ISO) and size in days.
embeddedUpdateTotalUniqueUsers Distinct users running the embedded (binary-bundled) build in the window.
otaTotalUniqueUsers Sum of totalUniqueUsers across mostPopularUpdates. May undercount if more than top-N updates are active (see caveat below).
mostPopularUpdates[] Top-N updates ranked by totalUniqueUsers. Each entry has rank, groupId, message, platform, totalUniqueUsers.
cumulativeMetricsAtLastTimestamp[] Snapshot totals at the end of the window, labelled (e.g., "Embedded update", "Embedded update failed installs").
uniqueUsersOverTime Chart-shaped object with labels (dates) and datasets for plotting unique users over time.
cumulativeMetricsOverTime Chart-shaped object for plotting cumulative metrics over time.

Caveats

  • otaTotalUniqueUsers is a sum of mostPopularUpdates[].totalUniqueUsers. If more OTA updates are active than the top-N the server returns, this figure undercounts true OTA reach.
  • A user running the same publish on both iOS and Android may be counted on each platform. Don't treat uniqueUsers as cross-platform-deduped.

Source: SKILL.md on GitHub

1 warning16d3 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill is functional for monitoring EAS updates but has a potential surface for indirect prompt injection via update metadata and uses a remote package for feedback submission.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 1 issue

Signed by skilld at 5c8f62e. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 days ago.

Activeupdated 2 months ago
What it can do
Runs commands
version
1.0.0
All 1 allowed tools
Bash(eas *)
  • eas
  • expo
  • monitoring
  • rollout
  • crash-detection
  • ci
  • updates
  • ota
  • metrics

README badge

README badge for expo/skills/eas-update-insights

Queries EAS Update health metrics from the CLI: crash rates, install counts, unique users, payload size, and embedded-vs-OTA user split per channel. Use this to assess whether a published update is performing well, detect regressions, or gate CI on health thresholds.

Generated from the current SKILL.md.

Does this skill work with both iOS and Android?
Yes. The `eas update:insights` command breaks down metrics per platform (iOS, Android), and you can filter to a single platform with `--platform` if needed. Channel insights also report embedded/OTA splits per platform.
What metrics does this skill expose?
Launches, failed launches, crash rates, unique users, payload size, daily breakdowns, and the split between embedded build users vs OTA users per channel. All data comes from the same source powering the update detail pages on expo.dev.
Can I use this to gate CI decisions on update health?
Yes. The skill supports `--json --non-interactive` flags for programmatic parsing, making it suitable for scripting crash rate checks or adoption metrics into CI pipelines.
Does this require running from a project directory?
`update:insights` and `update:list` work from anywhere with `eas-cli` and a login. `channel:insights` must be run from an Expo project directory so it can resolve the project ID from `app.json`.
What if I need per-user or device-level crash details?
This skill only exposes aggregate EAS metrics. For per-user crash detail or device-level reporting, you will need to use other tools outside of this skill.

Generated from the current SKILL.md. These answers refresh after source changes.