Speed is the key

Whenever web development is compared to native development the two points always mentioned are the speed of deployment and development. The first one results from the ability for web developers to directly control the environment the deploy to; Just push the content to your server and you are done, a new version is deployed. Especially Apple makes that harder for you on native, you need to get your App through a review process, which will take some time; Currently, you have to wait 4 days (See the current time at appreviewtimes.com). If this is a normal incremental update of your application, it might not even bother you, but if you have a typo or even a bug which leads to crashes of the application it definitely will. This will hit you even harder in the native app environment than in the web, because reviews in the app store remain visible, even if you app is updated.

React Native solves this problem as it allows direct app updates, for example with tools like Microsofts CodePush. I will not cover how this tool works in detail, but I will give a short overview why this is possible and in which scenarios it is possible with React Native. The way React Native works is that a bridge is bundled within the application, which translates the operations within the Javascript code to ones that actually result in UI changes. That way one may easily exchange the Javascript code and change the apps behavior without submitting another version of the app and without waiting a couple of days. This does not include any changes to assets like fonts or local images as they are part of the app bundle.

The other point is the development speed which is in my opinion faster compared with native development due to the missing compile time for React Native. This will be topic of another part of this series, How to pitch React Native to Designers, so let’s go on to another key point.

No narrow specialists needed

Let’s face it, finding developers is hard, finding specialists is even harder. And as if that weren’t enough, you need to find two or more of them if you want to adopt more than one platform; This is also not easy. With React Native, you could ask any software developer that knows javascript well enough to spend 2–4 weeks to learn the React and React Native basics to get started. This may not be sufficient for the whole project (the beginning and end are the hardest parts), but then again you may easily find an expert willing to help you for a few weeks with that parts in the React Native Community Facebook group or through the jobs channel in the React Native Discord.

Additionally, if you like to, later on, add another platform, you will have the fair chance that React Native itself or some Open Source implementations will have just the right thing for you. If not, you might even consider to write it yourself, like Netflix did for Smart TVs some time ago.

More developers may work on one application at the same time

I don’t know how much this is true (if you find out more on that topic than me, please share your knowledge), but I guess that due to the imperative structure of Objective-C and Java simultaneous development may lead to problems. With React Native, two developers may write their own components which may be used beside each other and composed of each other without any problems. On top of that, one may reuse various parts and the whole structure around it not only in various applications but also in various platforms.

Further reading

If you would like some more insights on the benefits and challenges of growing full-stack developers into cross-stack mobile developers who are responsible for Android and iOS you might want to check the talk by James Ide from the React.js Conf 2016.