Bring an existing Expo app
Upload the source of an app you already have, keep its own configuration, and build it from the Studio.
Bring an existing Expo app
A project that already exists does not have to be rewritten to be run from here. Settings → Import code takes a zip of an Expo project — the one you get from Download ZIP on GitHub works as it is — and makes it this app's project: its files, its assets, its dependencies, its own app.json and its own Expo SDK. Nothing is regenerated; the import is a single version you can roll back from like any other.
- What is kept: every source file, plus images, fonts, audio and other binary assets. Your
app.jsonstays in charge of the icon, splash, plugins and bundle id — the Studio only adds what EAS needs to build and submit, and the Settings tab then shows the bundle id as read-only, because app.json is where it now comes from. - What is left out:
node_modules,ios,android,.git,.expoand build output. They are regenerated by the build, and leaving them in is how a 7MB project becomes a 400MB upload. The limits are 25MB for the zip, 400KB for a text file and 4MB for a binary one. - Dependencies must come from npm. A version range is fine —
^1.2.0,~1.2, an exact pin. Agit+,file:,link:or URL specifier is refused by name. The build machine installs what package.json says with scripts disabled; a specifier pointing anywhere but the registry is either unreproducible or a way to run code we did not fetch, so it is not accepted. - The instant preview needs an SDK Snack has shipped. The web player currently runs up to Expo SDK 54. A newer project — SDK 57, say — still chats, edits, builds and submits, and Run in browser exports it for the web so it still appears in the phone frame; it takes a few minutes instead of a few seconds, and anything native is inert until you build it.
An import replaces, it does not merge
Uploading a zip swaps the whole project for its contents: files not in the zip are removed. That is what makes it predictable — what you see in the Code tab afterwards is exactly what was in the zip, minus what the list above leaves out.