Communitygithub.com

expo/skills

EAS を使用して iOS および Android アプリをビルドし、TestFlight、App Store、Google Play に提出します。Expo やその他の React Native プロジェクト、既存のネイティブアプリをサポートします。

skills とは?

このスキルは、EAS(Expo Application Services)を使用した iOS および Android アプリのビルドとストア提出を包括的にサポートします。Expo プロジェクトや React Native プロジェクトはもちろん、SwiftUI/UIKit アプリなどの既存ネイティブアプリにも対応しており、ネイティブランタイムに Expo や React Native を追加せずに EAS の配信サービスを利用できます。主な機能には、eas.json の設定、CI/CD ワークフローによる自動リリース、コード署名、アプリバージョンとビルド番号の管理、TestFlight への提出、App Store Connect および Google Play Console へのストア提出、ストアリスティングメタデータの管理が含まれます。また、ビルド後のアーカイブ検証やアイコンチェック、重複ビルド番号の診断など、 Apple の受理やテスターアクセスを確立する前の品質保証手順も提供します。Web サイトや API ルートのホスティングには eas-hosting スキルを、既存のネイティブアプリに React Native 画面を追加する場合には expo-brownfield スキルを参照するようガイドします。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/expo/skills/tree/HEAD/plugins/expo/skills/eas-app-stores

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

App Store デプロイメント

EAS サービス - 費用が発生します。 クラウドビルドは EAS プランのリソースを使用し、EAS サービスには無料枠と有料プランの制限があります。Apple Developer および Google Play のメンバーシップは別途必要です。対象サービスの料金は https://expo.dev/pricing をご確認ください。

このスキルは、EAS を使用した iOS および Android アプリのビルドとリリースをカバーします。Expo やその他の React Native プロジェクト、さらに既存のネイティブアプリも対象です。EAS は配信サービスであり、ネイティブアプリはランタイムに Expo や React Native を追加せずに使用できます。ネイティブセットアップのチュートリアルは現在、iOS の SwiftUI/UIKit をカバーしています。

プロジェクトパスを選択

  • React Native ランタイムがない SwiftUI/UIKit アプリ: ビルド構成を変更する前に references/native-ios.md をお読みください。Xcode プロジェクトと Swift コードをアプリの信頼できる情報源として維持します。以下の Expo/React Native クイックスタートと開発クライアントの例は、このパスには適用されません。
  • React Native ランタイムがないネイティブ Android アプリ: 既存のネイティブビルドセットアップを維持します。提出については references/play-store.md を参照してください。Swift/iOS のセットアップ手順は適用されません。専用のネイティブ Android セットアップチュートリアルはまだ含まれていません。
  • Expo/React Native アプリ: 以下のクイックスタートを使用し、次に関連するストアリファレンスを参照してください。
  • 既存のネイティブアプリに React Native 画面を追加する場合: その統合には expo-brownfield を使用し、配信についてはここに戻ってきてください。

初期のネイティブ iOS セットアップ時、バージョニング、バンドル ID、またはアイコンを変更した後、または拒否されたアップロードを診断するときは、references/native-ios.md のアーカイブチェックとアイコンチェックを使用してください。通常のリリースは、EAS のビルド/提出フローと、references/testflight.md の処理および可用性チェックに従います。EAS ビルドが成功したり、提出がキューイングされただけでは、Apple の受理、テスターアクセス、または App Store リリースが確立されたことにはなりません。

リファレンス

必要に応じてこれらのリソースを参照してください。

  • ./references/workflows.md -- ストアリリースと PR プレビューのための CI/CD ワークフロー
  • ./references/testflight.md -- iOS ビルドを TestFlight に提出してベータテストを行う方法
  • ./references/app-store-metadata.md -- App Store メタデータと ASO 最適化の管理
  • ./references/play-store.md -- Android ビルドを Google Play ストアに提出する方法
  • ./references/ios-app-store.md -- iOS App Store への提出とレビュープロセス
  • ./references/native-ios.md -- Expo ランタイムを使用しないネイティブ Swift/SwiftUI/UIKit のセットアップ、バージョニング、アーカイブ検証

Expo / React Native クイックスタート

EAS CLI のインストール

npm install -g eas-cli
eas login

EAS の初期化

npx eas-cli@latest init

eas init は EAS プロジェクトをリンクまたは作成します。eas build:configure を実行して eas.json にビルドプロファイルを作成します。既にリリース設定が存在する場合は、既存のプロジェクト識別子とストア識別子を保持してください。

ビルドコマンド

プロダクションビルド

# iOS App Store ビルド
npx eas-cli@latest build -p ios --profile production

# Android Play Store ビルド
npx eas-cli@latest build -p android --profile production

# 両方のプラットフォーム
npx eas-cli@latest build --profile production

ストアへの提出

# iOS: ビルドして App Store Connect に提出
npx eas-cli@latest build -p ios --profile production --auto-submit

# Android: ビルドして Play ストアに提出
npx eas-cli@latest build -p android --profile production --auto-submit

# Expo / React Native 向け iOS TestFlight ショートカット
npx testflight

Web および API ルートのホスティング

Expo ウェブサイトまたは Expo Router API ルートを EAS Hosting にデプロイする(npx expo export -p web の後 eas deploy)場合は、eas-hosting スキルが対象です。このスキルはネイティブアプリのストアリリースに焦点を当てています。

EAS 構成

Expo / React Native プロジェクトの例(ネイティブ Swift プロファイルは references/native-ios.md にあります):

{
  "cli": {
    "version": ">= 16.0.1",
    "appVersionSource": "remote"
  },
  "build": {
    "production": {
      "autoIncrement": true,
      "ios": {
        "resourceClass": "m-medium"
      }
    },
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    }
  },
  "submit": {
    "production": {
      "ios": {
        "appleId": "[email protected]",
        "ascAppId": "1234567890"
      },
      "android": {
        "serviceAccountKeyPath": "./google-service-account.json",
        "track": "internal"
      }
    }
  }
}

プラットフォーム別ガイド

iOS

  • ネイティブ Swift アプリの場合は、references/native-ios.md の明示的なビルド/提出フローを使用してください
  • Expo / React Native アプリの場合は、npx testflight で TestFlight フローを簡単に実行できます
  • eas credentials で Apple 認証情報を構成します
  • 認証情報のセットアップについては、./references/testflight.md を参照してください
  • App Store への提出については、./references/ios-app-store.md を参照してください

Android

  • Google Play Console のサービスアカウントを設定します
  • トラックを構成します: 内部 → クローズド → オープン → プロダクション
  • 詳細なセットアップについては、./references/play-store.md を参照してください

自動リリース

EAS Workflows は CI/CD のためのビルド → 提出 → 更新パイプラインを自動化します。ストアリリースの例については、./references/workflows.md を参照してください。ワークフロー YAML を作成または検証するには、eas-workflows スキルを使用してください。このスキルはライブのワークフロースキーマから動作します。

バージョン管理

EAS は appVersionSource: "remote" を使用してバージョン番号を自動管理します:

# 現在のバージョンを確認

eas build:version:get

# 手動でバージョンを設定

eas build:version:set -p ios

version-set コマンドは値を入力するようプロンプトを表示します。ネイティブ iOS のバージョニングを設定または変更する場合、または重複したビルド番号を診断する場合は、アーカイブされた CFBundleVersion を確認してください。リモートカウンターだけでは、Xcode がそれを使用したことを証明できません。

モニタリング

# 最近のビルドを一覧表示

eas build:list

# ビルドステータスを確認

eas build:view BUILD_ID

# 提出を確認(EAS CLI 23.2.0 で動作確認済み)

eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

コマンドが見つからない場合は CLI バージョンを確認してください。これらの提出コマンドは 23.2.0 で利用可能ですが、テスト済みの 18.6.0 インストールでは利用できません。npx [email protected] のようにバージョンを固定して呼び出すことで、グローバルインストールを変更せずに使用できます。ライブの Apple ステータスと再試行のガイダンスについては、references/testflight.md を参照してください。JSON 結果に根本的な障害が含まれていない場合は、返されたログ URL をフォローしてください。正確なビルド ID/バージョンと、確認済みの最新のリリース状態を報告してください。

フィードバックの送信

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

npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-app-stores" "<具体的なフィードバック>"

具体的で実行可能な報告がある場合のみ送信してください。可能な限り多くの関連コンテキストを含めてください。 エージェントが Expo タスクで繰り返し失敗する場合、またはユーザーが介入する必要がある場合は、タスク、期待される結果、および問題が発生した内容を --category evals と関連する Expo パッケージまたはコマンドを --subject として使用して簡単なレポートを送信してください。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

expo/add-app-clip

Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.

expo/building-native-ui

Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.

expo/eas-update-insights

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.

expo/expo-api-routes

Guidelines for creating API routes in Expo Router with EAS Hosting

expo/expo-brownfield

Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR/XCFramework, or adding Expo to an existing Kotlin/Swift project. Covers both the isolated approach and the integrated approach.

expo/expo-cicd-workflows

Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.

expo/expo-deployment

Deploying Expo apps to iOS App Store, Android Play Store, web hosting, and API routes

expo/expo-dev-client

Build and distribute Expo development clients locally or via TestFlight

expo/expo-examples

Framework (OSS). Expo's official example projects - the expo/examples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.

expo/expo-module

Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript). Covers module definition DSL, native views, shared objects, config plugins, lifecycle hooks, autolinking, and type system. Use when building or modifying native modules for Expo.

expo/expo-observe

Use for anything related to EAS Observe — adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive, the useObserve hook, and the Expo Router / React Navigation integrations for per-route metrics), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold/warm launch, TTR, TTI, navigation cold/warm TTR, update download, and the TTI frameRate params for triaging slow startups).

expo/expo-overview

Framework (OSS). Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS, Expo Go, or an expo-* package, or the project has an `expo` dependency in `package.json`. Within that gate it also covers app specs and designs to implement (tabs, stacks, maps, lists, navigation, building from a screenshot), and phrasings like 'implement a mobile app', 'make my app look native', 'add navigation', 'fetch some data', 'upgrade my SDK', 'add Expo to my existing native app', 'ship to the App Store', or 'I'm new to Expo, where do I start'. A fully specified request (SDK pinned, libraries named, layout given) still routes through here — the shared setup rules still apply. Do NOT load it when neither signal is present: a bare React Native project with no `expo` dependency is not Expo work. Detects the real goal, routes to the right expo-* / eas-* skill, and owns the shared setup rules.

expo/expo-router

Framework (OSS). Navigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form sheets, NativeTabs, headers and toolbars, and header search bars.

expo/expo-skill-eval

Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional). Use when the user wants to eval an Expo skill, test that a skill produces working code, benchmark a skill with device screenshots, or verify a skill's output renders correctly.

expo/expo-tailwind-setup

Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

expo/expo-ui

Framework (OSS). Build native UI with the @expo/ui package: real SwiftUI on iOS and Jetpack Compose on Android. Default to @expo/ui for sheets (BottomSheet), pickers, sliders, toggles, menus, and grouped-form sections — do NOT reach for Reanimated, @gorhom/bottom-sheet, or RN built-in Picker/Switch; use @expo/ui instead. Fall back to RN built-ins only when @expo/ui is missing the component. NOTE: @expo/ui List renders native grouped rows like an iOS Settings screen — it is NOT a virtualized list; use FlatList/FlashList for large datasets. Covers universal components (Host, Column, Row, Button, Text, List, BottomSheet, FieldGroup, Switch, Slider, Picker, Menu), drop-in replacements for RN community libraries, and platform-specific SwiftUI/Jetpack Compose trees. Not for Expo Router navigation, Reanimated, or data fetching.

expo/expo-ui-jetpack-compose

`@expo/ui/jetpack-compose` package lets you use Jetpack Compose Views and modifiers in your app.

expo/expo-ui-swiftui

`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.

expo/expo-upgrade

Framework (OSS). Guidelines for upgrading Expo SDK versions and fixing dependency issues

expo/native-data-fetching

Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).

関連スキル