Back to Blog Home
← all posts

NativeScript 6.1: Kotlin Support is here!

September 4, 2019 — by Emil Tabakov

It’s been just a month and a half since our last major release and 6.1 is already available - packed with new exciting features.

Support for Kotlin

Kotlin is a modern statically typed programming language with aims to boost developer productivity and happiness. Since its inception by Google and JetBrains in 2011, has become a first-class citizen in the Android ecosystem, and is now the preferred way to develop Android apps.

Because of this, NativeScript developers are increasingly looking to consume Kotlin libraries in their app—especially those teams and companies that are switching from native development to NativeScript. So, it was no brainer for us that we had to provide support for these use cases. And here it is …

Imagine that you have this Car written in Kotlin and wrapped it as a jar library:

package com.example

class Car private constructor(val color: Color) {

    companion object {
        fun createRedCar() = Car(Color.RED)
        fun createGreenCar() = Car(Color.GREEN)
        fun createBlueCar() = Car(Color.BLUE)

    fun makeSound() = "Beep from the Kotlin car!"

enum class Color {

And let’s say you want to interact with your Car in your NativeScript application. It’s as simple as:

let car = com.example.Car.Companion.createGreenCar();

let carColor = car.color;
console.log("!!!! VM: car color is: " + carColor);

let carSound = car.makeSound();
console.log("!!!! VM: car sound is: " + carSound); 

Material Design Components

Material Design is a design language, which has affected all aspects of application development where UI is involved since it was created in 2014. It provides opinions on every aspect of the look and feel of your application—from colors, through transitions and animations, to components and their behavior. And because it was developed by Google, material design has long been the expected standard for Android applications, but lately, it has been getting good adoption in iOS applications as well—especially for those that are looking for UI parity between the both platforms.

To facilitate this trend in the mobile world, Martin Guillon, which you might know as @farfromrefug, created a set of Material Components for NativeScript. This is an awesome initiative, and as such, we decided to support him by providing technical help, testing infrastructure, and documentation. All of this is already in motion, but meanwhile - you are most welcome to use his components and/or collaborate with Martin to make these components even more awesome.

Here is a quick run through of all currently available Material Components:

Run on WiFi

Not sure what the biggest problem is in your office, but on the NativeScript floor we often have trouble with … cables. That’s right - we have all of those phones to develop and test against, but we usually struggle with finding the appropriate cable.

Well, that’s no more. 6.1 comes with support to run your app on a real devices via WiFi for both iOS and Android.

And all of a sudden - all your colleagues’ phones became your slaves. The set up is really simple and takes only a few minutes to get it done on iOS or Android.

More Improvements to the Tabs and BottomNavigation Components

Several months ago the team started an effort to completely revamp how tabs and bottom navigation work in NativeScript. As a result, we shipped beta version of the components in 6.0 and those components are now out of beta with 6.1.

The Tabs component now supports using a custom tab strip if the built-in one doesn’t serve your needs. There are also improvements in the styling, UX, more events exposed and other cool stuff. A dedicated blog post on these improvements will be out in the next several days.

Latest iOS, XCode, macOS, and Android

Are you ready for the another set of phones and new versions of mobile operating systems? We are! NativeScript 6.1 brings compatibility with the latest technology stack, so you can be sure that we got your back.

The big announcement in the Apple world is going to happen on the 10th of September, and chances are that we will see new devices, as well as official releases of the iOS and macOS betas shortly after that.

One important change for iOS is the Dark Mode. Our expectation is that not all apps have proper UI when going into the Dark, so if you want to retain the current look and feel of the app no matter the user’s dark mode setting, you can opt-out your application.

Also, Android Q has been around for a while as a beta version, and we expect it to be promoted to final any minute now.

Community Contributions

With this release we were very happy to accept several very significant contributions from the community that I would like to point out:

In addition, many other fine people also contributed part of their time and effort to make the framework better. Let’s have a round of applause for them:

rigor789narusevicsurdum-abs AjaiDubeytonjohnClaudioMeinbergDTV96Calibrejagadish-kbmap7nike47Ayushraj1baskarmibrynop thomas-alrek mukaschultze

What’s Next?

  • The scoped NativeScript packages weren’t something we could fit in the current iteration, but they have the highest priority for 6.2. The reason for the delay is that we came up with a better technical plan, which unfortunately will take us more time to implement.

  • In the following weeks, we will release an Alpha version of a total revamp of the iOS runtimes. The new iOS runtime will be based on V8 as a JavaScript engine and will remove JSCore. This is expected to bring many benefits for the {N} developers, as well as to the Core team which currently maintains two JavaScript engines. We’ll have more details on that in a dedicated blog post in the next couple of weeks.

  • 6.2 is scheduled for October and will be packed with even more awesomeness. Stay tuned!