What React Native and Expo are
React Native is a library for building mobile apps for iOS and Android with React. You write the same components, hooks and JSX as in the React web course, but the screen shows real system UI elements of the phone instead of HTML elements.
Not a web page inside an app
There are two ways to build mobile apps with JavaScript. The first is to show a website inside an embedded browser (a web view). The second is the React Native way: JavaScript code describes the interface, and React Native creates native platform components for it.
| You write | On iOS you get | On Android you get | Similar on the web to |
|---|---|---|---|
View | UIView | android.view.View | div |
Text | UITextView | TextView | p, span |
Image | UIImageView | ImageView | img |
TextInput | UITextField | EditText | input |
That is why scrolling, the keyboard and buttons behave the way phone users expect. There is no HTML or CSS: instead of div you use View, and instead of CSS files, style objects.
What Expo is
Expo is a set of tools on top of React Native. The React Native documentation officially recommends it for new projects. It gives you:
- the
npx create-expo-app@latestcommand to create a project; - the Expo Go app to open your project on a phone via a QR code, without Xcode or Android Studio;
- Expo Router, file-based navigation between screens;
- ready-made modules for the camera, location, storage and other device features;
- the EAS service to build the app and publish it to the stores.
Versions
This course targets Expo SDK 54 and newer, which means React Native 0.81 and React 19. An SDK (software development kit) is a matched set of versions of React Native and all Expo modules; it is released several times a year. The examples are written in TypeScript in .tsx files, like the standard Expo template, but types are kept to a minimum.
What you already know
The course builds on the React course: components, props, useState, useEffect, lists with keys. They are not explained again; the lessons cover only what is different on a phone.
Two practice apps
First you build a to-do list: adding tasks, marking them done, saving them on the device. Then a blog reader app: a list of posts and a post screen with data from https://jsonplaceholder.typicode.com, tabs and a profile screen.
Common mistake
Expecting HTML tags and CSS to work in React Native. Code like <div className="card"> causes an error: there is no div tag, and React Native components have no className prop. Use View, Text and the style prop, covered in the next lessons.