---
title: "Expo SDK 58・57・56の変更点とアップグレード手順｜最新はSDK 58、Expo Goの対応状況【2026年10月】"
url: "https://www.issoh.co.jp/tech/details/12044/"
published: 2026-05-09
updated: 2026-10-23
categories: ["モバイル（iOS・Android）"]
publisher: "株式会社一創"
---

# Expo SDK 58・57・56の変更点とアップグレード手順｜最新はSDK 58、Expo Goの対応状況【2026年10月】

Expo SDKの最新安定版は、2026年10月15日に公開されたSDK 58です（npmの`expo`の`latest`は2026年10月23日時点で58.0.17）。React Native 0.88とReact 19.3を採用し、iOS 27向けに作られています。一方で、ストア版のExpo Goはまだ58に対応しておらず、5月のSDK 56、6月のSDK 57から上げるかどうかで迷う時期です。この記事では、58・57・56の変更点と破壊的変更、版ごとのExpo Goの入手方法、上げる手順を、Expo公式の[SDK 58チェンジログ](https://expo.dev/changelog/sdk-58)と、手元で58のプロジェクトを作って確かめた結果をもとに整理します。版が上がるたびに更新します。

## まとめ｜最新バージョンと確認・更新の要点

- **最新版**：SDK 58（React Native 0.88.0／React 19.3.0、最低Node.jsは22系なら22.13、24系なら24.3）。2026年10月15日公開。
- **58の中身**：iOS 27のシーンベースのライフサイクルへの移行、Siriから操作できるApp Intents、Androidのホーム画面ウィジェット、Androidビルドの短縮（クリーンビルドが約80秒から約39秒）、Expo Routerのデータローダーの安定版化。
- **58の破壊的変更**：`react-native/Libraries/*`からの深いimportが型エラーになり、`InteractionManager`などが削除され、Androidのリリースビルドで`R8`が既定で有効になります。
- **Expo Go**：App Store版は57.0.9のままです。58版は数週間以内に出る予定で、出ると57のプロジェクトは開けなくなります。テンプレート指定なしの`create-expo-app`は既にSDK 58のプロジェクトを作るので、ストア版Expo Goで試すなら`--template default@sdk-57`を付けます。
- **56・57**：56はExpo RouterがReact Navigationから分離した版で、Hermes V1のメモリ回帰はSDK 57で修正されています。Hermes V1とWorklets／Reanimatedを使うSDK 56のアプリは、SDK 57への更新を優先してください。
- **確認と更新**：版は`package.json`の`expo`で決まります。1版ずつ`npx expo install expo@^58.0.0 --fix`のように上げ、`npx expo-doctor@latest`で確認します。

## Expo SDK 54〜58のリリース履歴とReact Native対応表

Expo SDKは1つの版がReact Nativeの特定の版に対応しています。直近5世代は次のとおりです（React NativeとReactの版はExpoのバージョンAPIが返す現在値、最低Node.jsは[Expoの公式リファレンス](https://docs.expo.dev/versions/latest/)の対応表）。

| SDK | 公開日        | React Native | React  | 最低Node.js | ストア版Expo Go |
| --- | ---------- | ------------ | ------ | --------- | ----------- |
| 58  | 2026-10-15 | 0.88.0       | 19.3.0 | 22.13.x   | 未配信（数週間以内）  |
| 57  | 2026-06-30 | 0.86.3       | 19.2.3 | 22.13.x   | 57.0.9（現行）  |
| 56  | 2026-05-21 | 0.85.3       | 19.2.3 | 20.19.x   | 配信されず       |
| 55  | 2026-02-25 | 0.83.10      | 19.2.0 | 20.19.x   | 配信されず       |
| 54  | 2025-09-10 | 0.81.5       | 19.1.0 | 20.19.x   | 57へ置き換え済み   |

58はAndroidの`compileSdkVersion`が36から37に上がりました。最低OS（Android 7、iOS 16.4）と最低Xcode（26.4）は56から変わっていません。なお、公式のSDK一覧ページ（expo.dev/sdk）は10月23日時点でもSDK 57が先頭のままです。最新版はnpmの`npm view expo dist-tags`で確かめるのが確実です。SDK 53・54の変更点は[Expo SDK 53の変更点とアップグレード手順](/tech/details/9593/)で扱っています。

## Expo SDK 58の主な新機能

### iOS 27とiPhone Duoへの対応

iOS 27 SDKでビルドしたアプリは、UIKitのシーンベースのライフサイクルを使わないとiOS 27で正しく起動しません。SDK 58はこれを既定にしました。テンプレートから作ったプロジェクトで`npx expo prebuild`を実行すると、`ios`の下に`SceneDelegate.swift`が生成され、Info.plistに`UIApplicationSceneManifest`が入ります。`AppDelegate.swift`を手で書き換えているプロジェクトは、公式の[シーンライフサイクル移行ガイド](https://expo.fyi/ios-scene-lifecycle)に沿って処理を移します。

折りたたみ端末のiPhone Duo向けには、ヒンジの角度を返す`expo-hinge`パッケージ（iOS 27.1以降とAndroid 11の折りたたみ端末）と、Expo UIの`ArrangementView`が加わりました。Xcode 27でSimulator.appがDevice Hubに置き換わったことにも、Expo CLIが対応しています。

### App IntentsとAndroidのホーム画面ウィジェット

`expo-app-intents`は、アプリの操作やデータをSiri、ショートカット、Spotlight、Apple Intelligenceに公開するパッケージです。インテント自体はSwiftのインラインモジュールで宣言し、呼び出しはJavaScriptで受け取ります。初期設定は`npx expo-app-intents init`です。まだアルファ版なので、本番アプリに入れるのは安定版を待ってからにしてください。

`expo-widgets`にはAndroid版が加わりました。ウィジェットは専用のHermesランタイムで独自のJavaScriptバンドルを動かし、タップ操作とMaterial Colorsにも対応します。iOSのLive Activitiesには`staleDate`が追加されています。

### Androidビルドの短縮とExpo Modulesの高速化

`expo-modules-core`がAndroid向けにビルド済みのネイティブライブラリを同梱するようになりました。公式の計測では、空のSDK 58プロジェクトのクリーンなdebugビルド（4つのABI、Apple M3 Pro）が約80秒から約39秒に縮んでいます。コア数の少ないCIランナーほど差は大きくなります。ソースからビルドしたい場合は、expo-build-propertiesで`android.buildExpoModulesCoreFromSource`を指定します。

iOS側ではネイティブモジュール呼び出しの固定費が下がり、長い文字列の受け渡しは最大3.8倍速くなりました。SDK 58に上げるだけで効き、コードの変更は要りません。SwiftやKotlinの普通のクラスにアノテーションを付けて書くExpo Modules 2.0は、iOSとAndroidの両方でベータになりました。

### Expo Routerとビルド周りの既定値

Expo Routerでは、データローダー、サーバーサイドレンダリング、ミドルウェア、ネイティブタブが安定版になり、実験フラグが要らなくなりました。ネイティブビルドの再実行を判定するfingerprintは既定のプリセットが`balanced`になり、`app.json`の`version`を上げただけでは指紋が変わらなくなっています。Rustで書かれた変換器（`experiments.noxcturnalTransformWorker`）も試験的に入り、公式のテストではコールドバンドルが約2倍速くなりました。

## Expo SDK 58の破壊的変更と対処

### Strict TypeScript APIとReact Nativeの削除API

React Native 0.87からStrict TypeScript APIが既定になりました。手元のSDK 58プロジェクト（TypeScript 6.0.3）で`react-native/Libraries/Utilities/Platform`を型importすると、`TS2307: Cannot find module`になりました。すぐに直せない場合は、`tsconfig.json`の`customConditions`に`react-native-legacy-deep-imports`を足すと、同じimportが通ります。`react-native`は`expo/tsconfig.base`が既に設定していますが、上書きになるので両方書きます。

```
{
  "extends": "expo/tsconfig.base",
  "compilerOptions": {
    "strict": true,
    "customConditions": ["react-native", "react-native-legacy-deep-imports"]
  }
}
```

この回避設定はReact Native 0.89の後に削除される予定です。58を使っているあいだに、公式の[Strict TypeScript APIの移行ガイド](https://reactnative.dev/docs/strict-typescript-api)に沿ってimportを直してください。あわせて、`InteractionManager`（`requestIdleCallback`へ置き換え）、ルートの`Touchable`、Modalの`animated` prop、StatusBarの`backgroundColor`・`translucent`が削除されました。

### NODE\_ENVとAndroidのR8の既定変更

Expo CLIは、実行するコマンドに応じて`NODE_ENV`を`development`か`production`に固定するようになりました。たとえば`NODE_ENV=test npx expo start`は`.env.test`ではなく`.env.development`を読みます。`Staging`のような独自のビルド構成も`production`扱いです。環境ごとに`.env`を分けているプロジェクトは、上げる前に読み込まれるファイルを確認してください。

Androidのテンプレートでは、リリースビルドでR8が既定で有効になりました。prebuildした`android/gradle.properties`には`android.enableMinifyInReleaseBuilds=true`が入ります。R8によるサイズ削減や起動時間短縮が期待できますが、リフレクションで参照するコードが削除・難読化されると実行時エラーになる場合があります。ライブラリが同梱するkeepルールも確認し、不足するルールを補います。リリースビルドを実機で通しで確認し、一時的にR8を無効化する場合は、expo-build-propertiesの`android.enableMinifyInReleaseBuilds`を`false`に設定し、ネイティブプロジェクトを再生成・再ビルドします。

### Expo Routerの移行で書き換える箇所

Expo Routerは内部のナビゲーションの仕組みが作り直され、React Navigationから引き継いでいたAPIの多くが外れました。[SDK 57から58への移行ガイド](https://docs.expo.dev/router/migrate/sdk-57-to-58/)のうち、多くのアプリが当たるのは次の4つです。

- ナビゲーターのpropとして指定する`initialRouteName`は削除。ディープリンクで戻り先が要るなら、レイアウトで`unstable_settings.anchor`を書きます。
- `freezeOnBlur`は効かなくなりました。画面の状態を残しつつ副作用を止めたいなら`activityEnabled`を使います。
- `navigation.navigate('(tabs)', { screen: 'feed' })`のような`screen`指定は、ただのパラメーターになりました。`useRouter()`で完全なhrefへ移動します。
- `web.output`が未設定なら`server`扱いになり、HTMLはリクエストごとに描画されます。静的HTMLを書き出す場合は`web.output`を`static`にします。SDK 57の`server`出力と同様にAPIルートも使う場合は、`expo-router`のconfig pluginで`apiRoutes: true`も設定し、サーバーへデプロイします。

このほか、expo-file-systemの`File.write()`が非同期になり（同期は`writeSync()`）、expo-sqliteのlibSQL対応が削除されました。SDK 58はまだmacOSに対応していません。

## Expo SDK 56の主な新機能

### React Native 0.85とHermes V1の既定化

SDK 56はReact Native 0.85を採用し、55の0.83から2版分の変更がまとめて入りました。影響が大きいのは、Hermes V1が既定のJavaScriptエンジンになったことです。旧Hermesへ戻すにはexpo-build-propertiesで`useHermesV1`を`false`にしますが、あわせて`buildReactNativeFromSource`を`true`にする必要があり、ビルド時間が大きく延びます。

```
{
  "plugins": [
    ["expo-build-properties", { "useHermesV1": false, "buildReactNativeFromSource": true }]
  ]
}
```

### Expo UIの安定版と新しいライブラリAPI

SwiftUI（iOS）とJetpack Compose（Android）をネイティブ描画するExpo UIは、SDK 56でAPIが安定版になり、既定テンプレートとExpo Goに入りました。@gorhom/bottom-sheetなど8系統のライブラリには代替が用意され、多くはimportの変更で移行できます。ただし、一部のpropsは未対応または挙動が異なるため、使用中のpropsを確認してください。仕組みは[Expo UI（@expo/ui）とは](/tech/details/8060/)で解説しています。expo-calendar、expo-contacts、expo-media-libraryは、オブジェクト指向で作り直された新APIが安定版になり、旧APIは非推奨です。iOSでは複雑なExpoモジュールがビルド済みのXCFrameworkで配布され、公式の計測でクリーンビルドの中央値が約16%短くなりました。

## Expo SDK 56の破壊的変更と対処

### Expo RouterとReact Navigationの分離

SDK 56のExpo RouterはReact Navigationに依存しなくなりました。アプリのコードで`@react-navigation/*`から直接importするとバンドル時にエラーになります。対応するエントリーポイントがあるimportは、指定先を変更します。native-stackとdrawerは直接の対応先がないため、StackまたはDrawerのレイアウトへの移行が必要です。

| SDK 55までのimport元                                 | SDK 56以降                       |
| ------------------------------------------------ | ------------------------------ |
| `@react-navigation/native`・core・elements・routers | `expo-router/react-navigation` |
| `@react-navigation/stack`                        | `expo-router/js-stack`         |
| `@react-navigation/bottom-tabs`                  | `expo-router/js-tabs`          |
| `@react-navigation/material-top-tabs`            | `expo-router/js-top-tabs`      |
| `@react-navigation/native-stack`・drawer          | 対応先なし（StackかDrawerのレイアウトへ）     |

書き換えは公式のcodemodで自動化できます（詳細は[Expo Routerの移行ガイド](https://docs.expo.dev/router/migrate/sdk-55-to-56/)）。`src`はアプリのソースがあるディレクトリに置き換えます。

```
npx expo-codemod sdk-56-expo-router-react-navigation-replace src
```

expo-codemod 57.0.0をローカルで実行して確かめたところ、`@react-navigation/native-stack`のような対応先のないimportが1行でもあると、そのファイルは丸ごとskipされ、同じファイルの`@react-navigation/native`も書き換わりませんでした。結果欄が`1 skipped`、`0 ok`なら、対応先のない行を先に手で直してから再実行します。書き換え後のimportはダブルクォートになるので、Prettierの設定によっては差分が広がります。

### fetch・file-system・vector-iconsの挙動変更

SDK 56では`expo/fetch`がグローバルの`fetch`になり、importしなくてもWinterTC準拠の実装が使われます。React Native標準の`fetch`に戻すには、`.env`に`EXPO_PUBLIC_USE_RN_FETCH=1`を書きます。expo-file-systemの`File`と`Directory`では、`copy()`と`move()`がPromiseを返すようになりました。

```
import { File, Paths } from 'expo-file-system';

// Paths.documentにdraft.jsonが既にある前提の例
const src = new File(Paths.document, 'draft.json');
const dst = new File(Paths.cache, 'draft.json');
await src.copy(dst);   // SDK 56からPromiseを返す
// src.copySync(dst); // 同期で使うなら明示的にSync版へ
```

また、`expo`パッケージは`@expo/vector-icons`に依存しなくなりました。アイコンを使い続けるなら`package.json`へ明示的に追加します。最低要件はiOS 16.4、Xcode 26.4に上がり、iPhone 7・iPhone 6s・初代iPhone SEなどが対象外になりました。業務用に古い端末を配っている場合は、上げる前に端末台帳を確認してください。

## SDK 57はRN 0.86への小さなリリース

SDK 57の中身はほぼReact Native 0.86への更新だけで、Reactは56と同じ19.2のままです。ただし最低Node.jsは20.19.xから22.13.xに上がりました。同梱のreact-native-reanimatedは4.3.1から4.5.1へ、react-native-workletsは0.8.3から0.10.1へ上がっています。reanimatedの版の縛りは[React Native Reanimatedとは](/tech/details/16747/)で整理しています。

### Hermes V1のメモリ回帰とSDK 57での修正

SDK 56では、react-native-workletsかreact-native-reanimatedをimportするアプリで、Hermes V1のバグによりメモリ使用量が大きく増えることがあります（expo/expo#46519）。修正はReact Native 0.86.2を含む`expo@57.0.9`で入り、56向けには出ていません。開発時に起動が遅くなる回帰（#48298）も`expo@57.0.17`で直りました。

### prebuildの既定変更とenableSceneSupport

SDK 57から、`npx expo prebuild`は既定でandroidとiosのディレクトリを消して作り直します。ネイティブディレクトリを手で編集してコミットしている場合は、`--no-clean`を付けないと編集が消えます。

SDK 57のままXcode 27でiOS 27向けにビルドするなら、`expo@57.0.23`以降で`ios.enableSceneSupport`を有効にします。[BuildPropertiesのリファレンス](https://docs.expo.dev/versions/latest/sdk/build-properties/)によると、対象は標準のSDK 57 Swift AppDelegateテンプレートのままのプロジェクトだけで、Prebuildを使わないプロジェクトには効きません。設定後はネイティブアプリを再ビルドします。

```
{
  "plugins": [
    ["expo-build-properties", { "ios": { "enableSceneSupport": true } }]
  ]
}
```

## Expo GoのSDK別の対応状況と入手方法

Expo Goは1つのビルドに1つのSDK版しか入っていません。プロジェクトとExpo GoのSDK版が違うと「Project is incompatible with this version of Expo Go」と表示されて開けません。App Storeの更新履歴では、54.0.2（2025年9月23日）の次が57.0.9（2026年9月2日）で、55と56向けは一度もストアに出ていません。58向けは、公式によると数週間以内にApp StoreとGoogle Playに出て、58だけに対応します。

移行期間で注意したいのは、新規プロジェクトの版です。公式ドキュメントには「移行期間中はテンプレート指定なしの`create-expo-app@latest`がSDK 57のプロジェクトを作る」と書かれています。しかし2026年10月23日に`create-expo-app` 5.0.0をテンプレート指定なしで実行すると、`expo-template-default@sdk-58`が使われ、`expo ~58.0.17`のプロジェクトができました。これはストア版Expo Go（57）では開けません。ストア版Expo Goで試すなら、版を明示します。

```
# ストア版Expo Go（SDK 57）で開くプロジェクト
npx create-expo-app@latest my-app --template default@sdk-57

# SDK 58で始める（開発ビルドで動かす）
npx create-expo-app@latest my-app --template default@sdk-58
```

| テスト環境             | ストアにない版（55・56・58）を開く方法            |
| ----------------- | --------------------------------- |
| iPhone・iPad実機     | `eas go`で自前のExpo Goを作りTestFlightへ |
| Android実機・エミュレーター | Expo CLIかexpo.dev/goから該当版を入れる     |
| iOSシミュレーター        | Expo CLIかexpo.dev/goから該当版を入れる     |
| どの環境でも            | 開発ビルド（expo-dev-client）を作る         |

`eas go`にはApple Developer Programの会員登録が要ります。Macがない場合の選択肢は[WindowsでiOSアプリを開発する方法](/tech/details/16716/)にまとめています。App Store版のExpo Go（57）では、ターミナルのExpo CLIとアプリの両方で同じExpoアカウントにログインする必要があります。Expo自身もExpo Goを学習用と位置づけ、本番アプリには開発ビルドを勧めています。役割の違いは[Expo（React Native）とは](/tech/details/16148/)で比較しています。

## SDK 55・56・57から58へ上げる手順

今のSDKは`package.json`の`expo`の版で決まり、`npm ls expo`で実際に入っている版も確認できます。公式は1版ずつ上げることを推奨しています。開発マシンとCIのNode.jsを先にそろえます。SDK 58では22系は22.13.0以上、24系は24.3.0以上、26系以降が対応範囲で、23系・25系は対象外です。

```
# 各SDKへの更新後にexpo-doctor、必要なネイティブ再生成・再ビルド、動作確認を行う
# 問題を解消してから次のSDKへ進む。以下を一括実行しない
# 1. 56へ（55から上げる場合）
npx expo install expo@^56.0.0 --fix
npx expo-codemod sdk-56-expo-router-react-navigation-replace src

# 2. 57へ
npx expo install expo@^57.0.0 --fix

# 3. 58へ
npx expo install expo@^58.0.0 --fix
npx expo-doctor@latest
```

expo-doctorは依存パッケージの版の食い違いや既知の設定ミスを点検するコマンドで、1.21.5ではSDK 58の新規プロジェクトに対して20項目を検査しました。上げたあとは、Continuous Native Generationを使っているなら古いSDKで生成したandroidとiosのディレクトリを削除して作り直します。使っていないなら、`npx pod-install`を実行し、[Native project upgrade helper](https://docs.expo.dev/bare/upgrade/?fromSdk=57&toSdk=58)の差分を手で当てます。expo-dev-clientの開発ビルドは、上げたあとに作り直さないと古いネイティブ側のまま動きます。

## SDKをいつ上げるかの判断基準

- **SDK 56でHermes V1を使っている**：Worklets／Reanimatedを使うアプリは、回帰の修正を含むSDK 57への更新を優先し、動作確認後にリリースします。58はRouterとTypeScriptの移行が要るので、57で落ち着いてから進めます。
- **SDK 57でExpo Goを使っている**：58へ上げるのは、ストアに58版のExpo Goが出るのに合わせます。先に上げると実機で開けなくなり、出たあとに57のままだと開けなくなります。
- **Xcode 27でiOS 27向けに出す**：58へ上げるか、57.0.23以降で`enableSceneSupport`を有効にします。AppDelegateを手で直しているなら58の移行ガイドを先に読みます。
- **SDK 54に留まっている**：公式は54の重大な修正を「次のSDKのリリースまで」としていました。58の公開後もnpmには10月21日に`expo@54.0.38`が出ていますが、続く保証はありません。55以降へ上げる計画を立ててください。

SDK 58のReact 19.3で増えたAPIは[React 19.3の新機能](/tech/details/18249/)で確認できます。React Nativeのアプリ開発を外部に相談したい場合は、[Flutter・React Nativeのクロスプラットフォーム開発支援](/service/apps/cross%5Fplatform/)もご覧ください。

## よくある質問

### Expo SDK 58のリリース日はいつですか？

2026年10月15日です（公式チェンジログの公開日）。ベータは9月15日に始まり、npmの`expo@58.0.0`は9月29日に公開されていました。

### 使っているExpo SDKの版はどう確認しますか？

`package.json`の`expo`の版、または`npm ls expo`で確認します。`58.0.17`ならSDK 58です。公開されている最新版は`npm view expo dist-tags`の`latest`で分かります。

### App StoreのExpo GoでSDK 58や56のプロジェクトが開けないのはなぜですか？

2026年10月23日時点のストア版Expo GoはSDK 57（57.0.9）にだけ対応しているためです。58版は数週間以内に出る予定です。それまでは開発ビルドを作るか、Android・iOSシミュレーターならExpo CLIから該当版のExpo Goを入れます。

### Expo SDK 56のReact NativeとNode.jsの版はいくつですか？

React Native 0.85（現在の同梱版は0.85.3）とReact 19.2.3、最低Node.jsは20.19.xです。SDK 58まで上げる場合は、Node.js 22系なら22.13.0以上、24系なら24.3.0以上、または26系以降を使います。

### enableSceneSupportは何のための設定ですか？

SDK 57のままXcode 27でビルドしたアプリを、iOS 27で正しく起動させるための設定です。`expo@57.0.23`以降のexpo-build-propertiesで`ios.enableSceneSupport`を`true`にします。SDK 58では既定で対応しているので不要です。

## 関連記事

- [Expo（React Native）とは？Expo Go・開発ビルド・EASの役割と採用判断を実装目線で解説【2026年版】](/tech/details/16148/)
- [Expo SDK 53の変更点とアップグレード手順｜New Architecture既定化とexpo-avの非推奨化](/tech/details/9593/)
- [Expo UI（@expo/ui）とは｜SwiftUI・Jetpack Composeをネイティブ描画するReact Nativeコンポーネント](/tech/details/8060/)
- [React 19.3の新機能｜ViewTransition・Fragment ref・browser()の実装と19.2からの更新手順](/tech/details/18249/)
- [React Nativeとは？仕組みとNew Architectureの構造・採用判断を実装目線で解説【2026年版】](/tech/details/16147/)

---

出典: [Expo SDK 58・57・56の変更点とアップグレード手順｜最新はSDK 58、Expo Goの対応状況【2026年10月】](<https://www.issoh.co.jp/tech/details/12044/>)（株式会社一創）
