SDK52から53への変更にともなうExpoとExpo Goの対応内容のまとめ

# 背景
この記事は、私が自身で開発・使用していたExpo Goのアプリが起動しない状態となっていたため、それに対応した記事となります。

![IMG_1856.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/6aeb7b20-d200-489a-a423-647245c6d38f.jpeg)

```:互換性がないというエラーつうち
Project is incompatible with this version of Expo Go
* ﻿﻿The installed version of Expo Go is for SDK 53.0.0.
* ﻿﻿The project you opened uses SDK 52.
How to fix this error
Either upgrade this project to SDK 53.0.0, or launch it in an iOS simulator. It is not possible to install an older version of Expo Go for iOS devices, only the latest version is supported.
Learn how to upgrade to SDK 53.
https://expo.dev/go?
sdkVersion=52&platform=ios&device=false
exp://u.expo.dev/update/8ee43594-422a-4114-
aba2-7216a1653345
```

エラー内容を確認すると、Expo Goを最新版にアップデートした後は、SDK(開発キット)が52ではなく、53でなければならないらしい。そのため、Expoにデプロイしていた全てのプロジェクトをSDK53に変更する必要がありました。今後、同様にSDKが変更された時のためや他の人のための参考として、書いています。



# 対処手順
https://expo.dev/changelog/sdk-53

SDK53の案内については、上記のようにアナウンスが出されているので、基本的にはこれに従って対処したものとなります。ややこしいことがあれば、基本的には公式を見てください。

基本的な対処の流れとしては以下のとおりです。

1. GitHubから自分のリポジトリをクローンさ、挙動を確認する
※自分はすでにローカルPC上から該当プロジェクトを削除してしまっている状態だったため、この手順でローカルPCに戻しました。
2. クローンしたリポジトリのSDKを52から53に変更し、挙動を確認する
3. EASへデプロイする

上記方針に基づいて、必要に応じて、バージョンを上げた際の不具合を修正すれば良いと思われます。

## 1. GitHubから自分のリポジトリをクローンさせる
まずはクローンさせて、SDK52で動く環境を整えて、問題なく動作するかを確認する。

- 自分のリポジトリからクローン
※自分の場合はGitHub Desktopを使用しているから、そのままクローンを押すだけで済む。
![スクリーンショット 2025-05-17 22.49.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/118a717a-34ce-4d80-bd6c-566ee379c4fb.png)
- npmパッケージをインストール
クローンしたリポジトリ上で、npmパッケージをインストールしておく。
```
npm install
```
※（任意）このタイミングで、脆弱性に関する警告メッセージが出てきたので、次のプロンプトを実行した。
```
npm audit fix
```
- expoをインストールする
package.jsonに書かれているexpoのバージョンを確認し、expoをインストールする。自分が使用していたのが52.0.25だったので、52.0.25を明示している。
```
npx expo install expo@~52.0.25
```
![スクリーンショット 2025-05-16 21.46.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/02dfe0f3-d455-4a47-897c-05989e41b28c.png)

- 実際に動作を確認する（Expo Go自体はSDK53しか対応していないので、Webブラウザで確認）
```
npx expo start
```

## 2. クローンしたリポジトリのSDKを52から53に変更
https://expo.dev/changelog/sdk-53#%EF%B8%8F-upgrading-your-app

- 公式の説明に則り、次のプロンプトを実行したら、なぜか上手くいかなかった....**もしわかる人がいましたらコメントしてください。**
```
npx expo install expo@^53.0.0 --fix
```
上記を実行すると、次のようなエラーが出る...そして"npx expo start"を実行してもエラーとなり、アプリが起動しない。
```:エラー内容の一部
Error: npm install exited with non-zero code: 1
Error: npx expo install --fix exited with non-zero code: 1
```

調べてみると、reactのバージョンが18から19に変わっていることを確認。

![スクリーンショット 2025-05-18 0.57.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/a085042c-38c6-4565-af24-a80367252cdb.png)

![スクリーンショット 2025-05-18 0.53.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/f42f629b-a2b6-4611-bcea-402bf7afd984.png)

調べた結果として、Reactは19でなければならないらしい❓から、次のコマンドを実行したら解決した。
```:※依存関係の衝突を無視して強制インストールするので注意
npm install react-test-renderer@19 --legacy-peer-deps
```

![スクリーンショット 2025-05-16 21.53.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/9a80f7bc-7774-425c-bb64-b87cf390b2d3.png)

- 実際に動作を確認する（Expo Goで動作確認）

```
npx expo start
```
動作に不具合があったり、アナウンスされている内容を修正する必要があるならこのタイミングで直す。私の場合はMediaLibraryがAndroidで完全アクセスできない警告と"CameraView"要素のクラッシュ警告が出ていたので、対処しました。（厳密に言えば後者のみ対応した）

https://expo.dev/changelog/sdk-53#deprecations--removals



## 3. EASへデプロイする
https://docs.expo.dev/eas-update/migrate-from-classic-updates/#install-eas-cli

基本的には上記内容が該当する。

- EAS CLIをインストール
```
npm install -g eas-cli
```

- EASへログイン（メールアドレスとパスワードが必要です）
```
eas login
```

- ブランチを指定して、デプロイ
```
eas update --branch master
```

- 実際に動作を確認する（QRコードを読み込み、Expo Goで動作確認）
これで動作に問題なければ、SDK53への対処が基本終了となるはずです。お疲れ様でした。


# 将来の自分用のメモ
私の場合、なぜかわかりませんが、以下のプロンプトを実行したら先に進まなくなる事象が頻発し、作業に影響を与えていました。

```
npx expo start
```

```
eas update --branch master
```

暫定的な対応として、VSCodeを再起動させたところ、デプロイに成功しました。おそらく一度実行した後、2回目を実行しても処理が進まなくなる個人的な環境の不具合があるからだと思われます。