@nx/react-native - Executors
The @nx/react-native plugin provides various executors to help you create and configure react-native projects within your Nx workspace. Below is a complete reference for all available executors and their options.
build-android
Section titled “build-android”Build target options for Android.
project.json:
{ "name": "mobile", //... "targets": { //... "build-android": { "executor": "@nx/react-native:build-android", "outputs": [ "{projectRoot}/build/outputs/bundle", "{projectRoot}/build/outputs/apk" ], "options": {} } }}nx run mobile:build-androidExamples
Section titled “Examples”Build with custom tasks
Section titled “Build with custom tasks”The tasks option accepts any custom gradle task, such as assembleDebug, assembleRelease, bundleDebug, bundleRelease, installDebug, installRelease.
For example, pass in bundleRelease or bundleRelease to tasks, it will create with .aab extension under bundle folder.
Pass in assembleDebug or assembleRelease to tasks, it will create a build with .apk extension under apk folder.
Pass in installDebug or installRelease to tasks, it will create a build with .apk extension and immediately install it on a running emulator or connected device.
"build-android": { "executor": "@nx/react-native:build-android", "outputs": [ "{projectRoot}/build/outputs/bundle", "{projectRoot}/build/outputs/apk" ], "options": { "tasks": ["bundleRelease"] } }Build for debug/release
Section titled “Build for debug/release”The mode option allows you determine whether to build for debug/release apk.
"build-android": { "executor": "@nx/react-native:build-android", "outputs": [ "{projectRoot}/build/outputs/bundle", "{projectRoot}/build/outputs/apk" ], "options": { "mode": "debug" } }Build for current device architecture
Section titled “Build for current device architecture”The activeArchOnly option allows you to build native libraries only for the current device architecture for debug builds.
"build-android": { "executor": "@nx/react-native:build-android", "outputs": [ "{projectRoot}/build/outputs/bundle", "{projectRoot}/build/outputs/apk" ], "options": { "activeArchOnly": true } }Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
activeArchOnly | boolean | Build native libraries only for the current device architecture for debug builds. | false |
extraParams | string | Custom params passed to gradle build command | |
interactive | boolean | Explicitly select build type and flavour to use before running a build | |
mode | string | Specify your app’s build variant | "debug" |
port | number | The port where the packager server is listening on. | 8081 |
resetCache | boolean | Resets metro cache. | false |
tasks | string | Run custom Gradle tasks. By default it’s “assembleDebug”. Will override passed mode and variant arguments. |
build-ios
Section titled “build-ios”Build iOS app.
project.json:
{ "name": "mobile", //... "targets": { //... "build-ios": { "executor": "@nx/react-native:build-ios", "options": {} } }}nx run mobile:build-iosExamples
Section titled “Examples”Build in Specific Location
Section titled “Build in Specific Location”The buildFolder option allows to specify the location for ios build artifacts. It corresponds to Xcode’s -derivedDataPath.
"build-ios": { "executor": "@nx/react-native:build-ios", "options": { "buildFolder": "dist/ios/build" } }nx build-ios <app-name> --buildFolder=dist/ios/buildBuild the Debug/Release app
Section titled “Build the Debug/Release app”The mode option allows to specify the xcode configuartion, such as Debug or Release.
"build-ios": { "executor": "@nx/react-native:build-ios", "options": { "mode": "Release" } }nx build-ios <app-name> --mode=Debugnx build-ios <app-name> --mode=ReleaseBuild for a simulator
Section titled “Build for a simulator”The simulator option allows you to launch your iOS app in a specific simulator:
To see all the available simulators, run command:
xcrun simctl list devices available "build-ios": { "executor": "@nx/react-native:build-ios", "options": { "simulator": "iPhone 14 Pro" } }nx build-ios <app-name> --simulator="iPhone 14 Pro"Build for a device
Section titled “Build for a device”The device option allows you to launch your iOS app in a specific device.
To see all the available device, run command:
xcrun simctl list devices available "build-ios": { "executor": "@nx/react-native:build-ios", "options": { "device": "deviceName" } }nx build-ios <app-name> --device="deviceName"Set Device by udid
Section titled “Set Device by udid”The udid option allows you to explicitly set device to use by udid.
To see all the available simulators and devices with udid, run command:
xcrun simctl list devices available "build-ios": { "executor": "@nx/react-native:build-ios", "options": { "udid": "device udid" } }nx build-ios <app-name> --udid="device udid"Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
buildFolder | string | Location for iOS build artifacts. Corresponds to Xcode’s “-derivedDataPath”. Relative to ios directory | "./build" |
device | string | Explicitly set device to use by name. The value is not required if you have a single device connected. | |
extraParams | string | Custom params that will be passed to xcodebuild command. | |
interactive | boolean | Explicitly select which scheme and configuration to use before running a build | |
mode | string | Explicitly set the scheme configuration to use | "Debug" |
port | number | The port where the packager server is listening on. | 8081 |
resetCache | boolean | Resets metro cache. | false |
scheme | string | Explicitly set Xcode scheme to use | |
simulator | string | Explicitly set simulator to use. Optionally include iOS version between parenthesis at the end to match an exact version: “iPhone 6 (10.0)“ | |
udid | string | Explicitly set device to use by udid | |
verbose | boolean | Do not use xcbeautify or xcpretty even if installed | |
xcconfig | string | Explicitly set xcconfig to use |
bundle
Section titled “bundle”JS Bundle target options.
project.json:
{ "name": "mobile", //... "targets": { //... "bundle-ios": { "executor": "@nx/react-native:bundle", "outputs": ["{projectRoot}/build"], "options": { "entryFile": "src/main.tsx", "platform": "ios", "bundleOutput": "dist/apps/mobile/ios/main.jsbundle" } }, "bundle-android": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "android", "bundleOutput": "dist/apps/mobile/android/main.jsbundle" } } }}nx run mobile:bundle-iosnx run mobile:bundle-androidExamples
Section titled “Examples”Bundle with sourcemap
Section titled “Bundle with sourcemap”The sourcemapOutput option allows you to specify the path of the source map relative to app folder:
"bundle-ios": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "ios", "bundleOutput": "dist/apps/mobile/ios/main.jsbundle", "sourcemapOutput": "../../dist/apps/mobile/ios/main.map", } }, "bundle-android": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "android", "bundleOutput": "dist/apps/mobile/android/main.jsbundle", "sourcemapOutput": "../../dist/apps/mobile/android/main.map", } }Create a dev/release bundle
Section titled “Create a dev/release bundle”The dev option determines whether to create a dev or release bundle. The default value is true, by setting it as false, warnings are disabled and the bundle is minified.
"bundle-ios": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "ios", "bundleOutput": "dist/apps/mobile/ios/main.jsbundle", "dev": false } }, "bundle-android": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "android", "bundleOutput": "dist/apps/mobile/android/main.jsbundle", "dev": false } }Create a minified bundle
Section titled “Create a minified bundle”The minify option allows you to create a minified bundle:
"bundle-ios": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "ios", "bundleOutput": "dist/apps/mobile/ios/main.jsbundle", "minify": true } }, "bundle-android": { "executor": "@nx/react-native:bundle", "options": { "entryFile": "src/main.tsx", "platform": "android", "bundleOutput": "dist/apps/mobile/android/main.jsbundle", "minify": true } }Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
bundleOutput | string [required] | The output path of the generated files. | |
entryFile | string [required] | The entry file relative to project root. | |
platform | any [required] | Platform to build for. | |
assetsDest | string | Directory name where to store assets referenced in the bundle. | |
dev | boolean | Generate a development build. | true |
maxWorkers | number | The number of workers we should parallelize the transformer on. | |
minify | boolean | Allows overriding whether bundle is minified. | |
readGlobalCache | boolean | Try to fetch transformed JS code from the global cache, if configured. | false |
resetCache | boolean | Removes cached files. | false |
sourcemapOutput | string | File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map. | |
sourcemapSourcesRoot | string | Path to make sourcemaps sources entries relative to, ex. /root/dir. | |
sourcemapUseAbsolutePath | boolean | Report SourceMapURL using its full path. | false |
transformer | string | Specify a custom transformer to be used. |
ensure-symlink
Section titled “ensure-symlink”Ensure workspace node_modules is symlink under app’s node_modules folder.
pod-install
Section titled “pod-install”Run pod install for React Native iOS Project.
Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
buildFolder | string [required] | Location for iOS build artifacts. Corresponds to Xcode’s “-derivedDataPath”. Relative to ios directory. | "./build" |
deployment | boolean | Disallow any changes to the Podfile or the Podfile.lock during installation. | false |
repoUpdate | boolean | Force running pod repo update before install. | false |
useBundler | boolean | Run cocoapods within a Bundler environment, i.e. with the bundle exec pod install command | false |
run-android
Section titled “run-android”Run Android target options.
project.json:
{ "name": "mobile", //... "targets": { //... "run-android": { "executor": "@nx/react-native:run-android", "options": {} } }}nx run mobile:run-androidExamples
Section titled “Examples”Run on a specific device/simulator
Section titled “Run on a specific device/simulator”To see all the available emulators, run command:
emulator -list-avdsThe deviceId option allows you to launch your android app in a specific device/simulator:
"run-android": { "executor": "@nx/react-native:run-android", "options": { "deviceId": "Pixel_5_API_30" } }Run the debug/release app
Section titled “Run the debug/release app”The mode option allows to specify the build variant, such as debug or release.
"run-android": { "executor": "@nx/react-native:run-android", "options": { "mode": "release" } }Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
activeArchOnly | boolean | Build native libraries only for the current device architecture for debug builds. | false |
appId | string | Specify an applicationId to launch after build. If not specified, package from AndroidManifest.xml will be used. | |
appIdSuffix | string | Specify an applicationIdSuffix to launch after build. | |
binaryPath | string | Path relative to project root where pre-built .apk binary lives. | |
deviceId | string | Builds your app and starts it on a specific device/simulator with the given device id (listed by running adb devices on the command line). | |
extraParams | string | Custom params passed to gradle build command | |
interactive | boolean | Explicitly select build type and flavour to use before running a build | |
listDevices | boolean | Lists all available Android devices and simulators and let you choose one to run the app | |
mainActivity | string | Name of the activity to start. | "MainActivity" |
mode | string | Specify your app’s build variant | "debug" |
port | number | The port where the packager server is listening on. | 8081 |
resetCache | boolean | Resets metro cache. | false |
tasks | string | Run custom Gradle tasks. By default it’s “assembleDebug”. Will override passed mode and variant arguments. |
run-ios
Section titled “run-ios”Run iOS target options.
project.json:
{ "name": "mobile", //... "targets": { //... "run-ios": { "executor": "@nx/react-native:run-ios", "options": {} } }}nx run mobile:run-iosExamples
Section titled “Examples”Build the Debug/Release app
Section titled “Build the Debug/Release app”The mode option allows to specify the xcode configuartion schema, such as Debug or Release.
"run-ios": { "executor": "@nx/react-native:run-ios", "options": { "mode": "Release" } }nx run-ios <app-name> --mode=DebugRun on a simulator
Section titled “Run on a simulator”The simulator option allows you to launch your iOS app in a specific simulator.
To see all the available simulators, run command:
xcrun simctl list devices available "run-ios": { "executor": "@nx/react-native:run-ios", "options": { "simulator": "iPhone 14 Pro (16.2)" } }nx run-ios <app-name> --simulator="iPhone 14 Pro (16.2)"Run on a device
Section titled “Run on a device”The device option allows you to launch your iOS app in a specific device.
To see all the available devices, run command:
xcrun simctl list devices available "run-ios": { "executor": "@nx/react-native:run-ios", "options": { "device": "deviceName" } }nx run-ios <app-name> --device="deviceName"Set Device by udid
Section titled “Set Device by udid”The udid option allows you to explicitly set device to use by udid.
To see all the available simulators and devices with udid, run command:
xcrun simctl list devices available "run-ios": { "executor": "@nx/react-native:run-ios", "options": { "udid": "device udid" } }nx run-ios <app-name> --udid="device udid"Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
binaryPath | string | Path relative to project root where pre-built .app binary lives. | |
buildFolder | string | Location for iOS build artifacts. Corresponds to Xcode’s “-derivedDataPath”. Relative to ios directory. | |
device | string | Explicitly set device to use by name. The value is not required if you have a single device connected. | |
extraParams | string | Custom params that will be passed to xcodebuild command. | |
interactive | boolean | Explicitly select which scheme and configuration to use before running a build | |
mode | string | Explicitly set the scheme configuration to use | "Debug" |
port | number | The port where the packager server is listening on. | 8081 |
resetCache | boolean | Resets metro cache. | false |
scheme | string | Explicitly set Xcode scheme to use | |
simulator | string | Explicitly set simulator to use. Optionally include iOS version between parenthesis at the end to match an exact version: “iPhone 6 (10.0)“ | |
udid | string | Explicitly set device to use by udid | |
verbose | boolean | Do not use xcbeautify or xcpretty even if installed | |
xcconfig | string | Explicitly set xcconfig to use |
Packager Server target options.
project.json:
{ "name": "mobile", //... "targets": { //... "start": { "executor": "@nx/react-native:start", "options": { "port": 8081 } } }}nx run mobile:startExamples
Section titled “Examples”Starts the server non-interactively
Section titled “Starts the server non-interactively”The interactive option allows you to specify whether to use interactive mode:
"start": { "executor": "@nx/react-native:start", "options": { "port": 8081, "interactive": false } }Starts the server with cache reset
Section titled “Starts the server with cache reset”The resetCache option allows you to remove cached files.
"start": { "executor": "@nx/react-native:start", "options": { "port": 8081, "resetCache": true } }Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
interactive | boolean | Run packager server in interactive mode. | true |
port | number | The port to listen on. | 8081 |
resetCache | boolean | Resets metro cache. | false |
storybook
Section titled “storybook”Load stories for react native.
Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
outputFile | string [required] | The output file that will be written. It is relative to the project directory. | "./.storybook/story-loader.ts" |
pattern | string [required] | The pattern of files to look at. It can be a specific file, or any valid glob. Note: if using the CLI, globs with **/*... must be escaped with quotes | `”**/*.stories.@(js |
searchDir | array [required] | The directory or directories, relative to the project root, to search for files in. | [] |
sync-deps
Section titled “sync-deps”Updates package.json with project dependencies.
Options
Section titled “Options”| Option | Type | Description | Default |
|---|---|---|---|
all | boolean | Copy all dependencies and devDependencies from the workspace root package.json. | false |
exclude | array | An array of npm packages to exclude. | [] |
include | array | An array of additional npm packages to include. | [] |
upgrade
Section titled “upgrade”Upgrade React Native code for project.