Mobile Apps · MBC-27

Basic React Native with Expo

Basic React Native with Expo is a beginner course in building cross-platform mobile apps with React Native and Expo, from a TypeScript project and navigation with Expo Router to UI design with NativeWind, REST API data and app builds with EAS Build. It suits newcomers to app development, students, web developers and business owners who want to build a prototype app.

Updated
From 4,950 THB / person 5,500 −10% excl. VAT 7% · group rates available
PDFDownload the course outline
  • Duration12 hours · 2 days
  • FormatOnsite / live online
  • Next roundOn request
  • CertificateIncluded

Course overview

React Native lets you write mobile apps in JavaScript or TypeScript and render them as native components on both Android and iOS from one codebase. Expo is the framework React Native recommends for starting new projects, with navigation, libraries for device features and cloud build services, so beginners can build apps without setting up Android Studio or Xcode entirely by themselves.

This new edition is updated for Expo SDK 57 and React Native 0.86, which run on the New Architecture by default. It takes learners from setting up their machine and creating a TypeScript project with create-expo-app to navigation with Expo Router, UI design with NativeWind, core components, lists of data from a REST API, on-device storage and building Android and iOS apps with EAS Build. (2 days, 6 hours per day, 12 hours in total, Beginner level.)

What you’ll gain

  • Install the tools and create a React Native project with Expo and TypeScript
  • Test apps on emulators, simulators and real phones with Expo Go or a development build
  • Build navigation with Expo Router, including stacks, tabs, dynamic routes and protected routes
  • Design UIs with NativeWind and use React Native core components
  • Show lists of data from a REST API and store data on the device
  • Build Android and iOS apps with EAS Build and understand the store submission steps

Who this course is for

  • Newcomers to cross-platform app development with React Native
  • Students and anyone interested in basic app development
  • Web developers who use JavaScript or React and want to build mobile apps
  • Entrepreneurs and business owners who want a prototype app to present an idea

Prerequisites

  • Basic knowledge of HTML and CSS
  • Basic programming in JavaScript or TypeScript
  • Familiarity with REST APIs and JSON
  • Basic understanding of how databases work, such as CRUD operations

Curriculum

Course Details

This course is the 2026 edition of Basic React Native with Expo, updated for Expo SDK 57 and React Native 0.86. It runs for 2 days, 6 hours per day (12 hours in total, 09:00-16:00), as lectures alternating with labs and workshops throughout. Beginner level. Learners set up their machine, create a TypeScript project, build navigation with Expo Router including protected routes, design UIs with NativeWind, use core components, show data from a REST API, store data on the device and build apps with EAS Build. They take home a lab guide and the source code of a prototype app.

Day 1 Getting Started with Expo and Navigation with Expo Router

Section 1: Lab: Setting Up Tools on Mac and Windows

  • Recommended machine specifications for React Native development
  • Install the Node.js LTS release and check versions on the command line
  • Install VS Code and the extensions needed for React Native
  • Install Android Studio for the emulator and Xcode for the iOS Simulator on macOS
  • Lab: check that your machine is ready before starting a project

Section 2: Lab: Creating and Testing Your First Expo App

  • An overview of React Native, Expo and the New Architecture
  • Create a project with npx create-expo-app@latest and explore its structure
  • Run the app on an emulator, a simulator and a real phone through Expo Go
  • Expo Go versus a development build, and when to use each
  • Lab: edit the first screen and see changes with Fast Refresh

Section 3: React and TypeScript Essentials for React Native

  • Components, props and typing data with TypeScript
  • useState for data that changes on screen
  • useEffect for loading data when a screen opens
  • Split components into files and reuse them
  • Lab: a product card component that takes props

Section 4: Lab: File-Based Navigation with Expo Router

  • What Expo Router is, and the app directory
  • Create routes and follow file naming conventions
  • The _layout file, the root layout and the stack navigator
  • Navigate with Link and router.push
  • A not-found screen for routes that do not exist

Section 5: Lab: Tabs, Dynamic Routes and Protected Routes

  • The tab navigator and grouping screens with groups
  • Dynamic routes such as [id], read with useLocalSearchParams
  • Modal screens for short tasks
  • Protected routes with Stack.Protected to separate screens that need a login
  • Lab: a tabbed shop app with product detail screens
Day 2 UI, Data and Building the App

Section 6: Lab: UI Design with NativeWind

  • What NativeWind is, and installing it in an Expo project
  • How styling differs on React Native: units, sizes and platforms
  • Flexbox, spacing, sizing, typography, backgrounds and borders
  • Safe area insets, theme colours and dark mode
  • Lab: lay out the shop app's home screen with NativeWind

Section 7: Lab: React Native Core Components

  • View, Text and Pressable in place of the older Touchable components
  • TextInput, Switch and handling forms
  • Alert and Modal for messages and pop-ups
  • Images with expo-image and icons with @expo/vector-icons
  • Lab: a sign-up form with validation

Section 8: Lab: Lists of Data and REST APIs

  • How ScrollView, FlatList and SectionList differ
  • Fetch JSON from a REST API with fetch and async/await
  • Show loading and error states, and pull to refresh
  • Send create, update and delete requests to the API
  • Lab: a product list from an API with a detail screen

Section 9: Building and Deploying with EAS Build

  • What EAS Build is, and creating an Expo account
  • Install the EAS CLI and set build profiles in eas.json
  • Build an Android app for testing and as an App Bundle
  • Build an iOS app and what you need from an Apple Developer account
  • Build on your own machine, plus an overview of EAS Submit and EAS Update

Section 10: Workshop: A Prototype Shop App

  • Bring together navigation, UI, the product list and the cart
  • Connect data from the sample REST API
  • Keep the cart in AsyncStorage and the token in expo-secure-store, used with protected routes
  • Test on a real phone and fix the issues you find
  • Present your work and ideas for further development

Schedule & training options

For individuals — public rounds

No public rounds are open right now. Join the waiting list and we will contact you first when the next round opens, or ask us on LINE. Or call 02-570-8449 or 088-807-9770

For organisations — in-house / private

  • Tailor the content to your team’s tools and projects
  • Your dates, at your office or live online
  • Quotation with tax ID for procurement
Corporate training quote

Instructors

Frequently asked questions

How do React Native and Expo differ?

React Native is Meta's framework for writing mobile apps in JavaScript or TypeScript that render as native components on Android and iOS. Expo is a framework built on top of React Native and is the option React Native recommends for new projects. It gets projects started quickly, provides ready-made libraries such as camera and notifications, includes navigation through Expo Router and offers EAS services to build and submit apps, without setting up Android Studio or Xcode entirely by yourself.

How do you build navigation with Expo Router?

Expo Router uses file-based routing, so each file in the app directory becomes a screen. Start with a _layout file that defines the navigation style, such as a stack or tabs, then add screen files for the routes you need and use the Link component or router.push to move between them. For dynamic screens, name the file [id] and read the value with useLocalSearchParams. For screens that need a login first, wrap them in Stack.Protected with a guard condition.

How do FlatList and ScrollView differ in React Native?

ScrollView renders all of its children at once, which suits short content such as a form or a detail screen. FlatList renders only the items on screen and those about to scroll into view, so it uses less memory and stays smoother with hundreds or thousands of items. You pass it data, renderItem and keyExtractor. To split a list into sections with headings, use SectionList.

Who is the Basic React Native with Expo course for, and what should I know beforehand?

It suits newcomers to cross-platform app development, students, web developers who want to build mobile apps and business owners who want a prototype app to present an idea. You should know basic HTML and CSS, be able to write basic JavaScript or TypeScript, be familiar with REST APIs and JSON, and understand CRUD operations on a database.

What will I be able to do after the Basic React Native with Expo course?

You will be able to install the tools and create a TypeScript project with Expo, test apps on emulators and real phones, build navigation with Expo Router including stacks, tabs, dynamic routes and protected routes, design screens with NativeWind, use core components such as TextInput, Modal and FlatList, fetch data from a REST API, store data on the device and build Android and iOS apps with EAS Build. Participants who complete the training receive a Certificate of Completion with its own number, which can be verified online.

What computer and software do I need for Basic React Native with Expo?

Both Mac and Windows work. The first part of the course recommends suitable machine specifications, then we install the Node.js LTS release, Visual Studio Code with the required extensions and Android Studio for the emulator together. You can test on an emulator, the iOS Simulator (macOS only) and a real phone through Expo Go. Building with EAS needs an Expo account, and building an iOS app to install on a device or submit to the store needs an Apple Developer account.