← SkillSafe / Expo Upgrade Desk

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.

nothing pasted yet
Drag files in, or Everything is read in your browser. Nothing uploads until you run.
Paste a project to price the run.

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.