Published , Last updated
If you're looking to build powerful cross-platform mobile apps using JavaScript and React, Expo is one of the easiest and fastest ways to get started. Whether you’re targeting Android, iOS, or even the web, Expo simplifies your workflow and gives you an excellent development experience out of the box.
We’ll walk through how to set up and start developing your first app using React Native with Expo.
Expo is an open-source framework built on top of React Native that lets you build apps for Android and iOS with fewer configurations. It provides file-based routing, a library of pre-built native modules, development tools, and more - all aimed at streamlining mobile development.
It’s backed by an active community and available on both GitHub and Discord.
Before creating a new Expo project, make sure you have the following:
Once that’s in place, you’re ready to create your first Expo project.
To create a new app using Expo, run the following command in your terminal:
npx create-expo-app@latest
This sets up a starter project with some example code to help you get familiar with the environment. Once created, you can open the folder in your code editor and start customizing it right away.
Expo supports multiple ways to develop and test your app, whether on a physical device or emulator.
You can preview your app on:
There are two main options for development:
Let’s get the app running!
Go to your project directory:
cd <project-directory>
Then:
npx expo start
Or:
npm run web
(This will launch a development server and display a QR code.)
Open app on web browser with given url http://localhost:8081
OR:
Scan the QR code shown in terminal with Expo Go app (Android) or the Camera app (iOS)
Navigate to: app/(tabs)/index.tsx
Change this line:
<ThemedText type="title">Welcome!</ThemedText>
to this:
<ThemedText type="title">Hello World!</ThemedText>
The changes should appear instantly in your app!
Not seeing updates? Follow this troubleshooting guide.
Here’s what the default project includes:
app/
— Your Routes & ScreensHandles the app’s navigation based on file structure.
Example screens:
app/(tabs)/index.tsx
app/(tabs)/explore.tsx
app/(tabs)/_layout.tsx
.
assets/
— App AssetsIncludes icons and splash screens:
icon.png
(iOS)adaptive-icon.png
(Android)splash.png
(splash screen)favicon.png
(web)
components/
— Reusable UI ComponentsContains components like ThemedText.tsx
, supporting light and dark themes.
constants/
— Shared ValuesStores color palettes and other shared constants.
hooks/
— Custom HooksExample: useThemeColor()
dynamically adjusts UI to the system theme.
scripts/
— Utility ScriptsIncludes reset-project.js
to quickly reset your app’s structure.
app.json
— App ConfigurationControls app metadata and build behavior.
package.json
— Project MetadataLists all dependencies and scripts.
tsconfig.json
— TypeScript SettingsDefines TypeScript rules for type safety.
@2x
, @3x
images.app/_layout.tsx
.HelloWave.tsx
and ParallaxScrollView.tsx
use the Animated API for rich UI.
Want to start from scratch? Run:
npm run reset-project
This moves the existing app/
folder to app-example/
and creates a fresh structure with a new index.tsx
.
Now that your environment is set up, it's time to start building real features! In upcoming tutorials, we’ll cover how to:
Stay tuned and happy coding!
Expo makes React Native development easier than ever, perfect for beginners and pros alike. With built-in support for multiple platforms, a fast dev server, and great community resources, you’ll be building production-ready apps in no time.