
PCにQRコードが表示されているのに、スマートフォンのExpo Goでプロジェクトを開けない。そんなときは、Expo Goを開く設定になっているか、スマートフォンからPCへ通信できるか、読み込み後にアプリが失敗しているかを順に確認します。
Expo Goで実行できるプロジェクトなら、プロジェクトのディレクトリで次のコマンドを実行し、PCとスマートフォンを同じWi-Fiにつないで、表示し直したQRコードを読み取るのが最初の確認です。
# 起動対象と接続方式を明示し、前の起動設定との混同を避ける
npx expo start --go --lan
ただし、同じWi-Fiでも端末間の通信が禁止されていることがあります。また、Expo Goに含まれないネイティブ機能を使うプロジェクトは、このコマンドだけでは実行できません。この記事では実機のExpo Goを対象に、通信経路とアプリ側の問題を分けて調べます。公式の基本手順はExpoのStart developingで確認できます。
どこで止まっているかを先に確認する

*QR認識、起動対象、PCへの通信、アプリ実行を順に確認する。独自に整理した概念図です。*
「QRコードが動かない」だけでは、確認する設定を選べません。画面とPC側のログを見て、近い症状を選びます。
| 症状 | 最初に確認すること | この段階だけでは分からないこと |
|---|---|---|
| QRコードを認識しない、リンクを開く操作へ進めない | QRの表示、読取り方法、Expo Goのインストール | PCへの通信が通るか |
| 別のアプリを開こうとする、Development Buildを求められる | CLIの起動対象とプロジェクトで必要なネイティブ機能 | LANの成否 |
| Expo Goは開くが、接続待ちやタイムアウトになる | 開発サーバーの稼働、接続先、LANの権限・経路 | SDKやコードが正常か |
| バンドル作成のエラーや、読み込み後のJavaScriptエラーが出る | PCのログとエラー本文 | 単純なWi-Fi変更で直るか |
| アプリ画面は開くが、データ取得だけ失敗する | アプリが接続するAPIのURL | 開発サーバーへの接続不良かどうか |
バンドルは、アプリが読み込むJavaScriptなどをまとめたものです。Expoの開発ではMetroというツールがこれを配信します。バンドルの取得や実行まで進んでいるなら、その後のエラーを通信開始前の問題と同じ扱いにしない方が、原因を絞りやすくなります。Expoの実行時エラーの調べ方も参照してください。
Expo Goを指定して、今のQRコードを読み直す
開発サーバーを動かしているターミナルを確認します。終了済みなら、以前表示したQRコードを読んでも、そのサーバーには接続できません。別のプロジェクトや古いスクリーンショットのQRを読んでいないかも確認してください。
expo-dev-clientが入っているプロジェクトでは、CLI(コマンドで操作する開発ツール)の起動対象は既定でDevelopment Buildになります。Development Buildは、プロジェクト固有のネイティブ機能を組み込んだ開発用アプリです。Expo Goで試す意図なら、冒頭の--goで対象を明示できます。これにより、起動先の選択とネットワークの確認を分けられます。Expo CLIの起動対象
--goは、Expo Goにない機能を追加する指定ではありません。プロジェクトがDevelopment Buildを必要としている場合は、その開発用アプリを使う必要があります。判断基準はExpo GoとDevelopment Buildの違いで説明しています。
サーバーを起動し直したら、現在のターミナルに表示されたQRコードを読み直します。QRの認識自体に失敗する場合は表示を大きくし、端末で利用できるQR読取り機能を確認してください。リンクを開くところまで進んだ後のタイムアウトは、次の通信確認へ進みます。
同じWi-Fiでも、PCまで通信できるとは限らない
PCとスマートフォンの接続先をそろえる
LAN(同じ拠点内のネットワーク)接続では、スマートフォンからPCの開発サーバーへ到達できる必要があります。スマートフォンがモバイル通信だけになっていないか、PCと別のゲスト用Wi-Fiに接続していないかを確認します。
同じネットワーク名でも、ゲストネットワークや公共Wi-Fiでは端末同士の通信を遮断する設定があります。Expoの公式手順も、制限のあるネットワークではLAN接続が難しい場合があると説明しています。Expoの接続トラブルに関する案内
VPN(通信経路を切り替える仕組み)や複数のネットワークアダプターを使っているPCでは、ターミナルに表示された接続先がスマートフォンから到達できる経路か確認します。会社や学校の管理下にある端末では、制限を解除する前に管理者の手順に従ってください。
localhostは、その操作をしている端末自身を指す
PCのブラウザでlocalhostにアクセスできても、スマートフォンから同じ文字列でPCへ接続できることにはなりません。スマートフォンにとってのlocalhostは、スマートフォン自身です。
実機からLAN接続する場合は、現在のCLIが表示したPC側の接続先を使います。既定のポートは8081ですが、別のポートで起動している可能性もあるため、実際のターミナル表示を確認してください。ポートは、同じコンピューター内で通信先のサービスを区別する番号です。--localhostはPC内だけで接続する用途向けで、実機からのLAN接続の代わりにはなりません。Expo CLIの接続方式
iPhoneではローカルネットワークの許可を確認する
iPhoneでは「設定」→「プライバシーとセキュリティ」→「ローカルネットワーク」を開き、Expo Goが表示されていれば許可状態を確認します。インターネット上のWebページが開けても、ローカルネットワークへのアクセスは別の許可として制限されることがあります。Appleのローカルネットワークのプライバシー設定
一覧に見当たらない場合は、Expo Goから接続を試した際の案内を確認します。OSやアプリの版で表示が異なるため、この確認だけを理由に端末全体の設定をリセットする必要はありません。
WindowsやWSLでは、サーバーが動く場所も確認する
Windowsのファイアウォールは全体を無効化せず、信頼できるネットワークで必要なアプリの通信が許可されているかを確認します。不要なポートを広く開けず、会社管理の設定は管理者へ相談してください。Microsoftのファイアウォール例外の注意点
WSL(Windows上でLinux環境を使う仕組み)でExpoを起動している場合は、Windows上で直接起動した場合と経路が異なります。既定のNAT方式ではWindowsとWSLの間にネットワークの変換があり、Windowsからlocalhostで開けることと、スマートフォンからWSL内へ接続できることは別です。ミラーネットワーク方式を使う場合も、対応条件とファイアウォールを確認する必要があります。MicrosoftのWSLネットワーク解説
この場合は「ExpoをWindowsとWSLのどちらで起動したか」「CLIに何の接続先が表示されたか」を記録します。環境を確認せずに他人の転送設定をそのまま追加すると、別のポートやアドレスへ転送してしまうためです。
LANで接続できないときはTunnelで経路を比較する

*LANはPCへ、localhostは端末自身へ、Tunnelは中継経由でPCへ接続する。独自に整理した概念図です。*
Tunnelは、インターネット上の中継サービスを経由して開発サーバーへ接続する方式です。自分が利用を許可されているネットワークで、LAN側の問題かを絞りたいときの選択肢になります。
| 接続方式 | 主な経路 | 向く場面 | 制約 |
|---|---|---|---|
| LAN | スマートフォンからPCへ直接接続 | 同一ネットワークでの日常開発 | 端末間通信と必要な許可が必要 |
| localhost | 同じPC内から接続 | PC内の実行環境での確認 | 実機スマートフォンからPCへは直接届かない |
| Tunnel | インターネット上の中継を経由 | LANの制約が疑われる場合の比較 | 双方のインターネット接続が必要。遅延や中継サービスの影響がある |
利用できる条件を確認したら、現在のサーバーをCtrl+Cで終了し、次のように起動します。
# 起動対象を維持したまま、LANから中継経由へ切り替える
npx expo start --go --tunnel
ExpoのTunnelはngrokを利用します。必要なパッケージの導入を求められる場合は、表示された内容と公式手順を確認してください。公開URLが作られるため、URLやQRコードを不用意に共有せず、確認後はサーバーを終了します。通信が遅くなる場合や、中継サービス側の状態によって利用できない場合もあります。Expo CLIのTunneling
同じプロジェクト・同じ実機でTunnelだけ成功するなら、LAN側の経路やアクセス許可を疑う材料になります。ただし、それだけでルーター、OSの権限、ファイアウォールのどれが原因かは確定しません。Tunnelも失敗する場合は、PC側にエラーが出ていないかを確認し、最初の症状表へ戻って停止段階を見直します。
接続後のエラーは、SDK・ネイティブ機能・キャッシュを分ける
SDKの互換性が表示された場合
SDK(アプリ開発に必要なライブラリ群)の対応エラーが表示されたら、プロジェクトのpackage.jsonにあるexpoのバージョンと、端末のExpo Goが対応するSDKを確認します。現行のExpo Goが対象とするSDKには制約があるため、古いプロジェクトが現在のExpo Goでそのまま開けるとは限りません。Expo SDKのアップグレード手順
依存関係をまとめて最新化する前に、表示されたエラーが互換性についてのものか確認してください。単なる接続タイムアウトなら、SDK更新より先に通信経路を調べます。更新が必要なときは変更を戻せる状態にして、公式手順に沿って進めます。
ネイティブモジュールが見つからない場合
JavaScript側へパッケージを追加しても、そのパッケージが必要とするネイティブコードまでExpo Goへ追加されるわけではありません。Expo Goに含まれない機能を使うなら、対応するDevelopment Buildが必要です。Expoのカスタムネイティブコードの説明
アプリを開いた後に特定モジュールのエラーが出る場合は、ネットワーク設定を変える前に、そのライブラリがExpo Goで使えるかを確認します。
キャッシュ削除は、古いバンドルなどが疑われる場合に使う
コードを変更したのに古い内容が読み込まれるなど、Metroのキャッシュが疑われる場合は、サーバーを終了してから次のように起動し直します。
# バンドルのキャッシュを作り直す。接続経路の確認後に使う
npx expo start --go --clear
--clearはバンドル用のキャッシュを消す指定です。スマートフォンからPCへの経路や、OSのネットワーク許可までは修正しません。再起動後は新しく表示されたQRを使って確認します。Expoのキャッシュ削除手順
アプリの画面は開くが、APIだけ失敗する場合
API(アプリとサーバーの間でデータをやり取りする仕組み)のURLも確認します。たとえば、アプリ内にPC用のhttp://localhost:3000を設定していると、実機ではスマートフォン自身の3000番ポートを参照します。
Expoの開発サーバーと、別途起動したAPIサーバーは別のサービスです。ExpoをTunnelで起動しても、APIサーバーまで自動で同じトンネルに公開されるわけではありません。アプリ画面が開くところまで確認できているなら、その後のデータ取得はAPI側の接続先と到達性を別に調べます。
復旧したかは、アプリ表示と変更反映まで確認する
QRからExpo Goが開くだけでなく、目的のプロジェクトの画面が表示されるかを確認します。そのうえで、表示テキストなどの小さな変更を保存して実機へ反映されるかを確かめると、別のサーバーや古い接続先を見ていないかも確認できます。
解消しない場合は、次の情報をそろえると、他の人へ相談するときに確認箇所を絞れます。
- PCとスマートフォンのOS、プロジェクトのExpoバージョン
- Expo GoとDevelopment Buildのどちらを開こうとしているか
- Windows・WSL・macOSなど、開発サーバーを動かしている場所
- LANとTunnelで結果が変わるか、どの段階で止まるか
- PCと実機に表示されたエラー本文
ログや画面を共有する場合は、公開中のTunnel URL、個人のパス、接続情報などを伏せてください。
本記事は2026年9月11日に公式資料を確認し、Expo 57.0.19のCLIで--go、--lan、--localhost、--tunnel、--clearのヘルプを確認して作成しました。実機のQR読取り、LAN/Tunnel接続、OS設定変更による復旧は今回検証していません。実機で確認するときは、上の成功条件とエラーの停止段階を使って、ご自身の環境の結果を判断してください。



コメント