NativeScript vs React Native: which one to choose for Native app development in 2021
Tags: javascript, reactnative, nativescript, typescript
Published: 2021-10-10 07:46:19

React Native and NativeScript occupy a special place in the cross-platform development sphere. These frameworks, once created, have changed the multiplatform development paradigm, allowing developers to create both performant and user-friendly applications. Since then, they’ve been gaining fans and contributors from all over the world, facilitating the app's development process and making it easy, cheap, and enjoyable.  

However, despite the common traits and purpose, React Native and Native Script do the job in their way. That’s exactly what this article will be centered about.

Here, we will clash React Native vs Native Script and reveal:

- The essence of the React Native and Native Script; 
- What apps you can create with each framework;
- The difference between them by the several vital performance metrics;
- Pros and Cons of React Native and Native Script;  
- Which framework to choose for your development project. 

## What NativeScript and React Native are

### Native Script 
Native Script is an open-source cross-platform mobile development framework. It was founded in 2015 by Progress Software company which went by the name Telerik at the time. 

Using Native Script, developers can create iOS, Android, and Universal Windows Platform apps with JavaScrips, XML, or CSS. The framework employs a special, JS-based engine for the native rendering of apps’ UIs, which makes the user experience truly native. Additionally, Native Script is compatible with Angular, Vue.js frameworks, and TypeScript. That diversity of languages and tools opens wide creative possibilities for developers.

In terms of architecture, the framework includes JS virtual machine for JavaScript code interpretation, runtimes to call the platform-specific APIs, and the native bridge that transforms all the preceding commands into natively rendering UI. 

### React Native
React Native is a free and open-source framework for developing mobile, web, desktop & other cross-platform applications. The Facebook team released it in 2015, and it has much hype from the start. Its popularity and the fast-growing developer community around the framework were a result of impressive tools set, high performance, and unique features (e.g. hot reload). [At present, Rect Native] (https://www.akveo.com/blog/react-native-for-mobile-app-development-points-to-consider-in-2021) offers even more development capabilities and evolves into complete platform agnosticism, bridge simplification, and streaming model upgrade.

The framework is based on the React web development framework. [React Native works] (https://www.akveo.com/blog/how-does-react-native-work) with React JS library to render the app natively on various platforms. RN uses JavaScript, TypeScript, and JSX programming languages basis which makes the platform easy to use for the majority of developers. React Native controls native rendering through Objective C/ Swift on iOS and Java/Kotlin on Android. 

The architecture of React Native is quite similar to NativeScript’s except for the Safari core and additional libraries of the first. For the rest, it’s the same JS input and the bridge. With RN, you can use multiple UI/code frameworks, libraries (Ignite CLI, Native Base, [UI Kitten] (https://akveo.github.io/react-native-ui-kitten/)), and native modules to streamline the development process. 

## React Native vs Native Script. The main differences and similarities. 

Despite both platforms’ aim to create cross-platform apps, they have several distinct features and major differences on several layers. Let’s compare them with the following core performance points. 

### Learning curve
React Native and Native Script rely on JavaScript, [the most commonly used programming language in the world] (https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages-professional-developers). Thus, both platforms are easy to learn for a large group of developers. Also, the JavaScript basis makes the frameworks strong from the front-end side. 

However, React Native has React JS background with its Immutables, Repositories, and Redux. The developers with the React background will experience a gradual and smooth RN learning process.

NativeScript, in its turn, works with all of the JavaScript frameworks. Usually, NS developers leverage Vue.js, TypeScript, and Angular. The learning curve with the framework will be steep in the early learning stages for Angular developers. Then, to use all the declarative programming power of the platform, developers will need to become familiar with other frameworks. 

Conclusion: React Native has a more smooth learning curve while Native Script is positively abrupt in the beginning. Eventually, the learning curve of Native Script becomes more beneficial later.

### Community 
In terms of the developers’ community behind the platforms, React Native has much more support. First of all, it was created by fortune 500 company Facebook that has been expanding RN’s functionality at a fast pace from the very beginning. The company provides exceptional support for the newcomers that draws attention to the framework. Currently, React Native gathered more than 2000 contributors who develop features and add new plugins to the framework. Such popularity increases the RN gravity too, making it easier [to find a React Native developer] (https://www.akveo.com/blog/how-to-hire-a-dedicated-react-native-developer-in-2021-ultimate-guide-interview-questions). Now, only Flutter is competing with it for the attention of cross-platform developers. 

Native Script, on the contrary, is backed by 190+ contributors at the moment. The popularity rates are also much lower and decrease, according to [the latest research] (https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/).

Conclusion: React Native is more popular among developers than Native Script and has a large developer community. 

### Performance
React Native renders UIs much faster than Native Script due to its Virtual DOM usage. Moreover, Native Script has a single-threaded model of APIs accessing. It can hinder the app’s performance while executing the intensive code. 

In contrast, React Native uses separate threads. JS thread contains all the business logic and handles user interactions. The main thread, for its part, is responsible for executing native API calls. React Native has the asynchronous type of communication between threads which makes rendering less laggy than on Native Script. 

As for the code-sharing and components’ reuse, the frameworks are equal. Both of them can share almost all the code throughout different platforms. The percentage of the code depends on the complexity and custom features of an application. The more sophisticated the code and UI, the less code you can share between the platforms. 

Conclusion: React Native performs better than Native Script due to its multi-threaded system and Virtual DOM usage. At the same time, both platforms have equal code-sharing capabilities. 
 
### Application field
The cross-platform capacity of React Native is huge. Using it, developers can create apps for the following platforms: macOS, Linux, Windows, iOS, Android, Apple tvOS. Such variety became possible thanks to the contributors that developed specific RN forks and adaptations.

Native Script, in this regard, has much less to offer. Developers can build NS applications for three platforms: iOS, Android, and Windows. Though, its community is also working to use the framework on other platforms.

Conclusion: React Native works with more platforms than Native Script at the moment.

### Testing
React Native supports the IDE software suite, which opens wide testing automation capabilities. So, developers can choose from Espresso, Jasmine, KIF, Appium, Calabash, UI Automation, Robotium, Frank, TestNG, and more.

Native Script has its own QA workflow that was aerated in 2017. Thus, various types of testing can be launched from its CLI, but only with Mocha, Quint, Jasmine, and Appium for functional testing.

Conclusion: React Native has more convenient testing automation and gives more freedom of choice concerning testing tools.
 
## Pros and Cons of RN and NS

In this section, we will review the pros and cons of each framework so you can see their strengths and weaknesses more clearly.

### React Native Pros and Cons

Pros
- Open-source and free-to-use;
- You can access platform-specific APIs asynchronously;
- High development speed due to the code-sharing, components reusability, and hot reload feature;
- Flexible code;
- You can build apps for multiple platforms;
- Strong developer community with thousands of contributors that expand the framework’s feature set and provide support;
- 3d party libraries support pre-made code patterns;
- Exceptional UI rendering capabilities with the help of Virtual DOM without using WebViews;
- Native controls that facilitate the development process.

Cons
- RN developers may need native platform knowledge to solve more specific tasks;
- May require additional infrastructure to maintain complex applications;
- Debugging can be challenging.

### Native Script Pros and Cons

Pros
- Remote services for NativeScript Android and iOS apps building;
- Open-source and free of charge cross-platform development framework;
- Renders UIs natively without using WebViews;
- Works great with Angular and Vue.js;
- Includes hooks usage for client-line interfaces’ customization;
- Provides direct access to Android and iOS APIs;
- Allows to reuse code across iOS and Android platforms;
- Explicit documentation along with tutorials, applications samples, and forums to help developers learn how to use Native Script;
- Improved app building and deployment backed by Telerik platform;
- Developers can install and use various NativeScript plugins.  
 
Cons
- Doesn’t support DOM and HTML;
- All JavaScript code executes on the main thread;
- NativeScript plugins have dubious quality (weren’t tested); 
- Testing is available on real devices or emulators, and you need to reload the system to see the changes;
- There are no ready-made UI collections;
- You should pay for some of the additional UI components (calendars, charts, etc.);
- Devs need to know native iOS and Android to reach platforms’ hardware and functionalities.

## When to use React Native and NativeScript

### React Native use cases and app examples

React Native perfectly suits you in the following cases:

- You want to build your MVP at short notice. With React Native, it will take only several weeks;
- You plan to use your app across multiple platforms;
- You need easy access to platforms’ hardware functionality without 3d party plugins;
- Your app requires complex controls and operations.

Applications examples:

### Facebook

Unsurprisingly, the company demonstrated the capabilities of its framework, creating Facebook social media mobile app for Android and iOS. Among the application’s features are:

- Text/voice messaging, video chats, and phone calls;
- Location tracking through GPS;
- Photo, video, music cloud storage.

### Walmart

The largest retailer in the US, Walmart, entrusted its mobile app to the React Native developers. They’ve created a functional app capable of:

- Integrated chat-bot for customer support;
- GEO-positioning of goods and customers for delivering them;
- Price scanner and medical prescriptions management.

### Instagram

The world’s best photo/video-sharing platform is also made with React Native. The app has:

- The ability to connect with smartphone’s camera, record stories, make photos, period and record videos;
- Capacious and high-performant cloud storage;
- Text chat, collaboration tools, real-time photo/video content editing.

### Native Script use cases and app examples
Leverage Native Script framework if:

- You are going to create a simple application without any customized or unusual platform-specific components for iOS and Android;
- You’d like to add customize your app’s interface but are not familiar with Objective C, Kotlin, Swift, or Java;
- You want to create a web clone of your application with Angular or Vue.js.

Applications examples:

### Raiffeisen Bank 

One of the most reputable banks in Europe, Raiffeisen, has chosen Native Script to build its mobile application. Its functionality includes:

- Instant money transactions within the bank environment and outside of it by phone number;
- Multiple accounts/cards monitoring and management; 
- Other bank accounts and debit cards replenishment;
- See the bank branches in your area.

### Ragelneef

This is the app for energy consumption control and electricity costs management. It allows users to:

- Estimate amounts of electricity you consume in a certain period of time;
- Control your expenses and save money on electricity;
- Watch your energy consumption history in a chart.

### Daily Nanny

This app is a helper for parents who hired a nanny to watch after their children while they are away. Using it, they can:

- Chat with a nanny and give written instructions so that he/she won’t miss any important information;
- Control nanny’s actions and receive photo/video reports any time;
- Monitor the child’s nourishment and leisure.  

## Wrap up

Now, it’s time to make a choice. As you can see, React Native is a more popular, fast-evolving, and performant framework than Native Script. Besides, it has a much larger developer community that can support you during your cross-platform app development. Using RN you can develop an app for more platforms, reuse UI components and render complex interfaces. However, if you prefer to code with Angular or Vue js. rather than React, and use the related plugins Native Script will suit you better. In fact, both platforms make the cross-platform development process fast with their code-sharing features.  

P.S. If you still have questions or want to delegate your cross-platform development to a solid and experienced team of developers, [contact us] (https://www.akveo.com/contact). Akveo provides the full cycle of services including app development, UI/UX & web design, branding, quality assurance, and technology consulting.