NativeScript Developer Day[s] 2017 — Day 1

A three-hour bus ride and one sleepless night in a hostel later, I find myself attending NativeScript Developer Day in NYC.

I have zero knowledge about NativeScript. I’m barely “blog-trained” on Angular. And for Typescript, I think I did a Front End Masters course on it that one time.

NativeScript, however, provides a big promise: “Truly” native, cross-platform apps deployed from only a single code-base.

It’s quite an enticing pitch.

Hey, who hasn’t, as some point in their lives, said to themselves, “Let’s get crazy and learn some new tech”?

Nobody I want to associate with, that’s for sure.

Therefore, here are some of the notes I took while going crazy.


Opening Keynote — Monday, September 18th, 2017

Am I supposed to abbreviate NativeScript to “NS” or “{N}”? — both seem to be used by official material
“NativeScript is about bringing in all the libraries, not just Angular”

First, Todd Anglin begins with the opening keynote. We cover NativeScript’s biggest features:

  • Open source
  • Deploys to iOS and Android
  • Provides a Native UI — i.e., there are no web-views here
  • Choice of language: Angular, Typescript, and Vanilla.js for official support; Vue, Preact, and Aurelia for community support
  • Deploys from only a single code-base — (Author’s note: as opposed to React Native, which requires at least two of them)
  • When optimized, real-world NativeScript apps take as little as 3.2 seconds to load on startup
  • Heavily tested
  • Same-day support
  • Elements can be debugged with Chrome Dev Tools
  • Can integrate with AR Kit and AR Core for camera plane detection[!!!] — (that’s pretty cool)

Next, we cover the current state of the ecosystem…

930% Growth YoY on npm
  • Massive npm growth
  • 11,000+ stars on Github
  • More than 4200 individuals in the slack community

The need for technologies like this certainly exist. As a later speaker will mention, there aren’t many options that provide both A) “cross-platform” and B) “native”.

“Webpack + Android === 🔥 🔥 🔥 and performance”

Next: some announcements…

NativeScript Sidekick will go on to be mentioned repeatedly throughout the conference.

I guess I should give NativeScript Sidekick a try 😋


A short demo from Kinvey

“NativeScript is great for experimentation”

Kinvey provides a “mobile Backend-as-a-Service” (mBaaS) for NativeScript.

Personally, I get leery at anything-as-a-service these days (it’s a business model built entirely on being too generic for your use case), but Kinvey gives a pretty solid pitch, promising to encapsulate both your data and authentication layers with ease.

Sravish Sridhar walks us through building an “{N}Adidas shoes” app.

He also gives us permission to build our own “Yelp for Marijuana” app. I guess he knows his target audience all too well? 😛

Also, the ability to “Preview in AR” is pretty sweet.

They offer a free tier, so it might be worth giving Kinvey a shot.


Getting Started with {N} — Learning the Basics

At this point in the conference, we break into two tracks. Without an ounce of shame, I sit down to enjoy the newbie track.

First, Rob Lauer asks the question: “Why are we here?”

That’s… actually quite apropos for me right now.

But anyway…

  • “We live in a world of silos”
  • “We ❤ the web, but we need more”
  • The hybrid approach failed us; too many compromises, too little benefit
  • If we could leverage “native Javascript”, then not only would we be quick to market but also we wouldn’t sacrifice a great experience for our users

I agree with all of these points.

Rob mentions other current attempts at coding for native Javascript:

And, of course, our fan favorite: React Native.

If you’re stuck trying to decide between NativeScript and React Native, then Rob offers several items for consideration:

  • “Write once” versus “Learn once”
  • Angular || Vue versus React
  • Progress versus Facebook
  • Apache 2 versus BSD-3+

(It’s at this point in the discussion, a person in the crowd, more than likely a redditor, yells out a dig at React.

I guess the guy must’ve slept through the whole “Let’s embrace having more options for the community” speech.)

Rob proceeds to go in-depth on what makes NativeScript a great choice, including (but not limited to):

  • Defining the UI with markup
  • How to use JS to handle logic, and how to use CSS to handle style
  • The NativeScript default app, and the ability to adjust it as necessary
  • Debugging NativeScript with VSCode
  • NativeScript elements are abstractions for NativeScript modules
  • Widgets that are available out-of-the-box
  • The traditional layout options (Absolute, Dock, Grid, Stack, Wrap, & Flex)
  • Nesting layouts
  • Platform-specific flags for your names, markup, and attributes
  • Compatibility with SASS/LESS
  • Additional debugging options
  • NativeScript CLI versus NativeScript Sidekick

And, finally, avenues for help from the community: At least two books for the budding NativeScript developer, a community forum, and a slack channel.

There’s quite a lot to chew on here!


Getting Started with {N} — Building with the CLI & Visual Tooling

Doesn’t seem too bad
“Because life's too short [not to use the NativeScript CLI]”

For the next presentation, Sebastian Witalec goes in-depth on the ecosystem.

Many of the tools here have already been mentioned in passing; however, now we get insight into the why and the how it looks:

  • NativeScript Theme Builder
  • NativeScript Marketplace
  • NativeScript Sidekick — which can also automate provisioning your device!
  • NativeScript CLI
  • Installing plugins to NativeScript CLI — note: tns plugin add instead of npm install

I’m fully sold on NativeScript, and it’s only been half a day so far!

But now, it’s time for lunch…


Northeast Pennsylvania, represent!

During the lunchtime hallway track, I run into another developer from NEPA. Hey, I recognize that twitter handle!

Here’s a shout out to BH, and also a shoutout to our fellow participants in the #CodeNewbie Twitter Chat!

It’s always great to meet other people who believe in and feel passion for the tech community.


Deep Dive Intro to Angular

“Always bet on Javascript”

Jeff Whelpley kicks off the next half with an overview on Angular.

While Angular is technically not required for building NativeScript apps, Angular seems to be the best practice here; therefore, Jeff walks us through…

  • Why we would choose it
  • The Angular “style” and design features
  • The Angular ecosystem
  • The Angular CLI

There’s not much to comment on here. Jeff does offer, however, a few opinions…

… That “compilers are the new frameworks” (as originally stated by Tom Dale)

… And that the Angular community believes “practicality is greater than purity” and “cooperation is greater than competition

Against this latter point, I would argue that Angular doesn’t somehow have a monopoly on “practical and cooperative.” The Vue and React communities together share these beliefs as well; we all just sort of come to different conclusions at the end of the day.

Anyway, on a lighter note, I notice a few people in the audience get riled up at Jeff’s… strange selection of metaphor.

I swear I saw one audience member pull a “Oh no he didn’t!” face — soccer must be serious business around here

Funky and convoluted metaphors are my jam.


Master Typescript & ES6

Daniel Zen finishes off the day with a presentation on ES6 and Typescript.

Well, more like, “Master every change in ES6, but just kind of squint a little at TypeScript.”

He does a great job in taking each of these changes in turn. And for each item, he presents a good use case.

However, with the better part of an hour spent on ES6, and roughly 15 minutes spent on Typescript, I feel like he missed out on an opportunity here.

Unless you’re already 100% on the Angular train, adopting Typescript is a divisive subject, and I feel like I’m not the only one who would’ve preferred a good argument for it?

But, I suppose since it’s a NativeScript conference, he’s the one that’s preaching to the choir. I’m the odd duck here, after all.

I think he did a great job otherwise. The lack of Typescript coverage is my only critique.

Daniel provides me some new insights on ES6, so I’m not walking away empty-handed.


At the end of the first day, I’m with this guy:

My inner monologue

On the second day, we have presentations on RxJS, performance optimizations, and debugging with Chrome Dev Tools.

Here is Part 2.

Thanks for reading, everyone!