Back to Blog Home
← all posts

NativeScript 1.6 available now

February 18, 2016 — by Valio Stoychev

Fast lane to the 1.6 bits: go get them. As we continue to evolve NativeScript we are guided by several simple principles:
  • Make the runtimes as fast as possible
  • Build upon the excellent work done in existing ecosystems - iOS, Android, Windows, JavaScript/TypeScript and Angular
  • Enable the entire native UI stack and maintain 60fps refresh rate
  • Document everything!
With these principles at our back, the latest release delivers some huge improvements across the framework in these areas:
  • Performance
  • UI
  • Debugging/Hot Reload
  • Angular 2.0
  • Plugins
Before taking a closer look at everything we are shipping today, we have an exciting news to share - we just opened a public NativeScript Slack channel! To join the discussions - join the NativeScript Slack channel.

Now, let’s take a closer look at what you’ll find in NativeScript 1.6.

 

Performance

Performance improvement is a continuous process that never ends. There is always something that can be done better or faster.

In this release, we aggressively focused on improving app loading time on Android. I’m happy to report that we managed to cut the loading time of an Android app significantly.

Additionally, we are investigating a “magic” feature in the V8 engine that allows you to load the all JavaScript code directly into the heap. We documented this in details - it is an interesting read. In short - once loaded, the application lifecycle skips JavaScript module JITing. This means further loading cycles of the application are a lot faster. We are aiming for sub-second load times, and expect this additional optimization to land in 1.7.

For iOS, we focused on performance optimizations in the bridge between JavaScript and native code. In 1.6, we've doubled the performance when:
  • Calling out to Objective-C
  • Calling methods with primitive arguments (numbers and pointers)
Methods with arguments marshalled by copy (like strings) received a 1.5x boost.

We made additional performance improvements in the Javascript layer. First, we implemented lazy "require" logic to reduce JS modules loading time. We also updated several core features to execute on background threads. For example, all HTTP requests will now use a background thread. Images are now decoded on background threads, too.

Finally, for even more image optimization on Android, we created a plug-in that wraps the native Fresco library from Facebook. We highly recommend that you use this plugin if you have a list with lots of images in the app. It is the de-facto standard library for all native Android applications looking to maximize memory efficiency while working with images.

(We are thinking about extending this plugin for iOS as well, but if you have the knowledge and want to help it come to life faster, PRs are welcome!)

 

UI

There are two major MAJOR UI additions in NativeScript 1.6 that I’m sure you are going to love:
  1. Support for percent-based layouts
  2. Support for native page transitions
Support for percent (%) values in NativeScript layouts has been one of the most requested features from the community. It took some time to get right, but we finally have an implementation that should feel right at home if you’re coming from a web background. It’s easier than ever to build fluid layouts that can adapt to different resolutions and form factors.

You can use percent values in CSS stylesheets or directly in the XML markup, just as you’d expect.

Next: Configurable native page transitions. Native page transitions have always been in NativeScript, but they have never been configurable. A new JavaScript API gives you full control over the native transition. You can use platform-specific transitions, and you can also create custom transitions if you feel that the integrated native transitions are not enough. The built-in transitions are:
  • curl (same as curlUp) (iOS only)
  • curlUp (iOS only)
  • curlDown (iOS only)
  • explode (Android Lollipop or later)
  • fade
  • flip (same as flipRight)
  • flipRight
  • flipLeft
  • slide (same as slideLeft)
  • slideLeft
  • slideRight
  • slideTop
  • slideBottom
Read more about the navigation transitions in this documentation article.

Those are the big UI items, but there are more than 50 other issues fixed in the cross-platform abstractions. If you are curious about specifics please go and explore the Github release log.

 

Debugging & Hot Reload optimizations

We improved NativeScript’s hot reload functionality (aka LiveSync) and it now works much faster for large projects, and in the scenarios where changing images are involved. Console.log statements are now consistently shown when debugging with LiveSync!

The debugging experience on Android has been improved significantly. Unix sockets are now used to communicate with the Chrome debugging tools, which should create a faster and more reliable debugging experience.

Meanwhile, we closed about 50 issues in the CLI in this milestone. We now support the latest XCode 7.2 (resolving some issues with CocoaPods created by XCode for all iOS apps). Refer the separate CLI release notes for more detail and highlights.

 

Angular 2.0

NativeScript will soon provide full support for building applications with the Angular 2 framework. We meet with the Angular team on a weekly basis. We've been adding near-immediate support for the latest features and functionality in Angular 2. Our implementation is very close to feature-complete status.

If you are interested in the current Beta bits, please follow the instructions in the NativeScript  Angular github repo to give them a try. Angular support is a very high priority for NativeScript. We are very excited to offer a standards based way to write native mobile applications.  With Angular 2.0 and NativeScript, you get the full power of Angular to create native mobile apps. You will be able to reuse your Angular skills and a very high proportion of code between web and native mobile applications. As NativeScript evolves, you will even be able to reuse your code for desktop applications!

 

Plugins

Plugins are the easiest and most powerful way to extend NativeScript. Just ask Brad Martin :).  In the last few weeks, he built and published several plugins for NativeScript. The core team is now working on testing those plugins, and once we are done we will put all of them on the Verified NativeScript plugins marketplace.

In fact, we have already expanded our verified plugins in recent weeks. Here are the newest entries in the list:
There is also a growing collection of “UN”-verified plugins that are pending verifications: The best thing for me is to see how the community is working together on these plugins. Above I listed only the plugin owners on npmjs, but for several of the plugins I know it was a combined effort. That’s the kind of things that really makes us happy to see!

If you are working on a plugin and would like to see your plugin on the verified marketplace, submit it here.

Last, but not least, one more new feature worth noting is that you can now use the application ID when you write plugins. This is a requirement for some of the bigger native libraries that require app id to be passed to their services. Google Maps and Facebook SDK are good examples. Read more on this issue here.

 

Community

Our community is growing rapidly. The number of developers working with NativeScript doubled in the last few months of 2015, and the momentum is increasing in 2016.

Thank you for being part of that movement and for helping make NativeScript the best possible solution for cross-platform native app development. Help us spread the word and help more developers experience the joy of NativeScript.

If you really love NativeScript and want to take your community participation to the next level, join the new NativeScript Community Slack Channel! Join other like-minded NativeScript fans and hang-out with members of the NativeScript core team.

 

Next Up: NativeScript 1.7

We recently updated the NativeScript roadmap with the major items we plan to include in NativeScript over the next 3-6 months. Naturally, this list is subject to change, but the biggest item we want to deliver is our initial preview of the Windows 10 runtime for NativeScript.

We remain laser focused on nailing the optimizations for iOS and Android, but in parallel, interest in Windows 10 support continues to grow. We’ve already done substantial work spiking Windows 10 support for NativeScript, and with 1.7 we want to share that early progress so we can invite other people interested seeing NativeScript run on Windows 10 help evolve the open source project.

We are excited to move this another step forward and take NativeScript to another platform! Of course, that’s not everything happening for 1.7. You can visit GitHub to see more of what’s being done for the next release. There will be a new bluetooth module, more verified plugins and many more polishes and improvements. The 1.7 release is planned to land towards the end of March.

 

Wrap-up

As you can see, the NativeScript team has been very busy continuing to drive the framework forward at full speed. We hope you enjoy the NativeScript 1.6 release and we are excited to see what you develop with this new version. Please share this news on twitter. If you have a comment about the release, let us know in the comments below!