QUICK NOTE: My main bud Jamon Holmgren did a 2020 version of this post! Check it out, too! https://shift.infinite.red/react-native-faq-2020-c2374220c944

Hello, Player 1! I can see you’re eager for the promised land of React Native, and all the cross-platform promises that come with it. Your pupils dilate as you research the success stories and ease of JavaScript on mobile, but still, you hesitate. That is understandable because you’ve had this promise before. Questions float ever so closely on your peripheral and taunt your ideal product vision. “Can I depend on this technology?” you ask. “Will my team be able to ship?” you query. “How ‘Native’ can this be?” you implore.

Fear not, Player 1! Your travels will not be in solitude. The wisdom of the Ancient Ones… those who have been down this path for hundreds and hundreds of … days… will guide you.

Choose your quandaries!

Business Questions

Technical Questions

If you have a question that is not answered here, please add it to the comments, and we’ll update the post!

React Native Business Questions

These questions are focused towards those that small owners, project managers, and corporations might ask before trying React Native.

Does React Native save money?

How much code-reuse do I get with React Native?

What about alternatives to React Native, like Flutter?

What product/company is a good fit for React Native?

Q: Does React Native save money?

Answer: As a company who used to ship one app for iOS and one for Android, we knew all too well how little code gets reused. If you’re looking to ship for iOS AND Android, the answer is a resounding yes. If you’re planning on shipping an app for only one platform, then the answer depends on your existing employees. Are they already trained in native? It’s a rare exception that React Native would cost more, but I’d be lying if I said it is a complete panacea. Reach out to me if you’re looking to get this answer for your specific company!

Q: How much code-reuse is there with React-Native?

Answer: When we started there was around 75 to 80% reuse and recently that number has bumped up to about 90% code-reuse! The bump comes from more and more iOS/Android 3rd party libraries that have solutions for edge-cases. This is a benefit of a community-driven project. Interestingly enough, we’re seeing more and more re-usability between React for web and React Native. With proposed solutions like React Native Web and React Native DOM, the gap keeps shrinking.

Q: What about alternatives to React Native, like Flutter?

Answer: Lots of languages have been promising cross-platform abilities. We’ve checked quite a few of them out, and while they “technically” fit the requirement of cross-platform, it’s usually more of a demo than an iron-clad business solution. React Native is the first framework to deliver, and even then it took plenty of versions to become an optimal solution. With open source and a community backing, it’s a powerful and safe solution.

Flutter seems promising, but it lives in the shadow of Google’s whim and requires 100% adoption of Dart and the Google way. There’s no assurance that if Google drops Flutter (as they do many things) that an application can continue.

Q: What product/company is a good fit for React Native?

Answer: If you have a web team that knows JavaScript and you’re looking to do a fresh app, you’re a good fit for React Native. If you have a web team AND a small mobile team, all ready to do a fresh app, you’re an even better fit! Native dev mixed with React Native is pure gold.

If you ever get stuck, we at Infinite.red are one of many companies who provide consulting and team training.

The real gotcha is if you’re adding React Native to an existing app (not a rewrite) AND if your mobile team does NOT want to work with your web team. In those cases with that kind of product, you should really consider an alternative.

React Native Technical Questions

Looking to start learning React Native? You might have these questions:

How “JavaScript” is React Native really?

What will be difficult in React Native?

Can I develop iOS apps from Windows or Linux?

Q: How “JavaScript” is React Native really?

Answer: More JavaScript than JavaScript! Since everything runs through Babel, I can usually access proposed JavaScript functions as soon as they get popular. The React Native API wraps native so well, that if you know React, you should be ready to write React Native with just a small learning curve.

For all the ways JavaScript is great, and all the pitfalls, the code you write is very JavaScript.

Q: What will be difficult in React Native?

Answer: One sneaky gotcha is usually getting your machine ready to run React Native (not the “create react native app” version). Fortunately, we have a blog post by Frank von Hoven which can help you get everything you need (being released next week, link will be here!), and the docs are helpful as well. Just put aside some time to get setup 100%.

Also, it can be difficult to upgrade an existing project from one version of React Native to another. As React Native wraps APIs, iterates, and generally improves, that means breaking things along the way. You can never tell which small update of React Native will rock the boat. Again, put aside a lot of time for upgrades of versions.

Q: Can I develop iOS apps from Windows or Linux?

Answer: You’re locked into a Mac at some point if you want to do an iOS app. Take into account these few notes, though:

Writing an Android app in React Native will probably transfer exceptionally well to iOS. You can probably switch to Mac for the last 10% of your app/testing. There is an exciting way to somewhat work on Linux, watch this video:

Summary

It’s easy to get lost if you don’t have a guide. We’ve been doing React Native for a while now, and we’re not shy when it comes to saying what we do or do not like. One thing that’s clear, is that we’re happy in this community. Feel free to comment or join our community slack if you have more detailed questions. I’d love to answer all your FAQ! 👍