I scanned the QR code and two lines of English appeared in Expo Go: "Project is incompatible with this version of Expo Go," followed by "This project requires a newer version of Expo Go."
I had just installed the app. So I assumed my project was the broken part. I deleted node_modules, reinstalled, cleared the cache, restarted, and got the same screen again. Only then did I stop typing.
What I realized later is that the message never says anything is broken. It says two things didn't match, and it doesn't tell you which one is wrong. So before I touch anything now, I split the question into three comparisons.
The message is the result of comparing three numbers
Expo Go compares the SDK version the project claims against the SDK versions it supports itself. If they don't match, you get that screen and nothing loads.
That means the project isn't the only suspect. The Expo Go build on your phone can be the one that's off.
| Order | What to check | What a mismatch looks like |
|---|---|---|
| 1 | The SDK your project uses | It disagrees with Expo Go, so every project shows the same screen |
| 2 | The SDK Expo Go supports | An old build, or a build for a different SDK, is installed |
| 3 | The Android Expo Go build itself | The SDK matches, yet one specific build rejects it |
The first two you can verify by reading a number. The third is rare, but it really happened in summer 2026, so I'll cover it below.
Check one: turn the project's SDK into a number
Start by finding out what your project claims to be. This works the same for a project exported from Rork and one you created by hand.
# Run from the project root
grep -E '"(expo|react-native)"' package.json
# List dependencies that don't match what this SDK expects
npx expo install --checkThe first line shows the expo version (for example, ~56.0.11 means SDK 56) and the react-native version. The second lists packages that don't fit the SDK. If red lines pile up there, fix the project first and leave Expo Go alone.
I'd write the number down in one line, because you'll set it next to the Expo Go side in the next step.
// check-sdk.js — a small note-to-self script
// Usage: node check-sdk.js
const pkg = require('./package.json');
const dep = { ...pkg.dependencies, ...pkg.devDependencies };
const expo = dep.expo || '(expo not found)';
const major = String(expo).match(/(\d+)\./)?.[1] ?? '?';
console.log(`expo : ${expo}`);
console.log(`SDK (guess) : ${major}`);
console.log(`react-native: ${dep['react-native'] ?? '(not set)'}`);
// Compare this SDK number with the "Supported SDK"
// shown in Expo Go's settings screen.Why a script for something this small? Because three numbers in a row keep my hands moving, while reopening package.json and rereading an English error screen does not.
Check two: which SDK does your Expo Go accept?
Next, find out what your installed Expo Go supports. The app's settings screen shows the supported SDK. In one thread, someone reported that the build from the Play Store showed "Supported SDK 54," so SDK 55 and 56 projects would not open.
A store build can lag behind the newest SDK. When that happens, open Expo's official page (expo.dev/go), pick the SDK version and your device type, and follow the install instructions it gives for that SDK.
The other option is to move the project to the SDK your Expo Go supports. But lowering an SDK ripples through your dependencies. I try reinstalling Expo Go before I downgrade the project. Easy-to-undo steps first, hard-to-undo steps last. I keep to that even when I'm in a hurry, maybe especially then.
Check three: the SDK matches, and it still fails
Sometimes checks one and two both pass and you still see the same screen. In June 2026, exactly this was reported in the expo/expo repository on GitHub.
According to the report, Expo Go 56.0.1 for Android rejected every SDK 56 project, including a fresh empty template. It failed whether the project loaded from the dev server or from an EAS Update.
The reporter isolated the cause carefully. The project declared SDK 56.0.0, and the server's version table said a 56.0.1 client should accept it. When they rewrote only that manifest value to 56.0.1 through a local proxy, the project opened. Installing the previous release, Expo Go 56.0.0, opened the same project with no rewrite at all.
Their reading was that the 56.0.1 client compared the project's SDK string against its own app version string. That would mean it wasn't asking "is this SDK 56?" at all. I only read the report; I did not reproduce this, and the root cause is the reporter's inference.
Per the comments, two things helped:
| Fix | What it involves | Caveat |
|---|---|---|
| Install the previous build | Download the Expo Go 56.0.0 APK from the official releases page and install it over the existing app | This was the workaround at the time. Check the official page first today |
| Follow the official page | Choose SDK 56 and Android on expo.dev/go and reinstall | A maintainer pointed people to this route |
The issue was closed on October 26, 2026. The maintainers noted that a working Expo Go for SDK 56 is available on the official page and that no new reports had come in since June. If you meet this screen today, reinstalling from that page comes first.
The counterintuitive part: newest wasn't safest
I had always assumed the latest app build was the safest one. This case went the other way. Within the same SDK 56, a single patch number decided which projects opened and which didn't.
That doesn't mean you should always install an older build. The lesson I took is narrower: when updating doesn't fix it, keep "try the previous release" on your list of options.
When it still won't open
If all three checks pass and nothing changes, consider switching from Expo Go to a development build, which installs as your own app. Expo Go is a sandbox for learning and prototyping, and it isn't built for testing setups close to production.
If you only want to try the app on a real iPhone, going through Rork Companion can be shorter. For connection trouble, see when the preview doesn't appear on the same Wi-Fi. If the QR code scans but nothing opens, the check order for a QR that scans but won't open covers a different failure.
And if you're wondering how far you can go on real devices without paying, Companion's free tier and when to pay Apple's $99 is a useful companion read.
My first three minutes next time
As an indie developer, I tend to skip steps in the week an app update is due. When I meet this screen now, I run the grep for the SDK number, open Expo Go's settings, and open the official install page, in that order. Deleting node_modules comes after.
For today, write the expo version from your package.json on a single line somewhere you'll find it. With that line in hand, the next time this screen appears, you'll spend noticeably less time guessing.