• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

eas-update-insights

プラグイン
expo
ライセンス
MIT
ソース
GitHub で見る ↗
説明

EAS サービス(有料版)。公開済みのEAS Updateの状態を確認します。クラッシュレート(不具合による停止の頻度)、インストール・起動数、利用ユーザー数、ペイロードサイズ(データの大きさ)、チャネルごとの組み込み版とOTA(アプリを再インストールせず配信)ユーザーの割合を調べることができます。 次のような場合に使用: - アップデートのパフォーマンスを確認したい - ロールアウト(段階的配信)が健全な状態か確認したい - 組み込み版とOTA版を使用しているユーザー数を知りたい - CI(継続的な統合システム)をアップデートの健全性に基づいて制御したい

原文を表示

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.

ユースケース
  • アップデートのパフォーマンスを確認したい
  • ロールアウトが健全な状態か確認したい
  • 組み込み版とOTA版のユーザー数を知りたい
  • CIをアップデート健全性に基づいて制御したい
本文(日本語訳)

EAS Update Insights

EAS サービス - 利用料が発生します。 このスキルでカバーされるのは、EAS Update(有料の Expo Application Services 製品で無料利用枠あり)を通じて公開されたアップデートです。アップデートの配信とこれらコマンドに関するデータは、あなたのプランの EAS Update 利用枠を消費します。詳細は https://expo.dev/pricing を確認してください。

CLI から EAS Update の健全性を直接確認できます:起動数、起動失敗数、クラッシュレート、ユニークユーザー数、ペイロードサイズ、チャネルごとの埋め込み版と OTA(オンザエアアップデート/アプリを停止せずに配信されるアップデート)ユーザーの内訳、ランタイムバージョンごとの人気アップデートなど。このデータは expo.dev のアップデート・チャネル詳細ページを動かしているのと同じデータであり、ターミナルで人間が読める形式と JSON 形式の両方で表示されます。

このスキルを使う場面

公開済み EAS Update の健全性や普及状況を評価したい場合に使用:クラッシュレート、インストール数、ユニークユーザー数、バンドルサイズ、チャネルの埋め込み版・OTA ユーザーの内訳など。

使用例:

  • 「最新のアップデートの調子はどう?」
  • 「最新のアップデートは正常に動作してる?」
  • 「新しいリリースは前のバージョンより多くクラッシュしてる?」
  • 「最新のアップデートを使ってるユーザーと埋め込み版を使ってるユーザーはどれくらい?」
  • 「本番環境で今、一番人気なアップデートはどれ?」
  • 「アップデートのバンドルはどのくらいの大きさ?」

対応できる場面:公開後のロールアウト監視、問題検知。

使わない場面:ユーザー単位でのクラッシュ詳細やデバイスレベルのレポートが必要な場合。このスキルは集計された EAS メトリクスのみを提供します。

必要な準備

  • eas-cli がインストール済み(npm install -g eas-cli)
  • ログイン済み(eas login)
  • channel:insights の場合:Expo プロジェクトディレクトリから実行(app.json からプロジェクト ID を自動取得)。update:insights はログインだけで実行可能。

コマンド一覧

コマンド 機能
eas update:list 最近のアップデートグループ、group ID、ブランチ名を表示
eas update:insights <groupId> プラットフォームごとの起動数、起動失敗数、クラッシュレート、ユニークユーザー数、ペイロードサイズ、日別の内訳
eas update:view <groupId> --insights アップデートグループの詳細に加え、同じメトリクスを追加表示
eas channel:insights --channel <name> --runtime-version <version> 埋め込み版・OTA ユーザー数、人気アップデート、チャネル+ランタイムの累積メトリクス

すべてのコマンドは --json --non-interactive でプログラム処理対応の出力が可能です。

ID の取得方法

アップデートグループのインサイトをクエリする前に、その group ID が必要です。eas update:list を --branch <name>(そのブランチ上のアップデート)または --all(すべてのブランチ)と一緒に使用してください。プログラムで実行する場合は、ブランチ選択プロンプトを避けるため、ブランチ/--all フラグなしで実行する際は常に --json --non-interactive を付けてください:

# すべてのブランチ全体の最新 group id
eas update:list --all --json --non-interactive | jq -r '.currentPage[0].group'

# 特定のブランチの最新 group id
eas update:list --branch production --json --non-interactive | jq -r '.currentPage[0].group'

JSON レスポンスには currentPage 配列があり、アップデートグループごとに 1 つのエントリを含みます(同じ公開の両プラットフォームは 1 つのエントリに集約):

{
  "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
    }
  ]
}

エントリに含まれるのは codeSigningKey と rolloutPercentage も使用されている場合のみ(未設定の値は JSON 出力から除外)です。

--branch <name> で呼び出した場合、レスポンスにはトップレベルに name(ブランチ名)と id(ブランチ ID)も含まれます。

eas update:insights <groupId>

単一のアップデートグループについて、起動数、起動失敗数、クラッシュレート、ユニークユーザー数、起動アセット数、平均ペイロードサイズを表示します。プラットフォームごと(iOS、Android)に分類され、さらに起動と失敗の日別内訳を含みます。

基本的な使い方

eas update:insights 03d5dfcf-736c-475a-8730-af039c3f4d06

フラグ

フラグ 説明
--days <N> N 日さかのぼって確認。デフォルト:7。--start/--end と同時使用不可。
--start <iso-date> / --end <iso-date> 明示的な期間指定、例 --start 2026-04-01 --end 2026-04-15
--platform <ios|android> 単一プラットフォームにフィルタ。省略するとグループ内のすべてのプラットフォームを表示。
--json 機械可読形式での出力。--non-interactive を含みます。
--non-interactive スクリプト実行時に必須。

JSON 出力フォーマット

トップレベル:groupId、timespan(start、end、daysBack)、グループが公開されたプラットフォームごとに 1 つのエントリを含む platforms[]。各プラットフォームエントリには updateId、totals(uniqueUsers、installs、failedInstalls、crashRatePercent)、payload(launchAssetCount、averageUpdatePayloadBytes)、{ date, installs, failedInstalls } の時系列データ daily[] が含まれます。

完全なスキーマとフィールドリファレンスは references/update-insights-schema.md を参照。

健全性評価に重要なフィールド:

  • platforms[].totals.crashRatePercent:failedInstalls / (installs + failedInstalls) * 100 で計算。インストール数がゼロの場合はゼロ。
  • platforms[].totals.installs と uniqueUsers:普及状況の指標。
  • platforms[].daily:時系列データで、失敗の急増を検出するのに有用。

エラー

  • Could not find any updates with group ID: "<id>" — グループが存在しないか、アクセス権がない。
  • Update group "<id>" has no ios update (available platforms: android) — --platform ios を指定したが、そのグループは iOS 向けに公開されていない。
  • EAS Update insights is not supported by this version of eas-cli. Please upgrade ... — サーバーが CLI が依存するフィールドを廃止した。npm install -g eas-cli@latest を実行してください。

eas update:view <groupId> --insights

標準の update:view 出力をインラインで同じプラットフォーム別インサイトで拡張します。

# 人間が読める形式
eas update:view 03d5dfcf-... --insights
eas update:view 03d5dfcf-... --insights --days 30

# JSON:{ updates: [...], insights: {...} } でラップ
eas update:view 03d5dfcf-... --json --insights

--insights なしの場合、update:view は以前と同じ動作です — 既存の利用者向けに JSON フォーマットは変更されません。--days / --start / --end フラグは --insights が設定された場合にのみ適用されます。単独で指定するとエラーになります。

eas channel:insights --channel <name> --runtime-version <version>

チャネルごとに、埋め込み版ビルドを使用しているユーザー数と OTA アップデートを使用しているユーザー数、およびどのアップデートが最もトラフィックを獲得しているかを表示します。Expo プロジェクトディレクトリから実行する必要があります。

基本的な使い方

eas channel:insights --channel production --runtime-version 1.0.6

フラグ

フラグ 説明
--channel <name> 必須。 チャネル名(例 production、staging)。
--runtime-version <version> 必須。 公開時の値と完全一致させます。update:list の runtimeVersion 値で確認してください。
--days <N> N 日さかのぼって確認。デフォルト:7。
--start / --end 明示的な期間指定、update:insights と同様。
--json / --non-interactive 機械可読形式での出力。

JSON 出力フォーマット

トップレベル:channel、runtimeVersion、timespan、embeddedUpdateTotalUniqueUsers、otaTotalUniqueUsers、mostPopularUpdates[](各々に rank、groupId、message、platform、totalUniqueUsers を含む)、cumulativeMetricsAtLastTimestamp[]、labels と datasets を含む uniqueUsersOverTime と cumulativeMetricsOverTime。

完全なスキーマとフィールドリファレンスは references/channel-insights-schema.md を参照。

重要なフィールド:

  • embeddedUpdateTotalUniqueUsers:埋め込み版(バイナリに含まれる)ビルドを実行しているユーザー数。
  • mostPopularUpdates[]:totalUniqueUsers でランク付けされたアップデート。注意:これはサーバーが返す上位 N 件です。otaTotalUniqueUsers はそのリストの合計であり、上位 N 件以上のアップデートが活動している場合、OTA の総利用に達しないことがあります。
  • uniqueUsersOverTime と cumulativeMetricsOverTime:チャート用の日別データ系列。

エラー

  • Could not find channel with the name <name> — チャネル名の誤字か、アカウント関連の問題。
  • テーブルに "No update launches recorded" / JSON で mostPopularUpdates が空 — そのチャネル+ランタイム組み合わせに対し、OTA アップデートがまだ起動されていない。通常、チャネルが埋め込み版ビルドのみを配信している状態です。

よくあるワークフロー

今公開したアップデートが健全なことを確認する

# 1. 本番環境上の最新公開の group id を取得
GROUP_ID=$(eas update:list --branch production --json --non-interactive \
  | jq -r '.currentPage[0].group')

# 2. 採用時間を待って(数分~数時間)、クラッシュレートを確認
eas update:insights "$GROUP_ID" --json --non-interactive \
  | jq '.platforms[] | {platform, installs: .totals.installs, crashRate: .totals.crashRatePercent}'

プラットフォーム間、および以前のリリースと比較して crashRate を確認します。急増や非対称な動作(iOS で急増し Android が平坦、またはその逆)は調査の信号です。

2 つのチャネル間で採用状況を比較する

for 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]
      }'
done

過去 24 時間のロールアウト問題を検知する

eas update:insights "$GROUP_ID" --days 1 --json --non-interactive \
  | jq '.platforms[] | select(.totals.crashRatePercent > 1)'

リリースノートのグループメトリクス

原文(English)を表示

EAS Update Insights

EAS service - costs apply. Insights cover updates published through EAS Update, a paid Expo Application Services product with free-tier limits. Update delivery and the data behind these commands count against your plan's EAS Update usage. Review https://expo.dev/pricing.

Query the health of published EAS Update directly from the CLI: launches, failed launches, crash rates, unique users, payload size, the embedded-vs-OTA user split per channel, and the most popular updates per runtime version. The data is the same data that powers the update and channel detail pages on expo.dev; these commands expose it in the terminal in human and JSON form.

When to use this skill

Use this when the user wants to assess the health or adoption of a published EAS Update: crash rates, install counts, unique users, bundle size, or the split between embedded and OTA users on a channel.

Example prompts:

  • "How is the latest update doing?"
  • "Is the latest update healthy?"
  • "Is the new release crashing more than the last one?"
  • "How many users are on the latest update vs the embedded build?"
  • "Which update is most popular on production right now?"
  • "How big is our update bundle?"

Also fits: post-publish rollout monitoring and regression detection.

Don't use when the user needs per-user crash detail or device-level reporting; this skill only exposes aggregate EAS metrics.

Prerequisites

  • eas-cli installed (npm install -g eas-cli).
  • Logged in: eas login.
  • For channel:insights: run from an Expo project directory (the command resolves the project ID from app.json). update:insights only needs a login.

Commands at a glance

Command Purpose
eas update:list Discover recent update groups, their group IDs, and branch names
eas update:insights <groupId> Per-platform launches, failed launches, crash rate, unique users, payload size, daily breakdown
eas update:view <groupId> --insights Update group details + the same metrics appended
eas channel:insights --channel <name> --runtime-version <version> Embedded/OTA user counts, most popular updates, cumulative metrics for a channel + runtime

All of these support --json --non-interactive for programmatic parsing.

Discovering IDs

Before querying insights for an update group, you need its group ID. Use eas update:list with either --branch <name> (updates on that branch) or --all (updates across all branches). Always pass --json --non-interactive when running non-interactively; without a branch/--all flag the command will otherwise prompt for a branch selection:

# 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'

The JSON response has a currentPage array with one entry per update group (both platforms of the same publish are collapsed into one entry):

{
  "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
    }
  ]
}

Entries also carry codeSigningKey and rolloutPercentage, but only when those features are in use for the group (undefined values are omitted from the JSON output).

When called with --branch <name>, the response also includes name (the branch name) and id (the branch ID) at the top level.

eas update:insights <groupId>

Shows launches, failed launches, crash rate, unique users, launch asset count, and average payload size for a single update group, broken down per platform (iOS, Android), plus a daily breakdown of launches and failures.

Basic use

eas update:insights 03d5dfcf-736c-475a-8730-af039c3f4d06

Flags

Flag Description
--days <N> Look back N days. Default: 7. Mutually exclusive with --start/--end.
--start <iso-date> / --end <iso-date> Explicit time range, e.g. --start 2026-04-01 --end 2026-04-15.
--platform <ios|android> Filter to a single platform. Omit to see all platforms in the group.
--json Machine-readable output. Implies --non-interactive.
--non-interactive Required when scripting.

JSON output shape

Top level: groupId, timespan (start, end, daysBack), and platforms[] with one entry per platform the group was published to. Each platform entry has updateId, totals (uniqueUsers, installs, failedInstalls, crashRatePercent), payload (launchAssetCount, averageUpdatePayloadBytes), and a daily[] time series of { date, installs, failedInstalls }.

For the complete schema and field reference, see references/update-insights-schema.md.

Fields that matter for health assessment:

  • platforms[].totals.crashRatePercent, computed as failedInstalls / (installs + failedInstalls) * 100. Zero when there are no installs.
  • platforms[].totals.installs and uniqueUsers give the adoption signal.
  • platforms[].daily is a time series, useful for spotting a sudden spike in failures.

Errors

  • Could not find any updates with group ID: "<id>" — group doesn't exist or you lack access.
  • Update group "<id>" has no ios update (available platforms: android) — --platform ios was used but the group wasn't published for iOS.
  • EAS Update insights is not supported by this version of eas-cli. Please upgrade ... — the server deprecated a field the CLI relies on. Run npm install -g eas-cli@latest.

eas update:view <groupId> --insights

Extends the standard update:view output with the same per-platform insights, inline.

# 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

Without --insights, update:view behaves exactly as before — no JSON shape change for existing consumers. The --days / --start / --end flags only apply when --insights is set; passing them alone errors.

eas channel:insights --channel <name> --runtime-version <version>

Shows, per channel, how many users are on the embedded build vs over-the-air updates and which updates are pulling the most traffic. Must be run from an Expo project directory.

Basic use

eas channel:insights --channel production --runtime-version 1.0.6

Flags

Flag Description
--channel <name> Required. The channel name (e.g. production, staging).
--runtime-version <version> Required. Match exactly what was published. Check runtimeVersion values in update:list.
--days <N> Look back N days. Default: 7.
--start / --end Explicit time range, like update:insights.
--json / --non-interactive Machine-readable output.

JSON output shape

Top level: channel, runtimeVersion, timespan, embeddedUpdateTotalUniqueUsers, otaTotalUniqueUsers, mostPopularUpdates[] (each with rank, groupId, message, platform, totalUniqueUsers), cumulativeMetricsAtLastTimestamp[], plus chart-shaped uniqueUsersOverTime and cumulativeMetricsOverTime objects with labels and datasets.

For the complete schema and field reference, see references/channel-insights-schema.md.

Fields that matter:

  • embeddedUpdateTotalUniqueUsers is the count of users running the embedded (binary-bundled) build.
  • mostPopularUpdates[] is updates ranked by totalUniqueUsers. Caveat: this is the top-N the server returns; otaTotalUniqueUsers is a sum of that list and may undercount total OTA reach if more than top-N updates are active.
  • uniqueUsersOverTime and cumulativeMetricsOverTime are daily data series for charting.

Errors

  • Could not find channel with the name <name> — typo or wrong account.
  • "No update launches recorded" in the table / empty mostPopularUpdates in JSON — no OTA update has been launched for that channel + runtime yet. Usually means the channel is still serving the embedded build only.

Common workflows

Verify the update I just published is healthy

# 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}'

Compare the crashRate across platforms and against previous releases; sudden spikes or asymmetric behaviour (iOS spiking while Android is flat, or vice versa) is the signal to investigate.

Compare adoption between two channels

for 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]
      }'
done

Detect a rollout regression in the last 24 hours

eas update:insights "$GROUP_ID" --days 1 --json --non-interactive \
  | jq '.platforms[] | select(.totals.crashRatePercent > 1)'

Summarize group metrics for release notes

eas update:view "$GROUP_ID" --insights --days 30

Human-readable group details plus 30 days of launches/failures per platform — suitable for pasting into a changelog or incident review.

Output tips

  • Pipe JSON through jq; payloads are structured for easy filtering.
  • --json implies --non-interactive, but passing both is explicit and scripting-friendly.
  • Dates in daily[].date are UTC ISO timestamps; the human-readable table renders them as YYYY-MM-DD (UTC).
  • The CLI table labels say "Launches" / "Crashes" while JSON uses installs / failedInstalls. Same field, different display name.

Limitations

  • Unique users across platforms may double-count users who run the same publish on both iOS and Android. The same caveat applies to otaTotalUniqueUsers in channel insights, which is a sum over mostPopularUpdates.
  • Fresh publishes may show zeros for a short period while the metrics pipeline catches up.
  • Installs are downloads, not launches: the installs / "Launches" field counts users who downloaded the manifest and launch asset. A confirmed run only registers on the user's next update check (typically up to 24h later, depending on the app's update policy). So metrics lag the real-world state slightly.
  • Crashes are self-reported: failedInstalls / "Crashes" counts updates that errored during install/launch and were reported on the next update check. Crashes that don't trigger an update request (e.g. process kill before recovery) won't appear.

Submitting Feedback

If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:

npx --yes submit-expo-feedback@latest --category skills --subject "eas-update-insights" "<actionable feedback>"

Only submit when you have something specific and actionable to report. Include as much relevant context as possible. If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。