Encodera

Thanks for reading!

Donate to the site — we work hard for you.

Contents

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 writeOn iOS you getOn Android you getSimilar on the web to
ViewUIViewandroid.view.Viewdiv
TextUITextViewTextViewp, span
ImageUIImageViewImageViewimg
TextInputUITextFieldEditTextinput

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@latest command 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.

Thanks for reading!

Donate to the site — we work hard for you.