---
modificationDate: February 26, 2026
title: Start developing
description: Make your first change to an Expo project and see it live on your device.
---

<AgentInstructions>

## Submitting Feedback

If this page contains errors, outdated information, or gaps that blocked you from completing a task, report it so the docs can be improved:

curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/get-started/start-developing/","feedback":"🤖 Agent feedback: <specific, actionable description>"}'

Only submit when you have something specific and actionable to report.

</AgentInstructions>

# Start developing

Make your first change to an Expo project and see it live on your device.

> For the complete documentation index, see [llms.txt](/llms.txt). Use this file to discover all available pages.

## Start a development server

To start the development server, run the following command:

```sh
npx expo start
```

## Open the app on your device

After running the command above, you will see a QR code in your terminal. Scan this QR code to open the app on your device.

If you're using an Android Emulator or iOS Simulator, you can press a or i respectively to open the app.

Having problems?

Make sure you are on the same Wi-Fi network on your computer and your device.

If it still doesn't work, it may be due to the router configuration — this is common for public networks. You can work around this by choosing the **Tunnel** connection type when starting the development server, then scanning the QR code again.

```sh
npx expo start --tunnel
```

> Using the **Tunnel** connection type will make the app reloads considerably slower than on **LAN** or **Local**, so it's best to avoid tunnel when possible. You may want to install and use an emulator or simulator to speed up development if **Tunnel** is required to access your machine from another device on your network.

## Make your first change

Open the **src/app/index.tsx** file in your code editor and make a change.

```diff
- Welcome to Expo
+ Hello World!
```

Changes not showing up on your device?

Expo Go is configured by default to automatically reload the app whenever a file is changed, but let's make sure to go over the steps to enable it in case somehow things aren't working.

-   Make sure you have the [development mode enabled in Expo CLI](/workflow/development-mode#development-mode).
    
-   Close the Expo app and reopen it.
    
-   Once the app is open again, shake your device to reveal the developer menu. Press Cmd ⌘ + D.
    
-   If you see **Fast Refresh** enabled, toggle it. If you see **Disable Fast Refresh**, dismiss the developer menu. Now try making another change.
    

## File structure

Below, you can get familiar with the default project's file structure:

Files

### app

Contains the app's navigation, which is file-based. The file structure of the **src/app** directory determines the app's navigation.

The app has two routes defined by two files: **src/app/index.tsx** and **src/app/explore.tsx**. The layout file in **src/app/_layout.tsx** sets up the tab navigator using the platform-specific **AppTabs** component.

## Features

The default project template has the following features:

Default project

### File-based routing

The app has two screens: **src/app/index.tsx** and **src/app/explore.tsx**. The layout file in **src/app/_layout.tsx** sets up navigation using a platform-specific **AppTabs** component that uses native tabs on Android and iOS, and Expo Router UI tabs on web.
