• 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

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

EAS サービス(有料)。expo-updates と EAS CLI を使用して、EAS Update で JavaScript とアセット(画像やフォントなどの資産ファイル)をインターネット経由で更新する設定と運用ができます。 次のような場合に使用: - OTA 更新(インターネット経由での更新)の設定 - `eas update:configure` や `eas update` コマンドの実行 - プレビュー・ステージング・本番環境のチャネルへの公開 - ブランチ・チャネル・ランタイムバージョンの説明 - 更新のテスト - インストール済みのビルドが古いコードのままになっている原因の調査 テストフライト、プレビュー、本番環境での更新が表示されない場合に活用してください。アプリの起動時や再度開く際の挙動に関する質問にも対応します。 **使用しない場合:** 更新の健全性を示すメトリクス(利用状況の採用率、クラッシュ、段階的な展開の監視)の確認には、代わりに eas-update-insights を使用してください。

原文を表示

EAS service (paid). Configure and use EAS Update for over-the-air JavaScript and asset updates with expo-updates and EAS CLI. Use when setting up OTA updates, running eas update:configure or eas update, publishing to preview/staging/production channels, explaining branches/channels/runtime versions, testing updates, or debugging why an installed build still shows old code. Load for TestFlight, preview, or production updates that do not appear, including questions about cold launches or reopening the app. Not for update health metrics; use eas-update-insights for adoption, crashes, and rollout monitoring.

ユースケース
  • OTA更新の設定と運用
  • 更新コマンドの実行
  • 複数環境への公開
  • 更新のテスト
  • 古いコード問題の調査
本文(日本語訳)

EAS Update

EAS サービス - 費用が発生します。 EAS Update はフリープランで利用できます。公開と配信は更新、帯域幅、ストレージの枠を使用し、有料プランではより高い制限があります。https://expo.dev/pricing をご覧ください。

EAS Update を使用して、新しいネイティブ版(アプリの基本部分)を提出することなく、インストール済みアプリに JavaScript、スタイル、資産の互換性のある変更を配信できます。ネイティブコードの変更には新しいビルドが必要です。

サポートされている設定パスから始める

何かを変更する前に、package.json、Expo アプリ設定、eas.json(存在する場合)、および ios/ または android/ が追跡対象かどうかを確認してください。CLI の変更を確認する際に、見つけた内容を使用してください:

  • 既存の動的またはプラットフォーム固有のアプリ設定を保持してください。
  • eas.json が存在する場合、そのプロファイルと既存のチャネル割り当てを保持してください。CLI は、まだチャネルがないビルドプロファイルにのみプロファイル名と一致するチャネルを追加します。
  • eas.json がない場合は、手動で作成しないでください。CLI はユーザーに eas build:configure を別途実行するよう指示することがあります。
  • 追跡対象のネイティブプロジェクトがある場合、CLI がプラットフォームのネイティブ更新設定を同期することが予想されます。ない場合は、後のビルド中に連続ネイティブ生成(ネイティブコード自動生成機能)がネイティブ設定を適用することが予想されます。

パッケージをインストールまたは version(バージョン)固有の動作を解釈する前に、Expo SDK のバージョンを確認してください。

expo-updates がインストールされていない場合は、SDK 互換バージョンをインストールしてください:

npx expo install expo-updates

プロジェクトのルートから設定してください:

npx eas-cli@latest update:configure

updates.url、runtimeVersion、ネイティブメタデータ、またはビルドプロファイルチャネルを手動で作成するのではなく、eas update:configure を使用してください。このコマンドは EAS プロジェクトリンク、連続ネイティブ生成、およびコミット済みネイティブディレクトリを持つプロジェクトを理解しています。その結果の差分をレビューして説明してください。

プロジェクトがリンクされていない、またはユーザーが必要なリモート操作を承認していないため、コマンドが進められない場合は、独立して有効なパッケージインストール後に停止し、何が残っているかを説明してください。実行時バージョンポリシー、設定プラグイン、更新 URL、またはチャネルを手動で追加することで、update:configure を部分的に再現しないでください。

動的アプリ設定、EAS 以外のビルド、または自動的に完了できないコマンドの場合は、推測するのではなく、現在のセットアップドキュメントに従ってください:https://docs.expo.dev/eas-update/getting-started.md

概念をしっかり理解する

  • ビルド: インストール済みのネイティブアプリ。ネイティブコード、埋め込まれた更新、プラットフォーム、実行時バージョン、通常はビルド時に固定されたチャネルを含みます。
  • 更新: 1 つのプラットフォームと実行時バージョン用に公開された JavaScript バンドル、資産、メタデータ。
  • ブランチ: 更新の順序付きストリーム。最新の互換更新がアクティブです。
  • チャネル: ビルドに埋め込まれた安定した配信先。サーバー上では、ブランチを指します。
  • 実行時バージョン: 更新とビルド内のネイティブコード間の互換性の境界。

ビルドが更新を受け取るのは、プラットフォームと実行時バージョンが一致し、ビルドのチャネルがその更新を含むブランチを指している場合のみです:

インストール済みビルド(チャネル: production、実行時: 1.1.1、プラットフォーム: ios)
  -> production チャネル
  -> production ブランチ
  -> 実行時 1.1.1 および ios の最新更新

チャネルとブランチは通常同じ名前ですが、別のオブジェクトです。eas channel:edit はそのチャネル上のすべてのビルドのサーバー側ブランチマッピングを変更します。個別のインストールに埋め込まれたチャネルは変更しません。

このモデルを使用して意思決定をしてください。ただし、毎回モデル全体を説明するのではなく、ユーザーのリクエストに必要な概念のみを説明してください。

更新が互換性を持つかどうかを判定する

インストール済みのネイティブランタイムが既にサポートしている JavaScript、スタイル、バンドルされた資産への変更に更新を使用してください。

ネイティブコードまたはネイティブ設定を追加または変更する場合は新しいネイティブビルドを作成してください。これには、ほとんどのネイティブライブラリの追加と SDK アップグレードが含まれます。実行時の不一致を回避したり、公開が既存ビルドにネイティブ機能を追加できることを暗示しないでください。https://docs.expo.dev/eas-update/runtime-versions.md を参照してください。

付随的な修正として、プロジェクトの実行時バージョンポリシーを変更しないでください。現在のポリシーが互換性にどのように影響するかを説明してください。ポリシーの変更は、インストール済みのどのビルドが将来の更新を受け取ることができるかを変更するため、別の決定として扱ってください。

意図的に公開する

現在の CLI ヘルプを記憶に頼る前に確認してください:

npx eas-cli@latest update --help

一般的なチャネルベースのフローの場合:

npx eas-cli@latest update \
  --channel <チャネル> \
  --message "<メッセージ>" \
  --environment <環境>

SDK 55 以降では公開に EAS 環境が必要です。エクスポート(取り出し)されたコードが意図した変数を受け取るように環境を意図的に選択してください。

公開はリモート状態を変更し、インストール済みアプリケーションに影響を与える可能性があります。実行する前に、正確なプロジェクト、チャネル、環境、プラットフォーム、実行時バージョン、メッセージを確立してください。ユーザーが明示的にリクエストまたは承認した場合にのみ本番環境に公開してください。承認またはターゲットがあいまいな場合は、コマンドを実行する前に停止して確認してください。現在の Git ブランチだけから本番環境を推論しないでください。

検証のためにプレビューまたはステージング用チャネル(テスト環境用チャネル)を選びます。テスト済み更新をプロモーションする場合は、ドキュメント化されたデプロイメントフロー(配置方法)を使用して、可能な限り本番環境が同じアーティファクト(成果物)を受け取るようにしてください:https://docs.expo.dev/eas-update/deployment.md

ビルドタイプに応じてテストする

開発ビルド

開発ビルドの Extensions UI、EAS ダッシュボード、または Expo Orbit で更新をプレビューしてください。通常の expo-dev-client 開発ビルドは、リリースビルドの自動起動更新フローのように動作しません。

プレビュー、TestFlight、本番ビルド

リリースビルドは通常、起動速度を優先します。デフォルトの起動動作では、アプリは現在の埋め込みまたはキャッシュされた更新を開始しながら、新しく公開された更新をバックグラウンドでダウンロードする場合があります。ダウンロード済み更新は後の再起動で適用されます。

手動による QA(品質保証)では、アプリをバックグラウンドにするのではなく完全に終了し、再度開き、更新がダウンロードされるまで待ち、変更が見えない場合は完全に終了して再度開いてください。これを TestFlight 固有のやり方ではなく、最大 2 回のコールドスタートと説明してください:

  1. 1 回目の起動で更新を検出してダウンロードできます。
  2. 次の起動でダウンロード済み更新を実行できます。

起動を 2 回避けるために fallbackToCacheTimeout を自動的に変更しないでください。起動時の待機は起動レイテンシと信頼性をトレードして、より高速な更新の有効化を実現します。アプリが意図的な更新 UX が必要な場合は、非ブロッキングの再起動アクションをチェック、取得、提示するための expo-updates API の使用を検討してください。プロジェクトの検出された SDK バージョンの expo-updates API リファレンスを使用してください。

更新されなかったビルドをデバッグする

以下の順序で確認してください:

  1. 更新が目的の EAS プロジェクト、チャネルまたはブランチ、プラットフォーム、環境に公開されたことを確認してください。
  2. インストール済みビルドのプラットフォームと実行時バージョンを公開された更新と比較してください。
  3. ビルドが実際に期待される更新 URL とチャネルを含んでいることを確認してください。アプリ設定の変更は新しくコンパイルされたビルドでのみ有効になります。
  4. チャネル間マッピングとそのブランチ上のアクティブな更新を検査してください。
  5. リリースビルドを完全に終了し、通常のダウンロード後の適用ライフサイクルを待ってください。
  6. ネイティブログ、エクスポート問題、設定チェックの現在のデバッグガイドを使用してください:https://docs.expo.dev/eas-update/debug.md

互換性またはリスク防止のセーフガード(安全装置)を単に更新を表示させるためだけにバイパスしないでください。

高度なワークフローと関連するワークフロー

  • チャネルサーフィング: 個別のリリースビルドは expo-channel-name リクエストヘッダーをオーバーライドして別の互換チャネルをリクエストできます。これはサーバー側のチャネル間マッピングを変更することとは異なります。https://docs.expo.dev/eas-update/channel-surfing.md に従い、そのアクセス制御、永続性、リカバリ、互換性制約を保持してください。
  • 更新ヘルスチェック: 公開後の導入、起動失敗、クラッシュ率、ペイロードサイズ、ロールアウト監視のために eas-update-insights を読み込んでください。
  • ストアリリース: ネイティブ変更で新しい TestFlight、App Store、または Play Store ビルドが必要な場合は eas-app-stores を読み込んでください。

公式リファレンス

  • セットアップ:https://docs.expo.dev/eas-update/getting-started.md
  • 概念とマッチング:https://docs.expo.dev/eas-update/how-it-works.md
  • デプロイメント:https://docs.expo.dev/eas-update/deployment.md
  • デバッグ:https://docs.expo.dev/eas-update/debug.md
  • 現在の EAS CLI リファレンス:https://docs.expo.dev/eas/cli.md

フィードバックの送信

このスキルでエラーや不正確もしくは古い情報が見つかった場合は、Expo が改善できるようにレポートしてください:

npx --yes submit-expo-feedback@latest --category skills --subject "eas-update" "<実行可能なフィードバック>"

特定で実行可能な内容がある場合にのみ送信してください。可能な限り関連するコンテキストを含めてください。

AI エージェントが繰り返し失敗したか、ユーザーが Expo タスクを引き継ぐ必要があった場合は、上記のコマンドを再利用するのではなく、expo-skill-feedback スキルを読み込み、その eval-candidate フロー(評価候補フロー)に従ってください。

原文(English)を表示

EAS Update

EAS service - costs apply. EAS Update is available on the Free plan; publishing and delivery use update, bandwidth, and storage allowances, with higher limits on paid plans. See https://expo.dev/pricing.

Use EAS Update to deliver compatible JavaScript, styling, and asset changes to installed apps without submitting a new native binary. Native-code changes still require a new build.

Start with the supported configuration path

Before changing anything, inspect package.json, the Expo app config, eas.json if present, and whether ios/ or android/ are tracked. Use what you find when reviewing the CLI's changes:

  • Preserve existing dynamic or platform-specific app configuration.
  • If eas.json exists, preserve its profiles and existing channel assignments. The CLI adds a channel matching the profile name only to build profiles that do not already have one.
  • If eas.json is absent, do not create it by hand. The CLI may direct the user to run eas build:configure separately.
  • With tracked native projects, expect the CLI to synchronize the platform's native Update configuration. Without them, expect Continuous Native Generation to apply the native configuration during a later build.

Detect the Expo SDK version before installing packages or interpreting version-specific behavior.

If expo-updates is not installed, install the SDK-compatible version:

npx expo install expo-updates

Configure from the project root:

npx eas-cli@latest update:configure

Use eas update:configure rather than manually inventing updates.url, runtimeVersion, native metadata, or build-profile channels. The command understands EAS project linking, Continuous Native Generation, and projects with committed native directories. Review and explain its resulting diff.

If the command cannot proceed because the project is not linked or the user has not authorized the required remote operation, stop after any independently valid package installation and explain what remains. Do not partially reproduce update:configure by adding a runtime-version policy, config plugin, update URL, or channels by hand.

For dynamic app config, non-EAS builds, or a command that cannot complete automatically, follow the current setup documentation instead of guessing: https://docs.expo.dev/eas-update/getting-started.md.

Keep the model straight

  • Build: the installed native app. It contains native code, an embedded update, a platform, a runtime version, and normally a channel fixed at build time.
  • Update: a published JavaScript bundle, assets, and metadata for one platform and runtime version.
  • Branch: an ordered stream of updates. Its newest compatible update is active.
  • Channel: a stable deployment target embedded in builds. On the server, it points to a branch.
  • Runtime version: the compatibility boundary between an update and the native code in a build.

A build receives an update only when platform and runtime version match and the build's channel points to the branch containing that update:

installed build (channel: production, runtime: 1.1.1, platform: ios)
  -> production channel
  -> production branch
  -> newest update for runtime 1.1.1 and ios

Channels and branches commonly have the same name, but they are separate objects. eas channel:edit changes a channel's server-side branch mapping for every build on that channel. It does not change an individual installation's embedded channel.

Use this model to make decisions, but explain only the concepts needed for the user's request rather than reciting the entire model every time.

Decide whether an update is compatible

Use an update for changes to JavaScript, styling, and bundled assets that the installed native runtime already supports.

Create a new native build when a change adds or modifies native code or native configuration, including most native-library additions and SDK upgrades. Do not work around a runtime mismatch or imply that publishing can add native capabilities to an existing build. See https://docs.expo.dev/eas-update/runtime-versions.md.

Do not change the project's runtime-version policy as an incidental fix. Explain how the current policy affects compatibility; treat changing it as a separate decision because it changes which installed builds can receive future updates.

Publish deliberately

Check the current CLI help before relying on remembered flags:

npx eas-cli@latest update --help

For the common channel-based flow:

npx eas-cli@latest update \
  --channel <channel> \
  --message "<message>" \
  --environment <environment>

SDK 55 and later require an EAS environment for publishing. Choose the environment intentionally so exported code receives the intended variables.

Publishing changes remote state and can affect installed applications. Before running it, establish the exact project, channel, environment, platforms, runtime version, and message. Publish to production only when the user has explicitly requested or approved it; if the authorization or target is ambiguous, stop before the command and ask. Do not infer a production destination solely from the current Git branch.

Prefer a preview or staging channel for validation. When promoting a tested update, use the documented deployment flow so production receives the same artifact where possible: https://docs.expo.dev/eas-update/deployment.md.

Test according to the build type

Development builds

Preview updates with the development build's Extensions UI, the EAS dashboard, or Expo Orbit. A normal expo-dev-client development build does not behave like a release build's automatic startup update flow.

Preview, TestFlight, and production builds

Release builds normally prioritize startup speed. With the default launch behavior, the app may start its current embedded or cached update while downloading a newly published update in the background. The downloaded update is applied on a later restart.

For manual QA, fully terminate the app rather than backgrounding it, reopen it, allow the update time to download, and, if the change is not visible, fully terminate and reopen it once more. Describe this as up to two cold launches, not a TestFlight-specific ritual:

  1. One launch can discover and download the update.
  2. The following launch can run the downloaded update.

Do not automatically change fallbackToCacheTimeout to avoid the second launch. Waiting at startup trades launch latency and reliability for faster update activation. If the app needs an intentional update UX, consider the expo-updates APIs for checking, fetching, and presenting a non-blocking restart action. Use the expo-updates API reference for the project's detected SDK version.

Debug a build that did not update

Check these in order:

  1. Confirm the update was published to the intended EAS project, channel or branch, platform, and environment.
  2. Compare the installed build's platform and runtime version with the published update.
  3. Confirm the build actually contains the expected update URL and channel; app-config changes take effect only in a newly compiled build.
  4. Inspect the channel-to-branch mapping and the active update on that branch.
  5. Fully terminate the release build and allow for the normal download-then-apply lifecycle.
  6. Use the current debugging guide for native logs, export problems, and configuration checks: https://docs.expo.dev/eas-update/debug.md.

Never bypass a compatibility or anti-bricking safeguard merely to make an update appear.

Advanced and adjacent workflows

  • Channel surfing: an individual release build can override its expo-channel-name request header to request another compatible channel. This differs from changing the server-side channel-to-branch mapping. Follow https://docs.expo.dev/eas-update/channel-surfing.md and preserve its access-control, persistence, recovery, and compatibility constraints.
  • Update health: load eas-update-insights for adoption, launch failures, crash rate, payload size, and rollout monitoring after publishing.
  • Store releases: load eas-app-stores when native changes require a new TestFlight, App Store, or Play Store build.

Official references

  • Setup: https://docs.expo.dev/eas-update/getting-started.md
  • Concepts and matching: https://docs.expo.dev/eas-update/how-it-works.md
  • Deployment: https://docs.expo.dev/eas-update/deployment.md
  • Debugging: https://docs.expo.dev/eas-update/debug.md
  • Current EAS CLI reference: https://docs.expo.dev/eas/cli.md

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" "<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 による自動翻訳です。