When it comes to mobile development, we often have to make a decision: either develop separate native apps for iOS and Android, or develop a single React Native app. At a first glance, the choice might seem obvious. It’s so tempting to have only 1 team of mobile developers instead of 2. But there are many things to consider, so let’s take a deeper look.
Look and feel
What is better: having 2 native iOS and 2 native Android developers, or having 4 React Native developers?
Based on our experience, building a small React Native app is about 30% faster than building 2 Native apps.
Why only 30%? It should be 2 times faster!
Well, 30% is actually an optimistic number. React Native can even get slower than native development in some cases. It all comes from one sad fact: the conditions are not equal. Native developers have advanced IDEs (XCode and Android Studio), larger communities and better documentation.
React Native adds an additional level of complexity on top of native SDKs (and brings its own bugs), so the apps are harder to write and maintain. Native iOS/Android developers gain instant access to all the latest features, while React Native developers have to wait for a while (and are not guaranteed to get those features at all: React Native’s roadmap is pretty uncertain).
And another factor is that React Native as an SDK does not cover everything native SDKs do: it certainly does make it a lot easier to write a simple todo-list or a Twitter client, but once the project requirements go beyond that, React Native starts lacking features. Native developers have access to a huge variety of third-party frameworks and libraries, while React Native developers have a much more limited choice.
On a product level, you have to agree to Facebook terms and conditions when developing a React Native app.
There are 2 concerns: the first is that the support of React Native project can be stopped any time. Facebook does not guarantee anything. The second concern is of a legal matter: if you initiate a legal lawsuit against Facebook, your React Native license will be instantly terminated. This is definitely a detail worth keeping in mind.
Although React Native has an advantage of sharing a codebase between iOS and Android, it comes with some disatvantages. So how do you make a decision? It all boils down to the following questions:
- Are you planning to develop a small app like a cookbook, or a sophisticated solution like a social network? React Native works great for simple apps, but becomes a problem if you have bigger plans.
- Are you working in finance or healthcare industry? If the app is going to interact with highly sensitive user data, it’s better to go native.
- Are you a startup that is looking for a proof-of-concept app? React Native would be the best choice for you. But be prepared to throw it all away if you decide to go native after the POC: React Native and native apps are completely different on a codebase level, and the app cannot be simply migrated from one technology to another.
Here at Bekitzur we have huge expertise with both technologies, and this choice is really just a matter of choosing what’s best for you.