Back to Tutorials

How to Set Up an Expo App for iOS, Android & Web

Create a current Expo SDK 57 project, start the development server, and run the same React Native app on iOS, Android, and web without installing a global Expo CLI.

Updated July 29, 2026 12 min read Paddy B
React Native Expo iOS Android Web Beginner

Expo SDK 57 quick start

If Node.js 22.13 or newer is already installed, these commands create a current Expo app and start its development server:

npx create-expo-app@latest MyApp --template default@sdk-57
cd MyApp
npx expo start

The SDK template is explicit because Expo's documentation recommends selecting default@sdk-57 during the SDK 57 transition. The project CLI runs through npx expo; a global @expo/cli installation is not required.

What Expo creates

An Expo app is a React Native app. The default template includes TypeScript and Expo Router, and it can target Android, iOS, and web from one project.

Prerequisites and development tools

  1. Install Node.js

    Expo SDK 57 requires Node.js 22.13.x or newer. Use the current Node.js 22 LTS release and keep the same version in local development and CI.

    # Check if Node.js is installed
    node --version
    npm --version

    If you don't have Node.js installed, visit nodejs.org and download the LTS version.

  2. Use the project Expo CLI

    The Expo CLI is included through the project's expo package. Run it with npx so the CLI version stays aligned with the app:

    npx expo --version

    Avoid old tutorials that tell you to install expo-cli or @expo/cli globally.

  3. Install Required Tools

    Install Xcode on macOS for the iOS Simulator and native iOS builds. Install Android Studio for the Android SDK, emulator, and native Android tooling. Web development needs only your browser and the packages installed by Create Expo App.

Creating Your First Project

  1. Create a New Expo Project

    Create a project from Expo's current SDK 57 default template:

    npx create-expo-app@latest MyFirstApp --template default@sdk-57

    The default template includes TypeScript and Expo Router. Use --template blank-typescript only when you intentionally want a minimal project without the default navigation structure.

  2. Navigate to Your Project

    cd MyFirstApp
  3. Start the Development Server

    npx expo start

    This starts Metro and prints the keyboard shortcuts and QR code used by the available development targets.

Running on Different Platforms

iOS (macOS only)

  1. Install Xcode

    Install a version of Xcode supported by your Expo SDK and macOS release. Expo SDK 57 documents Xcode 26.4 or newer.

  2. Install iOS Simulator

    Open Xcode Settings, choose Platforms, and install an iOS Simulator runtime.

  3. Run on iOS Simulator

    With Metro running, press i. To compile and install the native project locally, run npx expo run:ios.

Android

  1. Install Android Studio

    Install Android Studio, the Android SDK, and an emulator image for a repeatable local Android development environment.

  2. Choose Expo Go or a development build

    Expo Go is useful for learning and quick tests when it supports your SDK and libraries. A development build is the better default for production apps because it includes your own native dependencies. Create one locally with npx expo run:android or through EAS Build.

  3. Run on Android Emulator (with Android Studio)

    Start an emulator, then press a in the Metro terminal. Use npx expo run:android when you need to compile the native Android app.

Web

  1. Run on Web

    Press w in the terminal or click "Run in web browser" in the Expo DevTools.

    This will open your app in a web browser using the Expo web runtime.

Understanding the Project Structure

The current default template uses Expo Router, so screens live in the app directory:

MyFirstApp/
├── app/
│ ├── _layout.tsx # Root navigation layout
│ └── index.tsx # First screen
├── assets/ # Images, fonts, and icons
├── app.json # Expo app configuration
├── package.json # Dependencies and scripts
└── tsconfig.json # TypeScript configuration

Edit app/index.tsx to change the first screen. The app/_layout.tsx file configures the root navigator, while app.json contains app identity, platform settings, icons, and config plugins.

Support tutorials