Your Expo SDK upgrade, planned against the project you actually have
Paste package.json, app.json, and whichever of
babel.config.js, metro.config.js, postcss.config.js and
eas.json you have — plus a listing of your top-level files, which is how the plan
knows whether you are managed or bare. You get the hops between your SDK and your target, the
deprecated packages that have to move before you take them, the config that is now redundant,
the corrected dependency block, and the commands in the order they should be run.
Both examples ship with a saved model run, so you can see the whole output — including the corrected dependency block and the commands — without signing in and without spending a credit.
What this does, and what it does not
The prescan is real parsing, not a keyword search: package.json and
app.json go through a tolerant JSON reader that reports what it had to repair, the
installed SDK comes from your expo version range, and whether you are on
Continuous Native Generation or a bare workflow is decided by whether ios/ and
android/ appear in what you pasted. Everything it finds is handed to the model as
facts it must reconcile, and the plan is checked against them afterwards — if the model skips a
flag, this page says so.
It plans; it does not run anything. No command on this page touches your machine, and the
corrected dependency block is a suggestion to review, not a lockfile. Version numbers that Expo
controls are deliberately left for npx expo install --fix to resolve rather than
guessed.
Nothing to hand? Load the , an SDK 51 project with deprecated packages, a patched dependency and hand-written native code, or the , which is one hop from the target and mostly wants confirmation. Both replay a saved run for free.