Expo Development Client

55.0.28 · active · verified Tue Apr 21

The `expo-dev-client` package is a fundamental component of the Expo ecosystem, enabling developers to create custom development builds of their React Native applications. Unlike the generic Expo Go app, development builds include your project's specific native code, allowing for the use of custom native modules (third-party native libraries or your own native code) and advanced native configurations without ejecting to a bare React Native workflow. It provides a development environment that closely mirrors production while retaining fast iteration speeds for JavaScript changes. The current stable version is 55.0.28, aligning with Expo SDK 55. Expo SDKs are typically released three times a year, with each release targeting a specific React Native version. Key differentiators include improved debugging tools, a configurable launcher UI for switching between development servers, and seamless integration with EAS Build for cloud-based native builds.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates creating a new Expo project, installing `expo-dev-client`, generating native projects with `prebuild`, and then building and running a custom development client. It also shows how to use `isDevelopmentBuild` and `getUrl` within your app logic.

import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';
import { isDevelopmentBuild, getUrl } from 'expo-dev-client';

export default function App() {
  const appUrl = getUrl();
  const isDev = isDevelopmentBuild();

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Expo Dev Client Example</Text>
      <Text>Is Development Build: {isDev ? 'Yes' : 'No'}</Text>
      {isDev && <Text>Development URL: {appUrl || 'N/A'}</Text>}
      <Text style={styles.text}>This app is running in a custom Expo Development Client.</Text>
      <Text style={styles.text}>It supports native modules and advanced configurations.</Text>
      <StatusBar style="auto" />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
    padding: 20,
  },
  title: {
    fontSize: 22,
    fontWeight: 'bold',
    marginBottom: 10,
  },
  text: {
    fontSize: 16,
    textAlign: 'center',
    marginVertical: 5,
  },
});

// To run this:
// 1. npx create-expo-app my-dev-client-app --template bare-minimum
// 2. cd my-dev-client-app
// 3. npx expo install expo-dev-client
// 4. Copy this code into App.tsx
// 5. npx expo prebuild --platform android,ios
// 6. npx expo run:ios (or run:android) to build and launch the custom client
// 7. Then subsequent runs: npx expo start --dev-client

view raw JSON →