How to pitch React Native to Team Leads

This blog post is part of a series about pitching React Native to different people you may interact with. The other parts can be found here

- Developers 
- Development Team Leads

React Native is a technology that helps you build high-quality native mobile apps with the power of Javascript as a language and React as a library. React itself is just a view layer that can easily be combined to render to various platforms including for example

- Native (you most likely knew, that’s what this post is about)
- Web
- Canvas
- Desktop
- Smart TV

One thing most people don’t understand immediately is that React itself makes it easy for developers to reason about what the application does due to its declarative syntax; This is a big plus when you think about debugging. If you are more interested in the technical part, please check out the first part of this series: How to pitch React Native to Developers.

So when it comes to native development, there are some problems that need to be solved, and when it comes to React Native, there are some prejudices you may have heard of. I will first discuss the latter one, as selling something you think you can’t use is hard.


Prejudices against React Native

As this post is targeted to a management level I won’t cover the benefits compared to Cordova, etc. and other technical aspects in detail; If you are still interested, please read my former blog post.
What I would like to talk about is what may hold you back from using React Native from a management perspective, and this is either you already have iOS / Android applications or that you have no expert for React Native in your team. But you may be unaware that neither of them is to be considered a tough problem.

If you already have an application, it is quite simple to embed a React Native App in it. I won’t cover that in detail, but when you have a short look at the documentation (iOS & Android) you may easily see that it only takes a few steps to do so. You may think this doesn’t scale, but it is in fact what Facebook did with the Groups feature. They built a separate Groups app which only had that feature and had at a certain point of time two different implementations of the same feature. In the current version, they have included parts of the separate app in the Facebook App and thereby show that this integration works so well, that it may be used in production and large scale.

The groups section within the Facebook App

The other problem was that you don’t have someone in your team considering themselves a React Native expert. In my experience, this is only a problem in the beginning and at the end of the project (end means in this case shipping to the app stores). For the rest, all you need are Javascript developers willing to learn the technology and some time (around 1–3 weeks to get to full speed in my experience). So you still have to start and ship the application, what can you do about that? You have several options depending on what is shorter, budget or time. If it’s budget, you may find a starter kit that suits your needs and some time for your developers to get into the ecosystem and to understand some principles in the React Native context. This may be enough to start and for shipping, there are excellent tools like fastlane (and great blogposts about them), so that should work, too. If you need to deliver a certain deadline you might want to look for a React Native expert to help you with the tougher topics; Especially having a solid basis will really speed up the rest of the development. As React Native is quite new, finding people to help you may seem quite difficult, but as it is also very exciting, there are many developers passionate about it. You may find them in the React Native Community Facebook Group or in the Discord chat (there is a special section for hiring).

As we have removed the stepping stones let us dive deeper into what React Native in detail gives to you and what it empowers you to do.


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.


Want to hear more from me? Feel free to subscribe to my newsletter; I send out news roughly once a month.