Introduction

React Native is an open-source framework created by Facebook, Instagram and the great community of developers. It uses JavaScript and JSX (JavaScript-XML) to create native apps for iOS and Android. With React Native, you can create a full mobile app just as you would in Java or Objective-C.

By using the native layout components, React Native allows you to create compelling UIs that are indistinguishable from a native app (Android or iOS). The code is shared across these two different code bases, but for the layout i-e the design elements like views, styles etc , you use native components of each platform. That is where the JSX markup comes in. JSX is used to create the layout for either iOS or Android, by using the respective native components, thus the name React NATIVE.

Quite popular for a native app development framework, I am going to explore the Pros and Cons of React Native, to create a better understanding of what and where can React Native be used for.

Pros of React Native

  • Time Efficiency

    Design and layout feels a lot more productive if you are quickly able to visualize what you create. For that very purpose, React Native has a great feature called “hot reloading”. It allows the changes made in the code to immediately take effect into iOS and Android app variants. It’s like a live preview!

    This reduces the waiting time for changes to show up to zero and saves further development time as well.

  • Performance

    By using native controls and native modules, React Native improves on performance.

    React Native interacts with the targeted (native) components for iOS or Android and renders code to native APIs directly and independently. In doing so, it uses a separate thread from UI, which results in increases the performance. The key factor here is React using the native APIs. Other options like using a WebView to render code may have other advantages, but compromise the performance.

  • Growing Community

    As I mentioned above, React Native is an open source project.  That means anyone can contribute to the framework. It also means you get to have a more approachable access to great developers and their experience. If you are facing any issues, you have high chances of getting the right kind of help from the community and experts.

  • Ready-made Components Increase Development Speed

    Another great feature on the React Native table is the ‘Ready-to-apply components’. Instead of writing code from scratch, you get to use ready-made components. They are great for achieving simple forms of functionalities. It not only makes the development process simple but also faster.

  • Save Money

    React Native can save big on money as well as time.

    Aside from reducing the app development process (which is another way React reduces on cost), React Native enables JavaScript developers to create apps targeting multiple OS, with only a minimal amount of native code necessary.

    This approach is cheaper and more budget-friendly because you don’t need to hire separate developers or teams for different development targets. One developer codes for two platforms – That is less amount of resources and costs spent on building the same apps with smaller development cycles.

  • Short Team Size

    Building up on my last point, when one developer codes for both iOS and Android, it evidently reduces the team size as well. Apart from this being a great advantage for not needing to learn two different languages and platforms, it adds in great with a smaller team size too.

    Having a single team vs having two different teams, an Android team and an iOS team, beats the later with potential better communication. By choosing React Native, you would, at the very max, need a great JavaScript developer who can write code for both (Android and iOS) platforms.

    Yes, there might be times when apps with more native features will require help from native developers but in most cases, you will have a smaller team and it will be easier to manage.

  • Reliable and Stable Apps

    You needn’t worry about the stability and reliability of Apps built with React Native. It simplifies data binding with such flow that the child elements cannot affect the parent data. If the developer wants to change any object, he/she would have to modify its state and apply updates accordingly – meaning only allowed components will be upgraded. Great companies like Facebook, Instagram, Airbnb, Skype and a lot more are using React Native for their apps! That, in itself, says quite a lot about the quality, stability and reliability of apps created using React Native.

  • Ability to Target Multiple OS with Less Native Code

    The ability to create one app running for multiple OS is just great. No matter the simplicity because you might not get all the features or advanced functionality in apt packages for apps created with React Native, but nonetheless, you will have two applications with the time, effort and resources for creating one.

    I would always add this to my list of Pros of React native.

  • Better than Hybrid Native Experience

    React Native offers a truly native user experience, unlike other hybrid tools that merely provide a native-style wrapper for browser-based apps. Since React native leverages the native components, the final products look and feel very real – as if created with the same native technology. If you are unaware of the technology used to build an app, you will not be able to differentiate between a simple app built with React native or an Android programming language or iOS.

    Cons of React Native

  • Ready-made Components Small Collection

    Ready-made components are React Native’s one of the most prominent pros. It’s a shame there are only a few. Although, it’s still a new development framework and that the number of ready-made components is expected to increase drastically, but at the moment the collection is quite small.

    That limits developers to creating very basic simple apps.

  • Native Code Requird

Earlier in this article, I mentioned that you might still need to write a minimal amount of native code when developing apps with React Native. This feels like a contradiction, because for someone developing in React Native, avoiding having to code for Android or iOS was probably what they were doing in the first place. This is something you will also need to budget for, especially if your app requires access to device cameras and other onboard hardware. In a rare case, this might out-weigh all React Native pros like a smaller team, time saving, cost reduction.

Performance Lacks as Compared to a Pure Native App

If you are making a simple app, then sure go ahead – you can use the full benefits of React Native.

However, if you require some advanced functionality, then performance might go down the drain in comparison to apps created with platform-specific logic.

  • Component Quality

    I mentioned the small collection of read-made components. That is not a dead end, as there are third-party component libraries that you can choose from. But that would depend on luck, in terms of quality and reliability of that specific 3rd-part library. As they are not created by the official developers, they might contain a lot of bugs and glitches. You spend time correcting those but it would be more productive if you wrote code from scratch, thus, once again defeating the purpose of avoiding platform-specific coding.

  • Steep Learning Curve

    If you are new to the React framework and JavaScript, then learning React Native might be a little hard for the average Joe. Especially in comparison to other Cross-platform development options. The JSX is a JavaScript syntax extension that allows mixing HTML with JavaScript. It doesn’t come that naturally to the average person and has a steep learning curve, which can be frustrating.

  • Security is Low because JavaScript Based Library

As we know, React Native is a JavaScript -based library. If you are using React Native for apps which require type A security, like mobile banking apps or personal finance apps, you will need to pay extra attention to detail because JavaScript is famous for its fragility. You will need to keep a close watch on malicious code snippets that could, very easily harm your app’s core functionality.

Especially if you are using any 3rd-party add-ons.

  • Memory Management

    Again – expanding on the fact that React Native is JavaScript based, It’s not suited for computation intensive apps. The performance and speed is immensely degraded and float computations are handled in an even more inefficient way, in terms of memory usage and management.

Conclusion

In Conclusion, React Native is a great framework for everything simple and fast – like app with lists, lotteries etc, anything more complex than that will, most certainly, require more resources. BUT the rate at which the React community is growing, everything that is holding this framework down feels would change soon. Especially as the component collection grows, it is highly likely that more advanced functionality will be introduced and catered to.

Quite recently, Facebook’s license agreement changed from a BSD Patents License to an MIT License, opening roads to a more wider adoption of React Native. This very factor was, at a point one of the cons of using React Native.