Skip to main content
The Expo CLI is a command-line tool for developing, building, and deploying Expo and React Native apps. It’s included when you install the expo package.

Installation

The CLI is automatically installed with the expo package:

Usage

Run Expo CLI commands using npx:

Global Options

These options are available for all commands:
flag
Output the version number
flag
Display help for command
flag
Disable interactive prompts

Commands

expo start

Start a development server for your project.
flag
Clear the Metro bundler cache
flag
default:"true"
Enable development mode
flag
Disable development mode (production mode)
flag
Minify JavaScript
flag
Start server with HTTPS
number
default:"8081"
Port to run Metro bundler on
string
Hostname for the dev server
flag
Start a tunnel for the dev server
flag
Use LAN connection
flag
Use localhost connection
flag
Skip network requests
flag
Start for a development build (non-Expo Go)
flag
Start for Expo Go
string
Custom URL scheme to use when launching the app
flag
Open on connected Android device/emulator
flag
Open on connected iOS simulator
flag
Open in web browser
string
Path to private key for code signing
Examples:

expo run:ios

Build and run the iOS app locally.
string
Device name or UDID to build for
string
Xcode scheme to build
string
default:"Debug"
Xcode configuration (Debug or Release)
number
default:"8081"
Port to run Metro bundler on
flag
Skip starting the Metro bundler
Examples:

expo run:android

Build and run the Android app locally.
string
Device name or ID to build for
string
default:"debug"
Build variant to use (debug or release)
number
default:"8081"
Port to run Metro bundler on
flag
Skip starting the Metro bundler
Examples:

expo prebuild

Generate native iOS and Android directories for your project.
flag
Delete native directories before generating
flag
Use npm to install dependencies
flag
Use Yarn to install dependencies
flag
Skip installing npm packages
string
Template to use for native directories
string
Platforms to generate (ios, android, or all)
Examples:
Running prebuild will create ios/ and android/ directories. These should be added to .gitignore if using continuous native generation.

expo install

Install a package and ensure compatible versions with your Expo SDK.
flag
Check which packages need to be updated
flag
Automatically update packages to compatible versions
flag
Use npm
flag
Use Yarn
flag
Use pnpm
flag
Use Bun
Examples:

expo export

Export the app for deployment.
string
default:"all"
Platforms to export (ios, android, web, or all)
string
default:"dist"
Output directory for exported files
flag
Clear Metro bundler cache
flag
Export in development mode
flag
Minify JavaScript
Examples:

expo build

Deprecated. Use EAS Build instead.
See EAS Build documentation.

expo config

Show the project config.
string
Type of config to show (public, prebuild, or introspect)
flag
Show full config including internal values
Examples:

expo customize

Generate template files for customization.
Examples:

expo doctor

Check the project for potential issues.
flag
Fix dependency version issues
Examples:

expo lint

Run ESLint on the project.
flag
Automatically fix problems
Examples:

expo login

Login to your Expo account.
string
Username
string
Password
flag
Login with SSO

expo logout

Logout from your Expo account.

expo whoami

Show the currently authenticated account.

expo register

Create a new Expo account.

Autolinking

expo-modules-autolinking

Search for Expo modules installed in the project.
Commands:
  • search - Search for Expo modules
  • resolve - Resolve module configuration
  • verify - Verify autolinking setup

Environment Variables

EXPO_DEBUG

Enable debug logging:

EXPO_NO_TELEMETRY

Disable anonymous usage telemetry:

EXPO_USE_METRO_WORKSPACE_ROOT

Use the workspace root as the Metro project root:

Package Manager Detection

The CLI automatically detects your package manager:
  • Checks for lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb)
  • Falls back to npm if no lockfile is found
  • Can be overridden with --npm, --yarn, --pnpm, or --bun flags

Interactive Prompts

The CLI includes interactive prompts for better developer experience:
  • Device selection: Choose which device to run on
  • Package installation: Confirm installing missing packages
  • Config generation: Confirm creating config files
  • Platform selection: Choose which platforms to target
Disable prompts with --non-interactive for CI/CD environments.

Keyboard Shortcuts

When the dev server is running, use these shortcuts:
  • a - Open on Android
  • i - Open on iOS
  • w - Open in web browser
  • r - Reload app
  • m - Toggle menu
  • j - Open debugger
  • c - Clear Metro cache
  • d - Show dev menu
  • ? - Show all commands

Troubleshooting

Clear Cache

If you encounter bundling issues:

Reset Project

For persistent issues:

View Logs

Enable debug logging:

EAS CLI

For building and deploying with EAS:
See EAS CLI documentation.