What is expo-dev-launcher?
The expo-dev-launcher package is a development tool for Expo applications that allows developers to launch and test their apps in a development environment. It provides functionalities to reload the app, open the developer menu, and handle deep links, among other features.
What are expo-dev-launcher's main functionalities?
Reload the App
This feature allows developers to programmatically reload the application, which is useful for testing changes without manually restarting the app.
import { reloadAsync } from 'expo-dev-launcher';
async function reloadApp() {
await reloadAsync();
}
Open Developer Menu
This feature enables developers to open the developer menu programmatically, providing quick access to development tools and options.
import { openMenu } from 'expo-dev-launcher';
function openDevMenu() {
openMenu();
}
Handle Deep Links
This feature allows the app to handle deep links, making it easier to test and debug deep linking functionality during development.
import { addDeepLinkListener } from 'expo-dev-launcher';
addDeepLinkListener((url) => {
console.log('Deep link received:', url);
});
Other packages similar to expo-dev-launcher
react-native-restart
The react-native-restart package provides a simple way to programmatically restart a React Native application. While it focuses solely on restarting the app, it lacks the broader set of development tools provided by expo-dev-launcher.
react-native-deep-link
The react-native-deep-link package is designed to handle deep linking in React Native applications. It offers similar deep link handling capabilities as expo-dev-launcher but does not include other development tools like reloading the app or opening the developer menu.
react-native-dev-menu
The react-native-dev-menu package allows developers to customize and open the developer menu in React Native applications. It provides similar functionality to the developer menu feature in expo-dev-launcher but does not include other features like reloading the app or handling deep links.
expo-dev-launcher
expo-dev-launcher
is an npm package installable in any Expo or React Native project. Once installed, any Debug builds of your application will gain the ability to load projects from Expo CLI. Release builds of your application will not change other than the addition of a few header files. This package is intended to be included in your project through expo-dev-client
.
Documentation
You can find more information in the Expo documentation.
Contributing
The expo-dev-launcher
repository consists of two different parts, the exported package, which includes the native functions, located in the android
, ios
and src
folders and the Dev Launcher interface, located under the bundle
folder.
Local development is usually done through bare-expo
.
To use dev-client
when running bare-expo
on Android, open MainApplication.kt and set the USE_DEV_CLIENT
value to true
.
- private const val USE_DEV_CLIENT = false;
+ private const val USE_DEV_CLIENT = true;
To use dev-client
when running bare-expo
on iOS, open AppDelegate.mm and set the USE_DEV_CLIENT
value to YES
.
- BOOL useDevClient = NO;
+ BOOL useDevClient = YES;
Making JavaScript changes inside the bundle
folder
To update the JavaScript code inside the bundle
folder, you need to run the dev-launcher
bundler locally.
- Navigate to the
dev-launcher
package: cd packages/expo-dev-launcher
- Start the Metro bundler:
yarn start
- Adjust the dev-launcher URL to point to your local bundler
On Android
Open DevLauncherController.kt and update the DEV_LAUNCHER_HOST
value to your bundler URL.
E.g.
- private val DEV_LAUNCHER_HOST: String? = null
+ private val DEV_LAUNCHER_HOST: String? = "10.0.2.2:8090";
On iOS
3.1. Open another terminal window and navigate to the ios
folder inside bare-expo
3.2. Export the EX_DEV_LAUNCHER_URL
variable in your shell before running pod install
.
E.g.
export EX_DEV_LAUNCHER_URL=http://localhost:8090
This will cause the controller to see if the expo-launcher
packager is running, and if so, use that instead of the prebuilt bundle.
3.3. Run pod install
- Recompile
bare-expo
- Play with your changes on a simulator or device
- Once you've made all the necessary changes run
yarn bundle
to update the embedded bundle