What is native script?

Like React native and flutter, Nativescript is cross-platform mobile applications development language.Nativescript gives the developer the possibility to create applications using JavaScript, Typescript, AngularJs and VueJs, it also gives developers direct access to native platform APIs. Unlike Cordova, which uses WebView for rendering the UI of the app, NativeScript uses the native platform’s rendering engine, which means that it provides a truly native user experience.

how it works

NativeScript is composed of a JavaScript virtual machine, a runtime, and a bridge module. The JavaScript virtual machine interprets and executes JavaScript code. Then the bridge module translates the calls to the platform-specific API calls and returns the result to the caller. To put it simply, NativeScript provides developers with a way to command the native platform through JavaScript instead of Objective-C on iOS or Java on Android.

Nativescript Pros and Cons

Pros

It is free and open source. This means that you can contribute to the code and use it however you want, as long as you don’t violate the Apache 2.0 license.
It allows you to build truly native apps for Android and iOS devices. Each of the UI components that NativeScript exposes is translated into its corresponding native UI components.
It lets you access native platform APIs through JavaScript code. You don’t need to have knowledge of Java or Objective-C in order to use native platform APIs because you can write it all in JavaScript. This means that if you need to access a specific device feature, you can just learn how to access native APIs with JavaScript and you’re good to go.
It gives users an experience closer to native than those provided by hybrid mobile app frameworks like Cordova.
It allows developers to easily build, deploy and manage their NativeScript apps through the Telerik platform. I’ll discuss the Telerik Platform more in a later section.
It has zero-day support for new native platforms. This means that you can immediately use the latest native APIs and UI components whenever Google or Apple updates their platform.
The documentation provides lots of information on how to get started, core concepts, and the user interface. There are also examples, tutorials, a forum, Stack Overflow questions, and sample apps which can help beginners get started with NativeScript.
You can write your NativeScript apps with TypeScript. TypeScript is a language that transpiles to JavaScript and adds object-oriented programming capabilities to JavaScript.
Any JavaScript library that you can find on NPM that doesn’t rely on the browser and the DOM can be used within NativeScript. Examples of such libraries include utility libraries such as lodash and underscore.
You can do almost anything with the NativeScript CLI. Basics such as creating a new project, adding a platform, running on a device and deploying to a specific platform are all included. Aside from that, you can also install plugins, debug the app, and upload to the app store.

Cons

There’s no HTML and DOM in NativeScript. You’ll need to learn how to use the different UI components in order to build the UI of the app.
Verified plugins are lacking. At the time of writing of this article, there are only 16 verified plugins in total. Though there are a lot of Nativescript plugins listed on NPM, you can never really be sure of their quality.
Developers need to know the native Android and iOS APIs in order to access the device hardware and other platform-specific features.
Due to its native nature, you can only test apps on an actual device or an emulator. This makes the initial setup for testing slower. But once you get it running on the device, hot-reloading takes over. This means that every time you make a change to the source code, it immediately reloads the app to reflect the changes.
Not all UI components are available for free. You need to purchase Telerik UI for Nativescript if you want to use components such as charts and calendars.

NativeScript / Uplabs challenge

Overview of the challenge

As NativeScript was at its beginnings, as a development language it wasn’t popular as its rivals… so the progress team, the team behind NativeScript, came up with and idea of a challenge, a challenge aimed, unusually, for designers rather than developer or so it seemed… the idea was to show the UI capabilities of this new development language and maybe, ultimately mainstream it as the alternative of React Native and other cross-platform mobile development languages …

How I came to know NativeScript

My first job as a UI/UX designer and front-end developer began late 2017 at a small “startup” called Spark, and so, our first mobile centered project was an application focusing around pharmacies… then, our boss decided , on his own, to use Nativescript, a fresh but a promising cross-platform mobile development language, as a result my college and I self-thought ourselves on how the layout and the components work, and that is, in a nut shell, how I came to find and use NativeScript.

My entry

A little over 6 months, from regularly using NativeScript, and as I was a frequent user of the design website Uplabs, I used to, sometimes, take part of their challenges, and so, one day, I stumbled upon the challenge made in collaboration between Uplabs and Nativescript, and without telling my boss I decided to take on the challenge. After three weeks it was the deadline, and I have already made my project and it was up and running, and it was now time for voting, honestly, I never expected to win, to be in the top three even, but somehow my work made a good impression and people actually liked it, that gave me hope that I started thinking: “I might actually win this”… and so, I began asking my friends to checkout my work and vote for me, it felt like cheating but… I really wanted to win, anyway, around three weeks later, the voting came to a halt and I was announced the winner of the first prize of 1000$.
It was an experience like no other.

Conclusion

After this brief introduction to Nativescript, and my journey to winning its contest, I have some points I need to express:
If Nativescript wants to be a substantial competitor for flutter and React, it needs to improve some key features, like load time, better CSS implementations, reduce the layers for compiling the code, etc…