Learn how to run a project in development mode or production mode.
Your project will always run in either development or production mode. By default, running your project locally with
npx expo start runs it in development mode, whereas a published project (with
eas update), or any standalone app, will run in production mode.
Development mode includes useful warnings and gives you access to tools that make development and debugging easier. Production mode minifies your code and better represents the performance your app will have on end users' devices. Let's look at each of these modes in more detail and learn how you can switch between them.
Development mode also performs validations while your app is running to give you warnings if, for example, you're using a deprecated property or if you forgot to pass a required property into a component. The video below shows the Element Inspector and Performance Monitor in action on both Android and iOS simulators:
This comes at a cost. Your app runs slower in development mode.
You can switch it on and off with the Expo CLI, see Production mode. When you switch it, close and re-open your app for the change to take effect. Any time you are testing your app's performance, make sure to disable development mode.
The menu gives access to a host of features that make development and debugging much easier. For more information on to open it on Android and iOS, see Developer menu.
Production mode is most useful for two things:
The easiest way to simulate how your project will run on end users' devices is with the command:
npx expo start --no-dev --minify
Besides running in production mode (which tells the Metro bundler to set the
__DEV__ environment variable to
false, among a few other things), the
--minify flag will minify your app. This flag will also eliminate unnecessary data such as comments, formatting, and unused code.
If you're getting an error or crash in your standalone app, running your project with this command can save you a lot of time in finding the root cause.