Build a Cross-Platform Mobile App (React Native + Expo)
Track: Mobile
Every junior says they can build a web page. A working mobile app on your phone — that fetches real data, navigates between screens, and handles the messy states in between — is rarer and more memorable. It’s also the fastest way to prove you can ship to a platform, not just a browser tab.
What you’ll build: a cross-platform mobile app with React Native (Expo) that pulls from a public REST API, shows a list and a detail screen with navigation, stores something locally, and handles loading and error states gracefully. Targeting a native role? The same milestones map cleanly to Android (Kotlin + Jetpack Compose) or iOS (Swift) — the starter notes how.
Mobile interviewers want to see that you understand a screen lifecycle, navigation, and async data — not just UI. An app you can hand them on a phone (or a screen recording) clears that instantly. It maps to the keywords mobile postings list: React Native, Expo, iOS, Android, TypeScript, REST API, navigation, cross-platform — and the patterns transfer to Kotlin/Swift.
Skills & keywords you’ll demonstrate
React Native + Expo (or native Kotlin / Swift on the same plan)
Navigation between a list screen and a detail screen
Fetching a REST API with loading, empty, and error states
Local persistence (favorites, recents, a cache)
Running the app on a real device and packaging a build
Starter repo
Clone github.com/OptimalMatch/resume-project-mobile-app — an Expo entry, two screen stubs, an API client, and a NATIVE.md mapping the milestones to Android/iOS. Build it under your own account, committing per milestone. It pairs well with the FastAPI project — build the API, then the app that consumes it.
Build it in milestones
Run it. Get the Expo app launching on your phone (or a simulator) with a single placeholder screen. Commit.
Navigation. Add a list screen and a detail screen with a navigator between them. Commit.
Fetch data. Pull a public REST API into the list; render each item. Commit.
States. Handle loading spinners, an empty state, and API errors so it never just freezes. Commit.
Persist. Save something locally — favorites or a recent list that survives a restart. Commit.
Polish & ship. Icons, a splash, a README with screenshots or a screen recording, and a build. Commit.
Stretch goals
Offline support — show cached data when there’s no network.
Push notifications, or device features (camera, location).
Rebuild one screen natively (Kotlin/Compose or SwiftUI) to show platform depth.
Put it on your résumé
“Built a cross-platform mobile app in React Native (Expo) consuming a REST API, with navigation, local persistence, and full loading/error handling.”
“Shipped a runnable build to a device and documented it with screenshots; mapped the architecture to native Kotlin/Swift.”
Update your résumé and check it with the free ATS resume score — mobile roles weight exactly these keywords.
Frequently asked questions
Do I need a Mac to build this? No. React Native with Expo runs on Windows, Mac, or Linux, and you test on your own phone with the Expo Go app — no Mac or paid developer account required to build the project. A Mac is only needed if you later compile a native iOS build.
Should I use React Native or go native (Kotlin/Swift)? For a first portfolio piece, React Native + Expo is the fastest path to a runnable app on both platforms. If you are targeting native Android or iOS roles specifically, the starter maps the same milestones to Kotlin + Jetpack Compose or Swift so the project still fits.