mcpField
E
eas-update-insights

eas-update-insights

github.com/expoクラウド・DevOps3.5k37.6k 回インストール今日更新
リポジトリ

eas-update-insights について

eas-update-insightsは、eas-cliで公開済みEAS Updateの集計指標を調べるスキルです。プラットフォーム別のクラッシュ率、ユーザー数、ペイロードサイズ、チャンネルごとの更新状況を確認し、リリースの健全性や普及状況を把握できます。

主な機能

  1. 01起動、失敗、クラッシュ率の確認
  2. 02ユニークユーザー数とペイロードサイズの表示
  3. 03チャンネルとランタイムバージョン別の普及状況確認
  4. 04人間向けまたはJSON形式での出力

活用シーン

  1. 01公開直後のアップデートの健全性確認
  2. 02チャンネル間の普及状況の比較
  3. 03ロールアウトの回帰や失敗率上昇の検知
  4. 04リリースノート用の指標集計

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/expo/skills --skill eas-update-insights

インストール後、Claude Code で/eas-update-insightsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
channel-insights-schema.md
update-insights-schema.md

詳細

EAS Update Insights

EAS サービス — 費用が発生します。 Insights は、無料枠の制限がある有料の Expo Application Services 製品である EAS Update を通じて公開された更新を対象としています。更新の配信と、これらのコマンドで使用するデータは、プランの EAS Update 使用量に算入されます。https://expo.dev/pricing をご確認ください。

公開済みの EAS Update の状態を、CLI から直接確認できます。起動数、起動失敗数、クラッシュ率、ユニークユーザー数、ペイロードサイズ、チャンネルごとの埋め込み版と OTA ユーザーの割合、ランタイムバージョンごとの最も人気のある更新を確認できます。データは expo.dev の更新およびチャンネルの詳細ページで使用されているものと同じで、これらのコマンドを使うと、ターミナル上で人間が読める形式と JSON 形式で取得できます。

このスキルを使用する場面

公開済みの EAS Update の状態や利用状況(クラッシュ率、インストール数、ユニークユーザー数、バンドルサイズ、チャンネルで埋め込み版と OTA ユーザーが占める割合など)を確認したい場合に使用してください。

質問の例:

  • 「最新の更新の状況はどうですか?」
  • 「最新の更新に問題はありませんか?」
  • 「新しいリリースは前回よりクラッシュが増えていますか?」
  • 「最新の更新を使用しているユーザーと埋め込み版ビルドを使用しているユーザーは、それぞれ何人ですか?」
  • 「現在、production で最も人気のある更新はどれですか?」
  • 「更新バンドルのサイズはどれくらいですか?」

公開後のロールアウト監視やリグレッション検出にも適しています。

ユーザーごとのクラッシュの詳細やデバイスレベルのレポートが必要な場合は使用しないでください。このスキルで取得できるのは、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 の確認

更新グループの Insights を取得する前に、その group ID が必要です。eas 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'

JSON レスポンスには、更新グループごとに 1 つのエントリーを含む currentPage 配列があります(同じ公開による両プラットフォームの更新は 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 出力を、同じプラットフォームごとのインサイトでインラインに拡張します。

# 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

--insights を指定しない場合、update:view はまったく以前と同じように動作します — 既存の利用者にとって JSON の形式は変わりません。--days / --start / --end フラグは --insights が設定されている場合にのみ適用されます。これら単独で渡すとエラーになります。

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

チャネルごとに、埋め込みビルドとオーバー・ザ・エア更新のどちらを利用しているユーザーが何人いるか、またどの更新が最も多くのトラフィックを集めているかを表示します。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 / --endupdate: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. 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}'

プラットフォーム間で、また以前のリリースと比較して 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)'
リリースノート用にグループのメトリクスを要約する
eas update:view "$GROUP_ID" --insights --days 30

人が読みやすいグループの詳細に加え、プラットフォームごとの過去30日間の起動数/失敗数を表示します。変更履歴やインシデントレビューにそのまま貼り付けられます。

出力のヒント

  • JSONをjqに渡します。ペイロードは簡単にフィルタリングできる構造になっています。
  • --jsonを指定すると--non-interactiveも有効になりますが、両方を明示的に渡すと、スクリプトで使いやすくなります。
  • daily[].dateの日付はUTCのISOタイムスタンプです。人が読みやすい形式のテーブルではYYYY-MM-DD(UTC)で表示されます。
  • CLIのテーブルでは「Launches」/「Crashes」と表示されますが、JSONではinstalls/failedInstallsです。同じフィールドで、表示名が異なります。

制限事項

  • プラットフォームをまたいだユニークユーザー数では、同じ公開内容をiOSとAndroidの両方で実行したユーザーが重複して数えられる場合があります。同じ注意点は、mostPopularUpdatesの合計であるチャンネルインサイトのotaTotalUniqueUsersにも当てはまります。
  • 公開直後の内容は、メトリクスのパイプラインが追いつくまで、しばらくゼロと表示されることがあります。
  • インストール数は起動数ではなくダウンロード数です:installs/「Launches」フィールドは、マニフェストと起動アセットをダウンロードしたユーザー数を示します。確認済みの実行が記録されるのは、ユーザーが次に更新を確認したときです(アプリの更新ポリシーによりますが、通常は最大24時間後です)。そのため、メトリクスには実際の状態とのわずかな遅れがあります。
  • クラッシュは自己申告です:failedInstalls/「Crashes」は、インストール/起動中にエラーが発生し、次回の更新確認時に報告された更新の数を示します。更新リクエストが発生しないクラッシュ(例:復旧前にプロセスが終了した場合)は表示されません。

フィードバックの送信

このスキルでエラー、誤解を招く情報、または古い情報を見つけた場合は、Expoが改善できるよう報告してください:

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

具体的で実行可能な報告事項がある場合にのみ送信してください。関連する情報をできるだけ多く含めてください。 エージェントがExpoのタスクを繰り返し失敗した場合や、ユーザーが介入しなければならなかった場合は、タスク、期待される結果、問題の内容を簡潔に報告し、--category evalsと、関連するExpoパッケージまたはコマンドを--subjectとして指定してください。

コメント