gregfenton
43 supporters
Expo Go: great tool -- and release a cus ...

Expo Go: great tool -- and release a custom client

Mar 05, 2023

[See other posts about Expo]

When you run expo start what you end up launching on your development computer is the Expo Development System (also known as "Metro"), and in turn that will run the Expo Go app on your emulator or device.

Expo Go is a pre-built app, distributed by the Expo company, through the app stores as well as it can be installed by Metro onto your local simulator/emulator.

One of the limitations of Expo Go is that it is pre-built -- that is, it has built into it what it has built into it...and only what is already built into it. If you want to use something else that requires tweaks to the "native" part of the React-Native app, you are out of luck with Expo Go.

Expo Go is great for prototyping and a good portion of the development cycle of your Expo/React-Native project.

However, you almost certainly want to (or likely need to) build and release your project using your own custom client.

With a custom client you can:

  • include third party modules that Expo Go does not have built into it -- this is necessary for NPMs that include "native bits" (i.e. have ios and android directories at their root)

  • exclude libraries that Expo Go has but your app will not use

  • modify the permissions that your app will use

  • have your own icon, app name, and splash screen

  • deploy to the app stores under your own account, with your own branding, etc.

The best way to build your own client (your own app) is to use EAS Build + Managed Workflow.

To use a custom client with the Expo Development System:

  1. Make sure your project has import 'expo-dev-client' (usually in your App.js or your index.js)

  2. Build your client with eas build ...

  3. Run expo start --dev-client . The Expo Dev System will know to look for your custom client rather than for Expo Go.

Enjoy this post?

Buy gregfenton a coffee

More from gregfenton