Why React Native is the right choice for your app in 2020
I’ve been working with React Native since 2016 and saw the improvements of Facebook’s Framework over the last years. I wholeheartedly believe that React Native is the right choice to build an app with in 2020 and for the next years. There is no other framework out there which can save you that much time and resources while giving you state of the art performance and maintainability. Here is why you should also use it in your company:
Learn Once, Write Anywhere
React Native brings the React framework to native app development. With React you can easily develop and maintain web apps based on Javascript. The really cool thing on this combination is that most of your developers only need to know a single software stack: Javascript - React.
With this software stack you can work on the server side (Node.js on AWS Lambda, Google Cloud Functions or any other modern web server), you can build your web client based on React and you can build your apps for iOS and Android based on React Native. This allows you to work with a smaller team and has a lot of advantages:
Your developers can become real experts
Since they don’t have to deal with a lot of different languages, frameworks and patterns, your developers can focus on becoming real experts on the software stack they work with: Javascript - React. You will notice the difference in development speed and quality.
Low entry barrier for new team members
This single software stack approach lowers the entry barrier for new team members a lot! And with that I mean really! a! lot! All projects follow a similar structure, which means new team members don’t have to get used to a lot of different things. In my experience they can start being really productive after only two weeks or even less.
Bigger talent market
IT talents are very limited in our times. So maybe this is the biggest advantage of all. In the old world, you would have to hire some backend devs with C# or Java skills, some iOS devs with Objective C or Swift skills, some Android devs with Java or Kotlin skills and some web frontend devs with knowledge in Angular or a similar framework. Now you got all that covered by Javascript engineers which are much more available on the market than the specific experts.
Devs can change teams
Another huge advantage of this single software stack approach is that your devs can change teams. A backend dev can easily help out the web frontend or app team when you need some more manpower in that team. This is especially valuable when you loose one of your team members due to resignation or illness.
As you can see, this single software stack approach gives companies like ours a huge boost in a lot of areas.
The Framework itself
Even without all this points mentioned above, React and React Native are really cool, stable and time-saving frameworks. You can have a look on Google Trends to see how React got more and more popular during the last 5 years.
This is for a reason. React makes it not only super easy to build an application UI, the component based, declarative approach makes applications also a lot better maintainable. React Native brings all this advantages to the app development world.
The community
React Native has one of the biggest and most active open source communities out there. For nearly every bigger issue you have a well maintained open source project on Github. This means you can save a lot of time by either completely using one of this projects or at least use it as a starting point for your own development (I would definitely recommend the first approach and motivate all of you to contribute to the open source projects instead of developing your needed functionality in private).
The community is also really helpful and friendly. All people I got in touch with did appreciate my feedback, a good discussion and my contribution to their projects.
The performance
React Native does give you native like performance, if you use it the right way. Technically you have a JS thread running, which is a lot slower than native code execution. But React Native creates a so called bridge in the native world and by design moves the most expensive tasks like rendering there. This bridge is used asynchronously, so that the JS thread doesn’t have to wait on the native calculations.
In the most scenarios this is enough, because all business logic your devs write can be executed so fast that you would never realize the difference if it is executed on the JS or the native side. And even if you come to that point that you have very complex calculations (like building really long lists etc.) you could easily use the bridge and do the calculations on the native side.
The language
Javascript can’t be reduced to a browser running script language anymore. There have been so many improvements over the last years, that you can use it even in bigger projects. You can have typed Javascript with TypeScript or Flow, asynchronous tasks with simple async/await syntax and even the support inside the IDEs got a lot better during the last years. It’s not like C# or Java but it’s enough to work with.
And Javascript brings another important advantage above languages like C# or Java. It has a really fast cold start time, which gets more and more relevant, since architectures based on microservices like AWS Lambda and Google Cloud Functions are taking over. Javascript / Node is the perfect choice for this kind of architecture. Nathan Malishev wrote a very interesting comparison on the cold start times, which I would absolutely recommend you to read:
The outlook
React Native gets better from year to year and so do most of the open source projects around it. There are so many really skilled developers working in that environment so the outlook is really great.
Even with competitors like Flutter, which is backed by Google, Ionic or Xamarin, React Native has the best outlook of all.
I think this is the main reason why a lot of successful and large companies like Microsoft, Tesla, Facebook and Uber do heavily rely on React Native. The last company who announced the move towards React Native was Shopify by the end of last year. They made an awesome blog post where they explained their decision: https://engineering.shopify.com/blogs/engineering/react-native-future-mobile-shopify
I would definitely recommend to everyone to have a look at React Native and if you have any questions or any feedback, don’t hesitate to contact me.