TrustRadius: an HG Insights company

NativeScript

Score4.8 out of 10

18 Reviews and Ratings

What is NativeScript?

NativeScript is an open source framework that allows you to create native iOS and Android apps, with one codebase, using ​the web skills you already have (JavaScript and CSS) and ​the libraries you already love​.

Categories & Use Cases

Media

Example of a styled NativeScript list view
Charts and graphs available as part of NativeScript UI
Groceries – the app you build as part of the getting started tutorial
Leverage native mapping systems with NativeScript

1 / 4

Disappointment in NativeScript for production

Use Cases and Deployment Scope

We used NativeScript as per customer requests to implement mobile and web-based cross-platform applications used in the customer service industry. The customer wanted to implement the application in the Angular web framework and then port it to Android. We chose NativeScript as one of its main selling points was the cross-compatibility with writing the code in an Angular web app.

Pros

  • Teach the basics of the framework
  • Integrate to existing Angular project

Cons

  • Lots of bugs in the android build, visual and interface wise as well.
  • Android functions were missing which was crucial
  • Poor plugin support, buggy plugins
  • Low response time to new android features

Most Important Features

  • Opportunity to write cross-platform applications in Angular
  • Reaching a bigger customer base with our knowledge of the framework

Return on Investment

  • Although we succeeded in shipping the app, it did not save us any significant amount of time.
  • We still needed an Android developer to fully implement the application and enhance the capabilities of the Angular app

Alternatives Considered

Flutter, by Google and Ionic

Other Software Used

Flutter, by Google, Docker, Atlassian Jira Align (formerly AgileCraft)

The unknown beast - NativeScript

Use Cases and Deployment Scope

NativeScript (NS) is JavaScript that runs on a system-specific JSVM (V8 for Android, WebKit iOS). And everything would be sad if not for one thing - NS provides access to all system APIs. Moreover, NS has full support for the Angular framework. Mobile apps that we built with NS have full access to the platform APIs as if they were developed in XCode or Android Studio. Also with the help of NS we can also include third-party libraries from resources such as Cocoapods, Android Arsenal, Maven, and npm.js into applications without creating additional layers.

Pros

  • Access to the entire native API
  • Support for native iOS and Android libraries
  • Cross-platform declarative UI and source code
  • Powerful data visualization with native UI tools provided

Cons

  • The need to know the native Android and iOS APIs to access device hardware and other platform-specific functionality
  • Not all user interface components are available for free
  • NativeScript has no HTML and DOM, which requires some deep knowledge of different UI tools to be implemented instead

Most Important Features

  • Development of native apps for iOS, Android and Windows Universal while sharing the application code across the platforms
  • Usage of the native platform rendering engine, which provides a truly native user experience (UX)
  • Accessing the native platform API through JavaScript code
  • Easy build, deploy, and management of NativeScript applications through the Telerik platform

Return on Investment

  • It has increased the productivity of the developer's team, which has direct impact on the tasks performed throughout sprints (in terms of Scrum)
  • It decreased the time-to-market of applications by allowing the cross-platform development of the apps
  • Taking into account that it is open-source platform, with great variety of functionalities it directly decreased the operational costs of projects in run

Alternatives Considered

React Native, Xamarin and Ionic

Other Software Used

React Native, Oracle SQL Developer, PostgreSQL

NativeScript -- Not Yet Ready for Large Development Efforts

Pros

  • Executes really fast compared to other alternatives
  • Compiles down to native code and runs as a native app
  • Provides a way to split custom content, including CSS styles, into separate files per target platform

Cons

  • The ABSOLUTE WORST documentation I have ever seen for an environment which advertises direct involvement with Google and other vendors. Their website content appears to be written once as a version comes out, and then is never updated again as follow-on versions with significant changes are released.
  • Examples provided are often written from an expert's view, making far too many assumptions, and containing too much outdated content, to be useful to any developer who is just learning the environment.
  • Some areas of considerable interest, such as the development of composite plugins (draw on the use of existing components as opposed to new native components), are void of ANY useful support.
  • Support is left up to the use of stackoverflow.com questions and answers, and several of those who respond frequently, do so with language which comes across in an arrogant manner, and only serves to help in a specific instance, not in a global manner which would be useful to all.
  • The description of the environment is misleading. One is often led to believe that use of NativeScript will significantly reduce development effort and time. I would venture to guess that in most cases, this is untrue. A lot of effort is spent trying to keep the web app and the mobile apps at the same level of development, because the NativeScript components DO NOT support web pages. The user interface of a web app is still almost entirely new development.
  • The appearance of an Android mobile app is only like that of an iOS mobile app about 90% of the time. You cannot develop an app in NativeScript for an Android device, and expect it to look the same for iOS apps. Organizations who read about NativeScript, are misled into believing that the will be able to reduce staff by eliminating all Android developers or all iOS developers. To do so, is unwise, and in most cases, I believe that organizations will find it easier to develop for one mobile platform and then have the other mobile platform follow one version behind.
  • NativeScript advertises that it provides great support for Angular and other environments. While I cannot speak directly to those other environments, I can say that the integration between NativeScript and Angular is CLUNKY and PROBLEMATIC! What is easily accomplished in Angular, is a headache in NativeScript, and ends up degrading the quality of use within Angular. For example, Angular allows for developers to very easily develop components which reduce code duplication. Developing a NativeScript UI plugin (aka composite plugin) is made so difficult through the abundance of BAD information on the NativeScript website and manual operations to get it to work within Angular, that it defeats the purpose of building them. I see developers spending more time trying to fix the integration of a UI plugin than they spend in actually using the plugin.

Return on Investment

  • The poor quality of NativeScript documentation has the potential to weigh heavily on development timelines, budgets, and QA resources in a NEGATIVE manner.
  • The poor interoperability of NativeScript plugins can significantly increase development time.
  • The need to seek out professional instruction to learn how to use NativeScript effectively may become a burden on your budget.
  • The number of breaking changes between versions of NativeScript, may cause your development efforts to lag further behind the most recent releases of NativeScript and your other chosen environments than you are accustomed to.
  • NativeScript still does not support the latest major version of Angular. Any significant changes to the other environment components of your systems may hold you back even further while NativeScript plays catch-up.

Alternatives Considered

Android Studio and Angular Feature Flags

Other Software Used

Angular Feature Flags, Android Studio, Microsoft SQL Server

Climb to NativeScript, enjoy the Vue...

Pros

  • True native app. The app uses native components and that is quite noticeable in the overall performance of the app. NativeScript is also awesome in the way we can access the native APIs, so we are never really constrained by the framework. If we need, we can just dive into the native APIs without leaving our environment and language (JS).
  • Cross-platform. Builds for Android and iOS. It deals with the platforms differences very well.
  • Support for Vue.js. Even though it is just a community effort, the NativeScript-Vue plugin is the best alternative to build native Apps with Vue.js. That was a major factor to go with NativeScript.

Cons

  • Web build. It is still hard to share code with a web build. In our case, we want to build a web app with pretty much the same functionality. Other frameworks are stronger at this point.
  • No hot-reload. It still takes a couple of seconds to test an app. React Native does it better... With NS-Vue, the live-reload is even more fragile...
  • Tooling. Overall, NS could use better tooling. Again, RN does it better.
  • Better NS-Vue support. It is improving very well, considering it is a community effort. I see NS organization 100% supporting NS-Vue, but it is still not at the same level as NS-Ng, for instance.

Return on Investment

  • (I haven't built an app in production yet.)

Other Software Used

Visual Studio IDE, Bitbucket, Google Drive

Mobile apps delivered by leveraging our existing skillset with NativeScript

Pros

  • NativeScript allows our front-end developers to build actually native mobile apps with the javascript we already know well.
  • It is very quick to get started using NativeScript. We can generally onboard a new developer into the project in just a day or two.
  • The open source community surrounding NativeScript allows our team to find solutions to open issues quickly, as well as give back by fixing some issues ourselves. Work can progress quicker with the plugins other developers have already built.

Cons

  • The frequency of updates can make it hard to stay fixed to a common version. I found that there were so many improvements happening that it was worth bumping versions and adjusting the code at least every 3 months. This added extra development time, which also added stress. The benefit is worth it, but it's important to keep in mind that sometimes even a bugfix version bump will require some code changes.
  • We also found the fractured dependencies hard to keep up with at times. The nativesript-cli, tns-android, tns-ios and nativescript-angular dependencies all have their own release cycles that are close together, but not tied together, and that has downsides when prioritising upgrades during a release cycle. Again, the benefit to upgrading is worth it, but staggered releases do add additional complications.
  • Documentation is good, but could be better. Over the past year, this has been greatly improved, but there is still a delay between the adding or refactoring of features and the updates to the documentation.
  • The plugin ecosystem is open source, which is good, but as with your own project, the authors of these plugins also have to keep up to date with the changes in the repos, and that isn't always done in a timely fashion.

Return on Investment

  • We had built this particular app once already, during a 6 month time frame, using Ionic. When we hit the wall, we chose NativeScript, and built the whole app from scratch. We estimated another 6 months, but completed the work in 4 months due to the ease of use.
  • We have found collaboration with our client much easier because of the simplicity of releases and speed of development.
  • Having a tool like NativeScript has allowed us to make competitive quotes for mobile app development contracts, where previously that would have been closed to us due to our lack of native development experience. Being able to build iOS apps without a Swift-code expert has opened those doors for us.

Other Software Used

Adobe Experience Manager