ドキュメント概要

ExpoプロジェクトでOTAアップデートを使う

Expo Goの制約を確認し、Paktaのネイティブ連携、チャネル、Releaseビルドを設定して更新を配信します。

更新日 2026-09-15

目次

Expo 更新ワークフローを選択してください

このガイドでは、Expo OTA アップデートに Pakta の rn-update クライアントと pakta CLI を使用します。 expo-updates と EAS アップデートを比較する場合は、まず Expo アップデートと Pakta をお読みください。別の OTA クライアントから移行するには、バンドルのロードを担当する 1 つのシステムを備えた新しいネイティブ ビルドが必要です。

プロジェクトを準備する

Expo Go ではなく、ネイティブ Expo アプリを使用してください。このプロジェクトの iOS 自動統合には、Expo 50 以降が必要です。既存の互換性のある Expo/RN の組み合わせを維持します。

プロジェクト ルートからアプリケーションをインストールして選択します。

bash
npx expo install rn-update
npm install -g rn-update-cli
pakta login
pakta selectApp --platform android

必要に応じてコンソールでアプリケーションを作成するか、pakta createApp --platform android --name ExpoDemo を実行します。一致する ios アプリケーションを個別に選択します。

ルート レイアウトをラップする

Expo Router の場合、プロバイダーを既存の app/_layout.tsx に追加します。この最小限のスタックの例は、テーマ、フォント、認証設定とマージする必要があります。

app/_layout.tsx
import { Stack } from 'expo-router';
import { Platform } from 'react-native';
import { Pakta, UpdateProvider } from 'rn-update';
import updateConfig from '../update.json';

const configs = updateConfig as Record<string, { appKey: string }>;
const appKey = configs[Platform.OS]?.appKey;
if (!appKey) throw new Error(`Missing appKey for ${Platform.OS}`);

const client = new Pakta({ appKey, updateStrategy: 'silentAndLater' });

export default function RootLayout() {
  return (
    <UpdateProvider client={client}>
      <Stack />
    </UpdateProvider>
  );
}

src/app/_layout.tsx から ../../update.json をインポートします。Expo Routerを使わない場合は、標準のルートコンポーネント設定を参照してください。

オプション: チャネルを設定します

default については、このセクションをスキップしてください。 最初にコンソールでカスタムチャンネルを作成します。 rn-update には構成プラグインが含まれています。ローカルプラグインを作成しないでください。

このエントリを app.json の既存の expo.plugins 配列に追加します。

app.json · merge into existing configuration
{
  "expo": {
    "plugins": [
      ["rn-update", { "channel": "staging" }]
    ]
  }
}

channel は、Android マニフェスト メタデータと iOS Info.plist に書き込まれます。 Android と iOS で異なるチャネルが必要な場合は、別のビルド構成を使用します。 default にはプラグイン エントリは必要ありません。

Release ビルドを作成して確認する

npx expo prebuild を実行し、生成された Android マニフェストまたは iOS plist で channel を確認します。 EAS Build は同じプラグインを実行します。

Android
npx expo run:android --variant release
iOS · macOS
npx expo run:ios --configuration Release

既存の EAS 制作ワークフローも機能します。リリース アプリでホット アップデートを確認します。

更新をアップロードして公開する

  1. デバイスにインストールされている正確な APK / IPA を保持し、uploadApk / uploadIpa に登録します。 ネイティブ登録を参照してください。

  2. 画面ラベルを変更し、アップデートをビルドします。

bash
pakta bundle --platform android --expo --output .pakta/output/android.ppk --no-interactive
  1. 最初のリリース に従い、ネイティブ インストーラーから解析されたチャネルとバージョンを使用します。

  2. インストールされているリリース アプリをチェックインし、ダウンロードを待ち、完全に閉じて再度開き、変更されたラベルを確認します。

iOS の場合は、--platform ios と別の出力パスを使用します。ネイティブ プラグイン、チャネル、ネイティブ SDK の変更には、.ppk だけでなく、新しいインストーラーが必要です。