Back to Blog

Building an iOS App with React Native and Expo

·~2 min·Programming

Note: this is from 2023, an early take on mobile that I've built on a lot since. Posting the writeup for the archive.

Hey everyone, Romel here. I've been having a lot of fun building an iOS app lately, and a big reason for that is the tooling. React Native with Expo and EAS Build has made the whole thing a breeze, which is not a sentence I expected to ever write about iOS development.

Most of my background is on the web, so the parts of mobile I dreaded were never the UI. It was the native build pipeline. Provisioning profiles, certificates, Xcode getting in a mood, all the ceremony that has nothing to do with the actual app. That's the stuff that used to make me bounce off mobile entirely.

Expo takes most of that off my plate. I write the app in React Native, in the same language and the same mental model I already use every day on the web. A lot of my components, my types, and my logic carry straight over instead of being rebuilt from scratch. For a solo dev, that overlap is everything. I'm not maintaining two completely separate worlds, I'm extending one I already know.

Then EAS Build handles the part I actually dreaded. Instead of fighting native builds locally, I kick off a build in the cloud and it hands me back something I can install and, when it's ready, ship. The first time a real build came back without me having to wrestle Xcode for an afternoon, I was sold.

None of this means mobile is suddenly trivial. There are still platform quirks, still things that behave differently than the web, still the occasional native module that makes you work for it. But the gap between "I have an idea for an app" and "this is running on my phone" has shrunk enough that I'll actually start. That's the whole battle on a side project.

If you've been web-first and curious about mobile, this is the stack I'd point you at. I'll have more on getting a build all the way to TestFlight in a separate writeup. Questions in the meantime? Drop them in the comments or find me on Discord.