React Native has really become a hot topic in the last few months. As a product owner or technical director, you’re probably wondering why it’s getting so popular. What kind of problems with mobile app development does it solve? Let’s assume you’ve got a greenfield project you need to ship in couple of months. Why is React Native worth checking out before you decide to go fully native, or opt for the web-view solution? Let’s find out.
The concept of a multi-platform app isn’t something completely new. We’ve already had the opportunity to observe the rise of wonderful ideas behind Ionic, Cordova and Xamarin. Even though those frameworks have brought a lot to the mobile market, none of them could dominate over native apps. When I first saw the concept of React Native at a React.js conference last year, I knew I’d have to put my hands on it at some point. That was mostly because React Native seemed to solve two major inconveniences I experienced during Ionic app development: performance and native feel. Indeed, the new tool seemed to be better at those. Later, I found there’s more amazingness. One of the cool things was the amount of code you could share between Android, iOS and web platforms.
So why is it so cool these days?
You could say the main advantage of React Native is that it allows you to ship to all three platforms much faster than with the traditional approach. That’s true, but you can’t assume development time could be simply reduced by a factor of three. This is mentioned in the official documentation. That kind of assumption can be quite dangerous.
Creating an app using this toolset allows the developer to use the same code in different environments. For example, some containers and state management, like a number of reducers and action creators. However, the feeling the user might have using iOS would be quite different than the ones s/he has while using a laptop. Thus, you should consider the time to improve the feeling of the app on specific platforms. You might be questioning the coolness of React Native right now, as you’ve just read it does not necessarily speed up the date of your app’s big release. Just check out the next paragraph before you decide to close the tab.
A really good aspect of React Native is the familiarity with the tools and concepts experienced by both frontend and Mobile developers. Ionic demanded some knowledge of Angular, requiring Mobile devs to learn a completely new framework. Xamarin required learning a programming language that hasn’t been used on either Android nor iOS natively. React Native seems to be on the edge of both worlds.
Let’s add more beauty to this solution. The toolset you might be familiar with through developing single page web apps with the React/Redux ecosystem has its own place in the React Native world. It’s easy to apply the same state management patterns you might have used on the web. The community around React Native has done a magnificent job of developing and maintaining packages like React Native Router (react-native-router-flux). This makes the problem of navigation easier to deal with. Also, quite a number of presentational components (or even ready-to-use ‘Bootstrap-like’ presentational libraries) are present. All these packages, and the helpfulness of the community, makes the frontend developer more comfortable in working with RN.
What about good old Ionic?
Maintenance of a single codebase vs maintenance of number of them
Back to the initial question
If you’re interested in a different approach towards React Native, take a look at Marcin’s article 😉