Skip to main content

Mobile app development

Twelve weeks building apps with React Native and Expo, running on the student's own phone from week two.

Grades
10–12
Ages
15–18
Length
12weeks
Sessions a week
2
Each session
90min
Class size
15max

What this course is

The appeal of this course is immediate and we lean on it: a student sees their own code running on their own phone in the second session, and holds it up to show the class. Very little else in the curriculum produces that reaction.

We use React Native with Expo, which means one codebase runs on both Android and iOS and neither a Mac nor a paid developer account is needed to see the app running on a real device. Students who have taken web development with React will recognise most of the model; students who have not will pick it up here, though the pace assumes some prior programming.

The course covers what makes a mobile app different rather than treating a phone as a small browser: touch instead of hover, navigation stacks, permissions, local storage, offline behaviour, and designing for a thumb.

We are clear about the limit of the course: students do not publish to the App Store or Google Play. Both require paid developer accounts and an adult account holder, and that is outside what a class can arrange. Apps are shared through Expo, which is enough to install and use them on a real phone.

Week by week

Every week ends with something that did not exist at the start of it. That is what is listed under “ends with”.

  1. Week 01

    How a mobile app differs

    Native versus web, what React Native actually does, and setting up the toolchain and Expo Go on the student's phone.

    Ends with: A working environment and a phone paired to the project.

  2. Week 02

    First app on a real phone

    Core components, styling with StyleSheet, and flexbox on a small screen.

    Ends with: A profile screen the student can open on their own phone.

  3. Week 03

    Touch and interaction

    Pressables, touch targets, feedback on tap, and designing for a thumb rather than a cursor.

    Ends with: An interactive screen that responds correctly to touch.

  4. Week 04

    State and forms on mobile

    useState, text inputs, keyboard handling, and the layout problems the keyboard causes.

    Ends with: A working form that behaves with the keyboard open.

  5. Week 05

    Lists and performance

    FlatList, keys, and why rendering two thousand rows the naive way makes a phone stutter.

    Ends with: A smooth scrolling list over a large dataset.

  6. Week 06

    Navigation

    Stack and tab navigation, passing parameters between screens, and the back button as a real constraint.

    Ends with: A three-screen app with tabs and a detail view.

  7. Week 07

    Storing data on the device

    AsyncStorage, persisting state between launches, and what should never be stored on a device.

    Ends with: An app that remembers the user's data after being closed.

  8. Week 08

    Device features and permissions

    Camera and location, asking for permission properly, and handling a refusal without breaking.

    Ends with: A feature using the camera or location, with permission handled.

  9. Week 09

    Talking to a server

    Fetching remote data, loading and error states, and what an app should do with no connection.

    Ends with: A screen backed by a live API that survives being offline.

  10. Week 10

    Project planning

    Students scope their own app, sketch the screens, and get both reviewed before building.

    Ends with: An approved app specification and screen sketches.

  11. Week 11

    Building and testing on device

    Supervised build time, testing on more than one phone size, and fixing what a real device exposes.

    Ends with: A working app tested on at least two devices.

  12. Week 12

    Sharing and presenting

    Publishing the project through Expo so family can install it, writing a README, and presenting to the group.

    Ends with: A shareable app build and a documented repository.

What they will be able to do

  • Build and run a React Native app on a physical phone
  • Handle navigation, local storage, permissions and offline states
  • Design an interface for touch rather than for a mouse
  • Share a working build with somebody who is not in the class

What they build

  • A styled profile screen
  • A multi-screen app with tab and stack navigation
  • A feature using the camera or location with proper permissions
  • A complete app of the student's own design, shared through Expo

Questions about this course