Our adventure with React Native started when one of our potential clients came to us and stated that they needed an app, one which should be ready in three months, for CES in Las Vegas. As the scope of this project was still changing, even if we’d managed to do it using native app development, the cost of the change would’ve been too big.

Creating an app for separate platforms was not an option in this short period of time. We decided that when compared to other options React Native looked the most promising. Due to our use of React Native during the development stage of the project, we were able to efficiently tackle all of the changes in scope.

React Native provided us with more time and more possibilities.

What is React Native?

In short, React Native is a cross platform framework used to create native applications using technologies already well known to web developers, with significantly improved performance of implementation, i.e. faster implementation for native platforms!

Having all platforms and native controls in one place for both iOS and Android is a beautiful notion. The two platforms are indistinguishable by the underlying framework! It means that you can use JavaScript and React to create native apps.

The ease of organizing and separating the code, running in JavaScript (JS) runtime, and the fact that React Native is not a WebView based app makes everything so much easier.

What are some of the advantages of using React Native?

Faster development

It takes two to three times less to develop your app in React Native but App Store and Google Play listing management remains the same. React Native only makes a positive difference during the development stage, the rest of the lifecycle is the same. You need to generate and configure your app if you want your fresh new application to be published in Google Play and the App Store. Using Android Studio software and Apple’s XCode, your development team will be able to make this happen but it may take more effort from your developers as the process requires lots of configuration.

There’s more space for new features to be developed for your apps thanks to a shared codebase. It saves time and is much better value for money.

Faster and automated updates

Once your app is published in the App Store and Google Play you’ll most likely want to improve the app with new features for your users.

This requires going through the whole build process again and uploading updated versions of your apps to the app stores, which can take up a while before being approved by Apple or Google. Then the updated apps need to be manually installed by your users.

Although the following is not allowed on iOS/App Store, you can use Google Play to update your app more simply, a user opens your app and an update be automatically available.

There’s no need to manually update your app through the app store. How? The new update will be downloaded asynchronously in React Native whilst an app is in use. This is more efficient and makes developing and publishing updates for your apps less complicated.

One kind of developer to maintain your apps

Most frontend developers are skilled in JavaScript and therefore able to work on the apps with React Native, they can also maintain your website. One of the main benefits of using React Native to develop your apps is that you don’t have to hire mobile developers: you just need a JavaScript developer to build and maintain everything. This is cost effective for your business.

It’s still a good idea to hire mobile developers because you will undoubtedly need to manage builds and store management, you may also need to add custom native SDKs at some point in future.

iOS or Android specific programming languages are not required to use React Native

You can still use native code when you need to and it’s even possible to build sections of your app using native code and sections of it using React Native.

Build your MVP quickly and spend less money

Cheaper development means that you can test your business model by taking more risks throughout the creation of your app. React Native tends to reduce the amount of bugs by having a single code base It still means that you to test both platforms.

The single code base also speeds up some testing. The amount of time spent testing on real devices remains the same.

It’s used by industry giants such as Facebook, AirBnB, Tesla, Skype and Instagram, to name a few. Nice! You can still add native components where necessary too, such as when you need to implement third party SDKs or use platform specific features.

React Native’s flat learning curve means that new developers can become more productive, much faster! It’s also supported by Facebook, who heavily invest in the platform and use it in their own production apps (Instagram etc.).

Disadvantages

There are less third party libraries available so in order to use other third party libraries (those for a native platform) they need to be written in native modules.

Design complications, if your vision is too ‘out there’ in terms of design, it might be difficult (not impossible) to implement it. It’s quite important that both design and development teams understand this point as React Native reduces the time and resources required to manage separate teams.

It’s still being heavily developed so it means that you might need to catch up with the latest, often breaking changes.

React Native can be challenging to integrate with an existing app.

Integrating React Native with an existing app is possible but it can be a slow process. Although a clever way to eventually speed up your development process, it will mean more complexities for your development team.

It may also result in unexpected crashes and errors which will require further modification. The project architecture of your app will need to match a React Native structure, the native code will need to be updated, particularly if your app exists on Android. Android apps can result in issues with dependencies when attempting to integrate with React Native.

This is also where platform specific mobile developers come in, as they will be able to use their existing knowledge of the code used by the app you want to integrate to make informed decisions and create any new resources.

Summary

Before you decide to take your project down the React Native route, remember to take everything into consideration first. If your app is simple, you shouldn’t run into too many issues. For some apps, the use of React Native is beneficial. It all depends on your (or your teams) proficiency with native apps in general, time limits, and the scope of your project etc.

Primarily, we use JavaScript for frontend development and we sometimes use it for backend development too (NodeJS). This enables us to use any developer, on any side of the project! It combines business logic with native app and web development.

Based on the advantages and disadvantages mentioned above, it’s likely that you won’t be disappointed once you get started with it! One thing is certain, React Native definitely reduces development time significantly, which gives you extra time to scale for multiple platforms and start marketing prior to the launch of your app!

Although there are some cases where it’s better to use this kind of technology rather than native apps. It is only one of several solutions available to you for the purpose of developing your app.

We’d Love to Hear from You

If you’re interested in hiring an epic development team, drop us an email (hello@appnroll.com) so that we can schedule a call.

Is there anything you’d like to add, have we missed anything? Have you ever tried to learn React Native, maybe you already use it? What do you think of hybrid apps?

Please feel free to share your experiences with us in the comments below or via social media (send us some photos or videos too), you can find us on Facebook, Twitter, Instagram, Behance and Pinterest, let’s connect!

To learn more about App’n’roll, take a look at out our website and our other posts. If you enjoyed reading this article, please share and recommend it!

All images used are CC0 1.0 Universal (CC0 1.0).