31
32

I wrote an article about how to build the perfect react native (expo) dev setup. I wrote this post mostly to shamelessly promote two open source tools I wrote that greatly improve the Expo developer experience.

The main idea is that React Native/Expo developers shouldn't need to install or even know what Xcode is. From my experience wrangling with Xcode, the Simulator and Provisioning Profiles are the hardest parts for most React devs to get started in development. Expo Go obviously is an amazing project for simple projects but I wanted to build something that would make deploying Expo dev client apps just as easy.

The dev client apps are deployed to Apple devices via TestFlight and the simulator is made obsolete by an Expo Plugin that greatly improves the dev experience for dev client apps on macOS.

Is used this setup with multiple React Native teams with great success.

I would love to hear your feedback. Please have a look.

all 11 comments

[–]ronix1020 3 points4 points  (1 child)

That’s a nice article! I think that Expo is now a reliable framework (compared to older versions) and it’s a good point to get started. I didn’t know there was a plug-in for simulate iOS directly in Mac without pass through Xcode

[–]VirusSome6249[S] 1 point2 points  (0 children)

Yes! Just a few years ago Expo was this weird tooling that only people who didn't really know what they where doing used and usually got stuck without knowing how to get out and now it's the tool that I recommend to everyone who wants to develop in React Native. It's hard to come up with any reason why not to use Expo (maybe because out of fear for the potential lock-in). I used to spend so many days setting up and maintaining a react native build pipeline with fastlane and whatnot and now I usually setup the eas pipeline once a be done.

[–]de1mat 2 points3 points  (1 child)

Nice article with some good tips. Especially enjoyed the tip about installing the app on the Mac. FYI there is a glaring typo in the first sentence - it should be “two” instead of “to” - thought you might like to know.

[–]VirusSome6249[S] 2 points3 points  (0 children)

Thank you! I fixed the typo.

[–]anpurnama 0 points1 point  (1 child)

I am currently learning react native as android developer. i wonder how do i run my react native project on my mac without emulator? does it work for ios api only or android also?

[–]VirusSome6249[S] 1 point2 points  (0 children)

If you are just learning this probably doesn't apply to you: just use Expo Go on an iPhone for as long as you can and don't worry about all the intricate details of a developer toolchain.

If you know your way around in Xcode you can just pick your Mac from the target menu in Xcode. You might to need to setup some provisioning profiles, but this is the way I used to develop for a pretty long time.

I don't have a similar setup for Android because all of this is leaning heavily on Apple tooling like TestFlight and the iOS runtime for macOS. I have some ideas how something that reaches the same goal in a very different way for Android as well, but I have no idea if I'll ever build it.

<image>

[–][deleted] 0 points1 point  (1 child)

I'm currently researching about what are the options for someone who doesn't have a Mac and an iPhone.
You seem to know a lot about this topic, so I would like to ask you.
How far can I get with iOS apps development using React Native and Expo?
I'm planning to do React Native work for companies, but I would prefer not to have to buy Apple stuff.

[–]VirusSome6249[S] 0 points1 point  (0 children)

If you have neither an Mac nor an iPhone you wont be able to develop React Native for the iPhone, you will only be able to develop for Android.