Confused about Expo Go vs Development Build

Hi @cjroe

A development build is basically a custom version of Expo Go that is built with your dependencies and your Android package or iOS Bundle Identifier. This means that, unlike Expo Go, you can use dependencies that rely on native code that is not part of the Expo SDK. (i.e. stuff that you would previously have to eject in order to use.)

You would need to rebuild it whenever you install a new native dependency (or a new version of a native dependency). Presumably this is not something you do every day normally. Also, in theory you could pre-install a bunch of dependencies and use the development build to develop multiple similar apps, just like you would use Expo Go.

If you are only installing dependencies from the Expo SDK then you can stick with Expo Go.

It’s basically the same way you would with Expo Go. You run npx expo start and then press a or i to open it in your Android emulator/iOS Simulator, or you can install it on a device and load your app in it like you would do with Expo Go.

No. If you do not have the native android and ios directories in your app, then when you build the dev build, the EAS Build server will run npx expo prebuild for you. So there’s no need for you to run it locally. If you do run it locally it will generate the android/ios directories which complicates things. Because now you either have to clean up afterwards, or else you’ll need to add them to .gitignore and ignore them, or you need to periodically run npx expo prebuild --clean or you need to abandon the managed workflow and edit the native projects directly when changing your app icon, splash screen, etc., etc.

I suggest you do not run npx expo prebuild and let the build servers handle it for you. If you do run it (e.g. for debugging a config plugin) then clean up afterwards.

Someone else asked a similar question recently. Maybe that thread will help too.

1 Like