HomeGuidesReferenceLearn

Reference version

ArchiveExpo SnackDiscord and ForumsNewsletter

Expo DevClient iconExpo DevClient

GitHub

npm

A library that allows creating a development build and includes useful development tools.


expo-dev-client adds various useful development tools to your debug builds:

  • a configurable launcher UI, so you can launch updates (such as from PR previews) and switch between development servers without needing to recompile the native app
  • improved debugging tools (such as support for inspecting network requests)
  • a powerful and extensible developer menu UI

Expo documentation refers to debug builds that include expo-dev-client as development builds.

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb

Installation

Terminal
- npx expo install expo-dev-client

If you're installing this in a bare React Native app, you should also follow these additional installation instructions.

Configuration in app.json/app.config.js

You can configure development client launcher using its built-in config plugin if you use config plugins in your project (EAS Build or npx expo run:[android|ios]). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect.

Example app.json with config plugin

app.json
{
  "expo": {
    "plugins": [
      [
        "expo-dev-launcher",
        {
          "launchModeExperimental": "most-recent"
        }
      ]
    ]
  }
}

Configurable properties

NameDefaultDescription
launchModeExperimental"most-recent"
Experimental

Determines whether to launch the most recently opened project or navigate to the launcher screen.

  • most-recent - Attempt to launch directly into a previously opened project and if unable to connect, fall back to the launcher screen.
  • launcher - Opens the launcher screen.

API

import * as DevClient from 'expo-dev-client';

Methods

DevClient.closeMenu()

A method that closes development client menu when called.

Returns

  • void

DevClient.hideMenu()

A method that hides development client menu when called.

Returns

  • void

DevClient.isDevelopmentBuild()

A method that returns a boolean to indicate if the current application is a development build.

Returns

  • boolean

DevClient.openMenu()

A method that opens development client menu when called.

Returns

  • void

DevClient.registerDevMenuItems(items)

NameTypeDescription
itemsExpoDevMenuItem[]-

A method that allows to specify custom entries in the development client menu.

Returns

  • Promise<void>

Types

ExpoDevMenuItem

An object representing the custom development client menu entry.

NameTypeDescription
callback() => void

Callback to fire, when user selects an item.

namestring

Name of the entry, will be used as label.

shouldCollapse
(optional)
boolean

A boolean specifying if the menu should close after the user interaction.

Default: false