🌙

Moscow (MSK):

Date: Feb. 23, 2026

Time: 01:54:39

🔆

Tokyo (JST):

Date: Feb. 23, 2026

Time: 07:54:39

How to build a mobile app with React Native and Expo

Posted: Dec. 11, 2025

This is an archived post. The information contained in this post will not be updated based on new discoveries.


React Native and Expo offer one of the fastest, most practical ways to build mobile applications for iOS and Android using JavaScript or TypeScript. If you want to ship cross-platform apps without wrestling with native build chains, this stack gets you moving quickly while still leaving room to scale into more advanced workflows.

This guide explains the essentials: what these technologies are, why they matter, and how to set up, build, test, and deploy an application using them.

What React Native Is

React Native is a framework for building native mobile apps using React concepts. You write components with JSX, manage state, and rely on a declarative UI model, but the output renders through native widgets rather than HTML.

Key characteristics:

  • Cross-platform: One codebase for iOS and Android.
  • Native performance: UI components map to native primitives, not WebViews.
  • Extensive ecosystem: Strong community support, third-party libraries, and integrations.

What Expo Adds to the Equation

Expo is a set of tools, services, and libraries built on top of React Native. It abstracts away most of the complex native configuration so you can focus on building and shipping.

What makes Expo useful:

  • Zero native setup: No Xcode or Android Studio required for basic development.
  • Expo Go app: Instantly load your project on physical devices.
  • Managed workflow: Batteries-included approach for common mobile features.
  • OTA updates: Push updates without requiring a full app store submission.
  • Build service: Cloud-based building for iOS and Android binaries.

If you need custom native modules later, Expo also supports an "EAS + prebuild" workflow to incrementally eject into native code.

Prerequisites

Before starting, ensure you have:

  • Node.js (LTS)
  • npm or yarn
  • A device with Expo Go installed (iOS App Store or Google Play)
  • Basic React knowledge

Step 1: Install the Expo CLI

Expo’s CLI manages development, running, bundling, and building your project.

npm install -g expo-cli

Step 2: Create a New Project

Use Expo’s project generator:

expo init my-mobile-app

Select a template (e.g., blank TypeScript or JavaScript). This bootstraps a working React Native app immediately.

Navigate into the project:

cd my-mobile-app

Step 3: Start the Development Server

Run your app locally:

npm start

Expo Dev Tools will open in your browser. Scan the QR code with the Expo Go app to load your project instantly on a physical device.

Step 4: Understand the Project Structure

A typical Expo project includes:

my-mobile-app/
├── App.js             # Root component
├── package.json
├── app.json           # Expo configuration
└── assets/            # Images, fonts, icons

You can work entirely inside App.js or split functionality into modules as your project scales.

Step 5: Create Your First Screen

Example simple component:

import { View, Text, StyleSheet } from 'react-native';

export default function App() {
  return (
    <View style={styles.container}>
      <Text style={styles.header}>Hello, React Native + Expo</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center'
  },
  header: {
    fontSize: 24,
    fontWeight: '600'
  }
});

React Native uses Flexbox for layout, supports StyleSheet objects, and provides built-in components like View, Text, Image, and TouchableOpacity.

Step 6: Add Navigation

Use React Navigation, the industry-standard routing library.

Install:

npm install @react-navigation/native
npm install react-native-screens react-native-safe-area-context

Install stack navigation:

npm install @react-navigation/native-stack

Basic usage:

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

const Stack = createNativeStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Profile" component={ProfileScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

Step 7: Use Expo APIs for Device Features

Expo includes high-level APIs for:

  • Camera
  • Sensors
  • File system
  • Push notifications
  • Location services
  • Image picking

Example: picking an image

npm install expo-image-picker
import * as ImagePicker from 'expo-image-picker';

const pickImage = async () => {
  const result = await ImagePicker.launchImageLibraryAsync();
  if (!result.canceled) {
    console.log(result.assets[0].uri);
  }
};

Step 8: Build the App for Production

Use Expo Application Services (EAS) to generate binaries:

npm install -g eas-cli
eas login
eas build --platform android
eas build --platform ios

Expo builds your app in the cloud and provides downloadable .aab or .ipa files. These are ready for Google Play and App Store submissions.

Step 9: Push Over-the-Air (OTA) Updates

You can deploy updates instantly without waiting for app store approvals:

expo publish

Users receive updates on their next app launch.

When to Use the Bare Workflow

The Expo managed workflow covers most use cases. If you need custom native modules or want full access to platform-specific code, you can switch to a bare workflow:

expo prebuild

This generates iOS and Android folders and gives you the freedom to write or integrate native modules.

React Native and Expo provide a robust, efficient, and scalable foundation for building mobile applications. Expo’s managed workflow accelerates development, simplifies testing, reduces native complexity, and shortens the path to deployment. For teams or solo developers who want to ship mobile products quickly without sacrificing future flexibility, this stack is one of the strongest options available today.


Do you need an app?

Do you need an App for your project? let us create one for you!

© 2025 MochiiFeed