Expo Go QR code: how to scan it, and fixes when it fails (2026)
How to scan the Expo Go QR code on iPhone and Android, and how to fix the usual failures: sign-in, Wi-Fi, tunnel mode and SDK version mismatch.

By Sigsten Gustavii· · Updated · 9 min read
To open an Expo project with its QR code, start the development server with npx expo start, make sure your phone is on the same Wi-Fi as your computer and signed in to the same Expo account as the CLI, then scan the code: with the Camera app on an iPhone, or from inside Expo Go on Android.
Expo is a toolkit for building React Native apps in JavaScript, and Expo Go is its free app for trying a project on a phone without building it. The QR code is the bridge between the two. When it works, it feels like magic. When it doesn't, the error is often vague or missing, so this guide goes through what the code is, how to scan it on each phone, and the fix for each common failure.
What the Expo Go QR code is
When you run npx expo start, Expo CLI starts a development server on your computer and prints a QR code in the terminal. The code holds the server's address. Scanning it tells Expo Go where to load your project's JavaScript from, so the app on your phone runs code served by your computer.
That is why most failures are about the connection between phone and computer, not about the code itself. By default the server is offered over your local network (LAN), so your phone has to reach your computer directly.
| Mode | Command | When to use it |
|---|---|---|
| LAN (default) | npx expo start | Phone and computer on the same Wi-Fi at home |
| Tunnel | npx expo start --tunnel | Public, office or school networks that block devices |
| Localhost | npx expo start --localhost | Simulators and emulators on the same computer only |
Two handy keys in the terminal: E shows the server address as a QR code again, and S switches between opening in Expo Go and in a development build. If your project has a development build installed, add --go to always open in Expo Go.
How to scan the QR code on an iPhone
- Get Expo Go on the phone. Expo's setup guide for iPhone has you build your own copy with npx eas-cli@latest go and install it through TestFlight as an internal tester, which needs Apple's Developer Program. If the App Store's Expo Go matches your project's SDK, that works too.
- Sign in to the same Expo account twice. On your computer run npx expo login; in Expo Go, tap the account icon at the top right and sign in with the same account.
- Start the server. Run npx expo start in your project folder and wait for the QR code.
- Scan with the Camera. Open the Camera app, or Code Scanner in Control Center, and hold the iPhone so the QR code is in view.
- Tap the link. A link appears on screen; tap it and the project opens in Expo Go.
Code Scanner isn't in Control Center by default. To add it, open Control Center, touch and hold the background, tap Add a Control and pick Scan Code.
How to scan the QR code on Android
- Install Expo Go from the Google Play Store.
- Run npx expo start on your computer, on the same Wi-Fi as the phone.
- Open Expo Go and scan the QR code from inside the app.
On Android, Expo doesn't require sign-in to open a project yet; its September 2026 changelog says that will come to Android later. If you're using the Android Emulator or the iOS Simulator on the same computer, skip the QR code: press A or I in the terminal.
Fixes when the Expo Go QR code fails
| What you see | Likely cause | Fix |
|---|---|---|
| "You need to be signed in to Expo Go and Expo CLI" | One side signed out, or two different accounts | npx expo login, sign in to Expo Go with the same account, tap Try Again |
| A spinner, then a timeout | Phone and computer on different networks | Put both on the same Wi-Fi network |
| Still times out on the same Wi-Fi | The network blocks devices talking to each other | Restart with npx expo start --tunnel and scan again |
| "Project is incompatible with this version of Expo Go" | Expo Go built for a different SDK | Install a matching Expo Go, or upgrade the project |
| Opens, then crashes on a feature | A native module Expo Go doesn't include | Make a development build |
| The camera shows no link | The code is cut off or too small | Enlarge the terminal window, or press E to print it again |
Fix 1: The sign-in error on iPhone
Since September 2026, Expo Go on a physical iPhone opens a project from a development server only when Expo CLI and Expo Go are signed in to the same Expo account. The terminal shows no warning; the error appears only on the phone.
- Run npx expo whoami to see which account the CLI uses, and npx expo login if it says you're signed out.
- In Expo Go, tap the account icon at the top right and sign in with that same account.
- Tap Try Again on the error screen.
- If you switched accounts on the computer, stop and restart npx expo start: the CLI keeps the account it started with.
Simulators and development builds don't need this sign-in.
Fix 2: Different networks
With the default LAN mode, your phone must reach your computer over the local network. A phone on mobile data or on a different network can't. Put both on the same Wi-Fi and scan again.
Fix 3: Networks that block the connection
Some networks, public ones especially, are set up so devices can't reach each other, even on the same Wi-Fi. Expo's answer is tunnel mode: npx expo start --tunnel sends the connection through a public address using ngrok, so both devices need only an internet connection. It works almost anywhere, but reloads are noticeably slower, so switch back to LAN at home.
Fix 4: SDK version mismatch
Each Expo Go build runs exactly one Expo SDK version, and your project's SDK is set by the expo package in package.json. If they differ, Expo Go says "Project is incompatible with this version of Expo Go" or "requires a newer version of Expo Go". To fix it:
- Check the project. Look at the expo version in package.json, and remove any sdkVersion in your app config, or make it match.
- Line up packages. Run npx expo-doctor@latest, then npx expo install --fix.
- On an iPhone, build a matching Expo Go with eas go and install it through TestFlight. Expo's docs say an older Expo Go can't be installed on a physical iPhone, so for an older project, upgrade it or use the iOS Simulator.
- On Android or a simulator, pick your SDK version at expo.dev/go, or download one with npx expo-go.
Fix 5: A feature that Expo Go doesn't include
Expo Go ships with a fixed set of native modules. A project that needs another one opens, then fails when it reaches that feature. Expo calls Expo Go a playground for learning, not for production-grade projects, and points to a development build: your own app with Expo's developer tools inside. Press S in the terminal to switch to it once it's installed.
Expo Go and AI app builders
Many AI app builders that make phone apps use Expo, so this QR code is how you see their output on a phone. Bolt's own guide, for example, has you test its mobile apps by scanning a code into Expo Go. That works well for a quick look, and everything above applies: the sign-in, the network and the SDK version. Publishing the app is a separate job, usually done with Expo's command-line tools. Our Bolt guide walks through it.
Seeing an iPhone app without Expo Go
There's another way to see your app on a phone that skips the QR code entirely. Borel writes iPhone apps in native Swift and SwiftUI instead of React Native, so there is no JavaScript to serve and no Expo Go in between:
| Expo Go | Borel | |
|---|---|---|
| What runs | Your JavaScript inside Expo Go | Your own native Swift app |
| On a computer | A simulator or emulator you install | The iOS Simulator in your browser, free |
| On an iPhone | Scan a QR code each session | Installed by Borel Companion, then updated over Wi-Fi |
| Accounts to match | Expo CLI and Expo Go | Just your Apple ID in Companion |
| Version to match | The project's SDK and Expo Go's | None: the app is built for your phone |
| Network | Same Wi-Fi, or a tunnel | A cable to start with, then Wi-Fi |
You describe the app in a chat and Borel builds it with Xcode on its own Mac. It opens in the iOS Simulator in your browser on any computer, Windows included. With Pro, Borel Companion, a free download for Windows and Mac, installs it on your iPhone with your Apple ID: a cable to start with, then Wi-Fi. A free Apple ID holds 3 of your apps, and Companion renews each one every 7 days while it runs. When you're ready, the same app goes to the App Store from the browser.
If you came to Expo because you want an iPhone app and not a JavaScript project, our Expo comparison and the SwiftUI vs React Native guide explain the difference.
The Bottom Line
The Expo Go QR code is a server address in a square. Scan it with the iPhone's Camera or from Expo Go on Android, and when it fails, check four things in order: the same Expo account on both sides, the same Wi-Fi, tunnel mode on a strict network, and an Expo Go that matches your SDK. If you'd rather skip the matching altogether, describe your app on Borel and try it in your browser in a few minutes.
Questions people ask
How do I scan an Expo Go QR code on iPhone?
Run npx expo start, open the iPhone's Camera app or Code Scanner, point it at the QR code and tap the link that appears. The project opens in Expo Go, as long as Expo Go and Expo CLI are signed in to the same Expo account.
Why does Expo Go say I need to sign in?
Since September 2026, Expo Go on a physical iPhone opens a project only when Expo CLI and Expo Go use the same Expo account. Run npx expo login, sign in to Expo Go with that account, then tap Try Again.
Why does Expo Go keep loading and never open my app?
Usually the phone can't reach your computer. Put both on the same Wi-Fi; on a public or office network, restart with npx expo start --tunnel and scan the new code.
What does "Project is incompatible with this version of Expo Go" mean?
Your project uses a different Expo SDK than your Expo Go was built for. Install a matching Expo Go (with eas go and TestFlight on iPhone, or from expo.dev/go on Android), or upgrade the project.
Is Expo Go the same as my finished app?
No. Expo Go is a playground that runs your project's JavaScript. The app you publish is a separate build, and features that need extra native code require a development build.
Can I see an iPhone app on my phone without Expo Go?
Yes. Borel builds native Swift apps you try in the iOS Simulator in your browser, starting with 5 free credits a day, up to 30 a month, and installs them on your iPhone with Borel Companion on Pro, from $20 a month.
I hope this saves you an evening with a QR code that won't connect. And if you'd rather skip the QR code altogether, I'd love you to try Borel.
– Sigsten
Make your iPhone app in Borel
Describe the app you want and see its first screens before you pay anything.
See your app free