For the past few weeks I have been working on a mobile project that I am building with React Native. When I decided to start working on my app I didn't give much thought about the framework to use. React Native seemed like the obvious choice because I had just learned and created a few projects with React. Although I have not run into any problems, I can't help but wonder if it would have been worth it to learn Kotlin or Swift instead.
After doing some research here is what I have learned about the strengths and weaknesses of React Native.
React Native's biggest strength is it's convenience. There are a few reasons why it is much more convenient to use React Native than to create a native app.
Primarily, React Native saves time on coding because it allows you to maintain one codebase for Android and iOS. This is a huge benefit for people looking to publish an app for both the iOS and Android stores.
Moreover, because of it's similarity to React, it's very easy for programmers with experience in React to pick up and learn React Native. On top of that, if your building a mobile app with a web app counterpart, you can share a lot of the code. This is another way to cut down on development time with React Native.
However, many companies choose to build native apps over using React Native because they can get better performance from a native app than an app built using React Native. Yet, this performance gain is not so significant that it always outweighs the convenience gained from using React Native. This is evident by the fact that many popular apps like Instagram, Skype and Facebook use React Native.
Airbnb even testified in their blog post about why they stopped using React Native (https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology-dafd0b43838), that "One of the largest concerns around React Native was its performance. However, in practice, this was rarely a problem. Most of our React Native screens feel as fluid as our native ones."
Overall, I believe React Native is a framework that is definitely worth picking up and using. Although there are some benefits for building native apps with Kotlin or Swift, the development time saved by using React Native is just too good to ignore. From my experience, I've been really impressed by the ease of which I have been able to create my project with the knowledge I carried with me from using React.