npx expo start --ios で「Xcode must be fully installed before you can continue」と出て止まるのは、macOS の xcode-select が Command Line Tools を指していて、フル Xcode.app を参照していないためです。sudo xcode-select -s /Applications/Xcode.app/Contents/Developer で切り替えれば通ります。
実際に出るエラー
Expo CLI が iOS Simulator を起動しようとして xcrun simctl を呼び出し、これが Command Line Tools には含まれていないので失敗します。非対話モードの Expo CLI ではそのままプロセスが終了します。
Starting Metro Bundler
Unable to run simctl:
Error: xcrun simctl help exited with non-zero code: 72
CommandError: Input is required, but 'npx expo' is in non-interactive mode.
Required input:
> Xcode must be fully installed before you can continue.
If this message is still occurring after installing Xcode, you may need to
finish the installation of the developer tools by running:
`sudo xcode-select -s /Applications/Xcode.app/Contents/Developer`.
xcode-select が何を指しているか確認する
現在の参照先はワンコマンドで見えます。
$ xcode-select -p
/Library/Developer/CommandLineTools
これが CommandLineTools になっている限り、xcrun simctl は「そんなユーティリティは無い」と返します。Xcode.app 自体は /Applications/Xcode.app に入っていることが多いので、そちらを指すよう切り替えます。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select -p # 切替後の確認
xcrun simctl help # 呼び出しが通ることを確認
3 行目が help メッセージを出すようになれば完了です。もう一度 npx expo start --ios を実行すれば Simulator が起動します。
なぜこの状態が生まれるか
Homebrew などをインストールする途中で Command Line Tools だけを入れる場面があり、その時に xcode-select の参照先が CommandLineTools に切り替わります。後から Xcode.app を App Store 経由でインストールしても、参照先は自動で書き換わりません。Xcode.app 上でネイティブビルドや iOS Simulator を使わない期間があると、この不整合には気づかないまま過ごしがちです。
Expo/React Native 開発を始めるときに詰まりやすいのは、この 1 行を打つだけで解決するのを知らずに Xcode の再インストールに行ってしまうケースです。Command Line Tools と Xcode.app は共存できるので、消す必要はなく xcode-select の指し先だけ変えれば足ります。