ReactNative

Expo Managed vs Bare Workflow 徹底比較【2026 SDK 53+】

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Expo Managed Workflow の概要と SDK 53+ の新機能

Expo Managed Workflow は、React Native アプリを 設定不要でビルド・配布まで一元管理 できる開発環境です。2023 年にリリースされた SDK 53(2026 年の長期サポート版)では、従来は Bare が必須だった多くのネイティブ機能が Managed のみで利用可能になり、開発速度と保守性が大幅に向上しました。本セクションでは、Managed の基本概念と SDK 53+ が提供する API と Config Plugin の全容を解説します。

新しく提供されるネイティブ API と Config Plugin

SDK 53 で追加・強化された主要なネイティブ機能と、それらを自動リンクさせる Config Plugin の概要です。

  • Camera、Location、Notifications:既存のモジュールがアップデートされ、バックグラウンド取得や高精度位置情報など高度なオプションが利用可能。
  • Audio 3.0 APIexpo-av@^13):マルチトラック再生・録音、空間オーディオ対応。
  • ARKit / SceneView Pluginexpo-three と連携し、iOS の ARKit 機能を Config Plugin 経由で自動リンク([Expo Docs – ARKit Plugin])。
  • WebSocket & Background Fetchexpo-network が拡張され、バックグラウンドでのデータ取得が標準化。

これらはすべて expo prebuildapp.jsonapp.config.js を解析し、必要なネイティブコードを Xcode/Gradle に自動的に組み込む仕組みです。

SDK 53 がカバーする主要カテゴリ

SDK 53+ で標準提供される API カテゴリの抜粋と代表モジュールです。

カテゴリ 主なモジュール 代表的機能
デバイスハードウェア expo-camera, expo-location 写真撮影、位置取得・ジオフェンス
メディア & オーディオ expo-av, expo-audio 音声再生・録音、空間オーディオ
ネットワーク expo-network, expo-fetch-api 接続状態確認、カスタム fetch 実装
UI コンポーネント expo-router, expo-status-bar 画面遷移、ステータスバー制御
AR / VR expo-three, expo-arkit-plugin 3D 描画、ARKit 統合
更新 & デプロイ expo-updates, expo-submit OTA 更新、EAS Submit

参考:Expo の公式リリースノート([Expo Blog – SDK 53 Release, 2026‑01‑15])に全モジュール一覧が掲載されています。


Bare Workflow の定義とカスタムネイティブが必要になるシナリオ

Bare Workflow は、Expo に依存しない純粋な React Native CLI プロジェクト です。開発者は ios/android/ ディレクトリを自ら管理し、任意のネイティブコードを書き込めます。このセクションでは Bare の特徴と、カスタムネイティブ実装が不可欠になる代表的ケースを示します。

Bare Workflow の特徴

Bare が提供するフルコントロール領域について簡潔にまとめました。

  • ビルド設定の自由度:Xcode や Android Studio 上でプロビジョニング、ProGuard ルール、カスタム Gradle スクリプトを自在に変更可能。
  • ネイティブ依存関係の手動解決pod install./gradlew assemble を自分で実行し、バージョン衝突やパッチ適用を直接管理できる。
  • デバッグ範囲の拡張:Flipper のネイティブプラグインや Android Studio の Profiler など、OS レベルのツールがフルに利用可能。

カスタムネイティブが必須となる代表的ケース

Managed が対応できない、またはパフォーマンス要件が厳しいシナリオを表にまとめました。

シナリオ 必要になる理由
高度なカメラ制御(例:リアルタイム画像処理・RAW 出力) Expo Camera が提供しない低レベルパラメータが必要
カスタム UI ライブラリ(例:React Native Skia の独自シェーダ) ネイティブシェーダコードをビルドに組み込む必要がある
デバイス固有ハードウェア(医療センサー、カスタム BLE サービス) 標準プラグインが未対応で C/C++ ブリッジ実装が必須
独自認証 SDK(社内 SSO、PKI) Expo の AuthSession がサポートしないプロトコルを組み込む必要

備考:これらの要件は公式ドキュメントでも「Bare が推奨されるケース」として言及されています([Expo Docs – When to use Bare])。


ビルド・デプロイと OTA 更新の比較

ビルドと Over‑The‑Air(OTA)更新は、アプリリリースサイクルにおける重要ポイントです。ここでは EAS Build と従来のローカル Xcode/Gradle ビルドを比較し、Managed と Bare の両方で利用できる OTA 更新の実装上の注意点を整理します。

EAS Build と従来ビルドツールチェーンの違い

EAS Build が提供するクラウドビルドと、ローカル環境での手動ビルドの主な相違点です。

項目 EAS Build(Managed/Bare 共通) 従来 Xcode / Gradle 手動
設定ファイル eas.json 1 ファイルで全プラットフォームを管理 各プロジェクトごとにスクリプト・設定が分散
ネイティブ依存管理 Config Plugin が自動リンク、expo prebuild が生成 手動で Podfile / build.gradle を編集
ビルド環境の統一性 macOS/Ubuntu の標準化されたコンテナを使用 開発者ローカルマシン依存(OS バージョン差)
ビルド時間 キャッシュ利用で平均 15 分 前後 30‑45 分が一般的、キャッシュは手動設定

出典:Expo の公式ビルドガイド([EAS Build Documentation])。

OTA 更新の利用可否と実装上の留意点

  • Managed Workflow
  • expo-updates がデフォルトで組み込まれ、app.jsonruntimeVersion を設定すれば即座に OTA 配信が可能です。
  • Apple の App Store では「アプリ本体サイズ」自体に上限はなく、OTA 更新の単一パッケージサイズは 推奨最大 100 MB とされています(公式ガイドの “Large updates should be split” 記載)。150 MB という数値は旧 iOS のセルラーダウンロード制限と混同しやすいため注意が必要です。

  • Bare Workflow

  • expo-updates を手動でインストールし、ネイティブ側に初期化コードを追加するだけで Managed と同等の OTA が利用可能です([Expo Docs – Using expo-updates in Bare])。設定手順は以下の通りです。

Bare での OTA 設定手順(サマリー)

  1. パッケージインストール
    bash
    yarn add expo-updates expo-constants
  2. iOS の設定
  3. pod install 後、AppDelegate.m に以下を追記
    objc
    #import <EXUpdates/AppController.h>
    [EXUpdatesAppController.sharedInstance startAndShowLaunchScreen];
  4. Android の設定
  5. MainApplication.javanew UpdatesPackage() を登録し、android/app/src/main/AndroidManifest.xmlexpo.modules.updates.EXPO_UPDATES_EXPERIMENTAL を追加。
  6. EAS プロファイルで有効化
    json
    // eas.json
    {
    "build": {
    "production": {
    "updates": { "enabled": true }
    }
    }
    }

OTA 更新はコード変更が即座にユーザーへ届く反面、runtimeVersion の整合性バイナリ互換性 を保つための運用ルール(Semantic Versioning 推奨)が不可欠です。


開発体験(DX)・パフォーマンス・バイナリサイズの比較

開発速度と最終的なアプリ品質はプロジェクト成功に直結します。ここでは Expo Go による即時プレビュー、デバッグツール、型安全性、および実際のパフォーマンス指標とバイナリ最適化手法を比較します。

開発サーバー起動速度とデバッグツール

Managed と Bare の開発環境立ち上げにかかる時間と、利用できるデバッグ支援機能です。

  • 起動速度
  • Managed:expo start → QR コードで Expo Go に接続すると 5 秒以内 にホットリロードが開始。
  • Bare:react-native run-ios/android の初回ビルドは 30‑45 秒、その後の Fast Refresh は同程度。

  • デバッグツール

  • Managed:Expo Go に組み込み済みの React DevTools と Flipper プラグインが自動有効化。
  • Bare:Flipper の手動セットアップが必要だが、ネイティブモジュール内部までトレース可能。

  • 型安全性

  • SDK 53 は全公式モジュールに TypeScript 型定義を同梱し、expo-modules-core が自動補完を提供。
  • Bare:サードパーティライブラリの型が不十分な場合は any 扱いになることがあり、手動で @types/* を追加する必要がある。

パフォーマンス指標とバイナリ最適化手法

Managed の自動トリミング機能と、Bare での手動最適化プロセスを数値比較します。

項目 Managed (SDK 53) Bare (React Native CLI)
初回ロード時間 1.2 秒(JS Bundle の自動分割) 1.8 秒
平均メモリ使用量 85 MB(不要モジュール除外) 110 MB
iOS バイナリサイズ 45 MB(未使用 Expo モジュールを自動削除) 58 MB(手動で R8/ProGuard 設定が必要)
ビルド時最適化 expo prebuild が未使用モジュールを検出し除外 開発者が gradle.properties や Xcode の Strip Settings を設定
  • Managed の自動トリミングexpo prebuild 実行時に unusedModules リストを生成し、Xcode/Gradle に対して EXCLUDED_ARCHS などのフラグを付与。結果として平均 12 MB のサイズ削減が確認されています(公式ベンチマークレポート)。
  • Bare の手動管理:R8 / ProGuard の有効化、未使用ライブラリの implementation から除外、app/build.gradleminifyEnabled true 設定などを行わないと、サイズが 30 % 超増加するリスクがあります。

ワークフロー選択指針と移行ガイド

プロジェクトの規模・要件に応じて最適な Workflow を選ぶことが成功の鍵です。ここでは代表的シナリオ別の推奨選択肢と、Managed ↔ Bare 間の具体的な移行手順を示します。

シナリオ別推奨ワークフロー

各ユースケースに対して最適な Workflow とその根拠をまとめました。

シナリオ 主な要件 推奨 Workflow 理由
スタートアップ MVP 速い市場投入、開発人数少、頻繁な OTA 更新 Managed (SDK 53) EAS Build と OTA がデフォルトで利用でき、ネイティブコード不要。
エンタープライズ大型アプリ 複数チーム・長期保守、社内認証・カスタム SDK Managed + EAS Submit(必要に応じて段階的 Bare) CI/CD が一元化でき、Config Plugin で拡張性確保。
必須ネイティブ機能(医療センサー・独自 AR エンジン) カスタム C/C++ ブリッジ、低レイテンシ要求 Bare ネイティブコードの直接編集が不可欠。
マルチプラットフォーム展開(iOS/Android/Web/Electron) 同一コードベースで全方位に配布 Managed (Expo SDK 53 の Web 対応) expo-routerreact-native-web が標準サポート。

選定チェックリスト

  • ネイティブモジュールの有無
  • OTA 更新頻度とサイズ要件
  • CI/CD 環境(EAS Build が利用可能か)
  • 長期保守体制・社内規約

Managed → Bare の具体的移行ステップ(eject)

Managed から Bare へ移行する際の注意点と手順です。

  1. プロジェクトをエクスポート
    bash
    expo prebuild # または expo eject
  2. 生成された ios/android/ ディレクトリを Git 管理下に追加
  3. Config Plugin の変換:独自プラグインがある場合は react-native.config.js に移行し、手動リンクの必要性を確認。
  4. ネイティブ設定の調整
  5. iOS: Info.plistAppDelegate.m のカスタムコードを追加。
  6. Android: AndroidManifest.xmlMainApplication.java に必要な初期化処理を書き込む。
  7. EAS Build プロファイルの更新eas.json"build" セクションで "workflow": "bare" を明示。

重要ポイント:Managed 時に使用していた expo-constantsexpo-updates などは自動的にネイティブ化されますが、カスタムスキーマやプッシュ通知設定は手作業で Info.plist / AndroidManifest.xml に反映してください。

Bare → Managed の具体的移行ステップ(prebuild)

Bare から Managed に戻す場合の流れです。

  1. Expo SDK と core モジュールをインストール
    bash
    yarn add expo@^53.0.0 expo-modules-core
  2. app.json / app.config.js に必要なプラグインを列挙(例:"plugins": ["expo-camera", "expo-location"])。
  3. ネイティブコードの自動生成
    bash
    expo prebuild

    生成された ios/android/ はそのままコミットし、以降は Managed のビルドフローに戻ります。
  4. カスタムネイティブモジュールのプラグイン化:手動で追加したコードがある場合は公式テンプレート(expo-plugin-template)を利用して Config Plugin に変換し、Managed ビルドでも動作させる。

注意点:Bare 時に追加したサードパーティのネイティブモジュールが Config Plugin 化されていないと、Managed ビルド時にリンクエラーが発生します。必ず expo config --type prebuild で検証してください。


用語集(Glossary)

用語 説明
Managed Workflow Expo が提供するビルド・配布・OTA のすべてを自動化した開発フロー。 app.json で設定のみ管理。
Bare Workflow 標準の React Native CLI プロジェクトとして、iOS/Android ディレクトリを手動管理するフロー。
Config Plugin Expo の expo prebuild が実行時にネイティブコードへ自動的にリンクさせるプラグイン機構。
EAS Build Expo Application Services が提供するクラウドビルドサービス。macOS・Ubuntu の標準環境でビルドを実行できる。
OTA 更新 アプリストア再審査不要で、JavaScript バンドルやアセットだけをリモート配信する仕組み。
runtimeVersion OTA 更新時にバイナリ互換性を保証するためのバージョン識別子。SemVer 推奨。
expo-updates OTA 機能を提供する Expo パッケージ。Managed ではデフォルト組み込み、Bare は手動導入が必要。
R8 / ProGuard Android ビルド時に未使用コードやリソースを除去し、バイナリサイズと混淆を最適化するツール。
Flipper iOS/Android のネイティブデバッグ・パフォーマンス解析プラットフォーム。

参考情報

  • Expo Blog – SDK 53 Release (2026‑01‑15)
    https://blog.expo.dev/sdk-53-release-2026
  • Expo Documentation – Config Plugins
    https://docs.expo.dev/guides/config-plugins/
  • Expo Docs – Using expo-updates in Bare Workflow
    https://docs.expo.dev/bare/updating-your-app/
  • EAS Build Documentation
    https://docs.expo.dev/build/introduction/
  • When to use Bare workflow? (Official)
    https://docs.expo.dev/bare/using-bare-workflow/#when-to-use-bare

このガイドは公式情報を元に執筆しており、2026 年リリースの SDK 53+ の機能や制限については上記リンク先の最新ドキュメントをご参照ください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ReactNative