Skip to main content
Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

What is Expo?

Expo provides a complete development environment that lets you build, deploy, and iterate on native apps without needing deep knowledge of native development tools like Xcode or Android Studio. Whether you’re a solo developer or part of a team, Expo streamlines the entire mobile development workflow.

Write Once, Run Everywhere

Build apps that work seamlessly across iOS, Android, and web from a single codebase using React Native.

Native Module System

Access native platform features through a modular architecture powered by expo-modules-core.

File-Based Routing

Use Expo Router for automatic navigation setup based on your file structure.

Development Tools

Fast Refresh, instant previews, and a powerful CLI make development seamless.

Key Features

Universal Runtime

Expo provides a consistent runtime environment across all platforms. Your app’s JavaScript code runs the same way on iOS, Android, and web, with platform-specific optimizations handled automatically.

Expo SDK

The Expo SDK includes 50+ modules that provide access to device capabilities:
  • Camera & Media: Camera, Image Picker, Audio, Video
  • Device Features: Location, Sensors, Haptics, Battery
  • UI Components: Blur, Glass Effect, Symbols, System UI
  • Storage & Network: FileSystem, SQLite, Network, SecureStore
  • Authentication: Apple, Google, Auth Session

Expo CLI

The Expo CLI (@expo/cli) is your command center for development:
npx expo start      # Start development server
npx expo run:ios    # Build and run on iOS
npx expo run:android # Build and run on Android
npx expo prebuild   # Generate native projects
npx expo install    # Install compatible packages

Expo Router

File-based routing for React Native apps with deep linking, type safety, and cross-platform navigation:
app/
  _layout.tsx       # Root layout
  index.tsx         # Home screen → /
  profile/
    [id].tsx        # Dynamic route → /profile/:id
  (tabs)/
    _layout.tsx     # Tab navigation
    home.tsx        # Tab screen → /home
    settings.tsx    # Tab screen → /settings

Use Cases

Rapidly prototype and launch apps across all platforms without maintaining separate codebases. Get to market faster with hot reload and over-the-air updates.
Build internal tools, customer-facing apps, and business solutions with enterprise-grade security, offline support, and native performance.
Maintain a single codebase for iOS, Android, and web while delivering platform-specific experiences where needed.
Perfect for developers learning React Native. Start building immediately without iOS or Android development setup.

How Expo Works

Expo sits on top of React Native, providing three main layers:
  1. Expo Modules Core: A native module API that makes it easy to write native code that works on iOS and Android
  2. Expo SDK: Pre-built modules for common features like camera, location, notifications
  3. Development Tools: CLI, Dev Server, Metro bundler integration, and native build orchestration

Expo Go vs Development Builds

Expo offers two ways to develop your app:

Expo Go

A pre-built app with common Expo SDK modules built-in. Perfect for learning and prototyping. Pros:
  • No native build required
  • Instant preview via QR code
  • Fastest way to get started
Limitations:
  • Limited to included SDK modules
  • Cannot add custom native code
  • No third-party native libraries

Development Builds

Custom builds of your app with your exact dependencies. Pros:
  • Include any native library
  • Custom native code
  • Full control over capabilities
Use when:
  • Adding custom native modules
  • Using libraries not in Expo Go
  • Building for production

Getting Started

Quick Start

Create your first Expo app in 5 minutes

Installation

Complete installation and setup guide

Core Concepts

Understand how Expo works under the hood

Tutorial

Build your first app step-by-step

Community & Support

Join thousands of developers building with Expo:
  • Discord: Chat with the community at chat.expo.dev
  • GitHub: Contribute to the expo/expo repository
  • Forums: Ask questions and share knowledge
  • Documentation: Comprehensive guides in this documentation site
Expo is MIT licensed and maintained by Expo (the company) with contributions from developers worldwide.

Next Steps

Ready to start building? Here’s what to do next:
1

Try the Quickstart

Follow our 5-minute quickstart to create and run your first app
2

Learn Core Concepts

Understand Expo’s architecture and how everything fits together
3

Build a Real App

Follow the step-by-step tutorial to build a complete application
4

Explore the SDK

Browse the API Reference to discover what’s possible