Here are the key reasons we now often recommend React Native.
Development
Why Choose React Native?
by Ben Pearson
24 Oct 2017 · 10 min read
Why Choose React Native?
More recently, over the last 12 months we’ve been using React Native extensively on one project and we are now finding more and more projects where we are recommending it as a solution. There are many reasons why React Native is a technology we recommend, and as the technology grows in its adoption rate we find these reasons get stronger every day.
#1 Rapid development, fast speed to market
The development tools created for React Native mean that developers can instantly see their changes on their device as they code. In traditional native development this process can take minutes. By using React Native developers are more efficient, saving costs in the development process.
#2 One codebase, multiple platforms
React Native is one codebase that you can deploy to iOS and Android. Compared to past technologies that tried to achieve this using inferior non-native interfaces, React Native results in native code that feels and behaves to the expected quality of native, which is why it's becoming so widely adopted.
#3 Open source, built out of Facebook
React native was built by the team at Facebook. They made it open source and now it has a large and growing community of developers, plugins and tooling. More and more companies are using React Native including Airbnb, Tesla, UberEats, Facebook and Instagram.
#4 Deploy updates instantly, anytime
Using Microsoft CodePush, most updates to the application can be deployed instantly to all users via the web without going through the longer, non guaranteed Apple approval process. The other benefit is all apps can be updated without the user needing to go to the App Store to update the version - which as we all experience we rarely do that. Rapidly having users on the latest version is one of the great benefits of React Native.
#5 Share coded logic between web and mobile
By using React Native for mobile when already using React for web, there is the ability to share some of the core business logic JavaScript files between the two codebases. This makes code more reusable, only have to be updated in one place and then propagated to all platforms and reduces chance of bugs between codebases.
These are all universally applicable reasons why React Native is often a great choice, but there are many reasons that depend on your specific context that might make it an even greater choice.
Existing Web Development Team
If you have an existing web development team, particularly if they are already using React or similar JavaScript framework, and you are in a context where you’ve never had an app before or your existing app is beyond saving, then starting fresh with React Native is a strong decision as it allows you to unify the web and mobile development teams and have them both be able to interchangeably code across the platforms. In the past these two teams have often been separate, even between iOS and Android teams being separate, which causes a lot of fragmented knowledge, duplicated code, and varied release cycles. By choosing React Native you benefit from faster time to market, can prove the success of the app and maximise the capacity of your team. New features can be delivered across all platforms and code can be reused which reduces time and makes bugs easier to fix as one fix can spread across all platforms.
Degree of Complexity
The other context which is important to understand in making the choice is how custom the design of the app needs to be and also what the complexity the integration with native sensors required is. If you look across Facebook, Instagram, Airbnb, etc they use a fairly similar consistent UI style that is aligned with both Apple and Google recommended design guides. They also don’t require deep integration with complex hardware sensors, they usually use the more frequent location, camera and touch authentication sensors. This is where building your new app with React Native really shines as you can quickly get up and running with the standard styles and basic sensors as code wrappers have been created around these common use cases. That’s not to say that deeper, more complex design and sensor usage isn’t possible with React Native, it definitely is, it just requires coding some code wrappers using the native Swift and Java to access them - when building the Lighthouse app, we created native code wrappers for bluetooth beacon integration which works very well - the development just takes slightly longer and requires those two code wrapper implementations to be maintained.
What we are seeing more and more is companies are adopting React Native, particularly for their new apps given the reasons above. There are some contexts where it might not be time to dive head first into React Native.
Understanding your context
If you already have an existing established native mobile app development team and have invested in an app that is performing well in the app store then you’d likely want to be careful of transitioning to React Native in that situation. If you are finding that delivery of features is becoming slow, bugs are appearing on both platforms or even if you have an idea for a new concept that would be hard to fit into the current app, then we’d recommend starting an exploration into React Native. Firstly, exploring the technology with proof of concepts and seeing whether the speed it can give is realised. Our history of native app development has definitely helped us with the React Native apps we build, so existing native teams are particularly great at solving the complex mobile tasks and building those code wrappers for complex integrations. You can even experiment with React Native within your existing native app by building a new feature or two and seeing how the team finds it.
Companies are finding success
One great story we’ve been following is Oscar Health Insurance who had an equal mix of Objective C, Swift and React Native and they decided that investing fully into React Native was going to give them the best outcome. They now have an app that follows the standard design structure that Apple and Google recommend so it feels familiar, yet they still inject their branding and design aesthetic through the animations and illustrations. They are also now able to focus as a team on building features once, rather than repeating them across platforms.
It’s an exciting time for mobile development as writing in native languages is no longer the only way to achieve a high quality result, React Native is now able to deliver the quality and even further speed benefits that companies are looking for.
At Inlight we love rapidly building prototypes and projects using React Native and seeing clients surprised at how quickly they see their app come to life. We get a real kick out of it!