Back to Blog Home
← all posts

Reusing your investment in native iOS and Android apps with NativeScript

October 28, 2016 — by Valio Stoychev

So your company already have one or more first class native mobile applications and is struggling to keep with all the changes and support they require to keep them in top condition? Maybe you have a larger team of web developers that you will be happy to work on your mobile apps?

We hear about this problem a lot when we talk with customers. Finding qualified native mobile engineers is often not an easy task. Syncing features across multiple codebases is not efficient. It is common that companies have only web developers that work on their website and web applications and a small mobile team working on a native mobile app. That is why frameworks like PhoneGap, which allows you to use WebView into a mobile app, emerged in the past. Unfortunately, they could not deliver the quality and features the native frameworks deliver.

Implementing a first class mobile experience was possible only if you create a native application. With the introduction of the JavaScript Native Mobile frameworks, like NativeScript, this is no longer the case and you can implement first class native mobile applications using web technologies.

So how NativeScript can help you?

As one of our partners (https://www.convective.com/) says on their web page:

Your mobile application must support all platforms.
Your budget can only support one platform.
That’s a problem.
NativeScript solves that problem.

You have two options to start using NativeScript. You can start the application from scratch and implement it entirely in NativeScript, or if this is not an option (from business or go to market perspective) you can start implementing only the new features or parts of the application in NativeScript and gradually migrate.

I will leave this choice to you. It depends on many factors and you better know your developers and your mobile strategy. If you can afford to start from scratch this will probably be a much cleaner approach from an engineering point of view and will give you full control over the application.

Considerations

The NativeScript framework allows you

  • full access to the underlying native iOS or Android APIs, which means that anything that you are using in the native application is available in NativeScript

  • you can use the latest frameworks from day one. We currently support the latest and greatest iOS and Android frameworks and tools.

  • UX and UI is native. The actual native components are used to render the application UI.

  • Background execution. You can use background workers and you can use the background execution tools available in the respective native frameworks. You can read more about this here.

  • Responsive design as part of the core framework. You can achieve different design for landscape/portrait mode or for any form factor.

As you can see by using NativeScript you don’t have any limitations compared to the native application.

If you already have a significant investment in native iOS or Android libraries (UI or non-UI) the good news is that you can reuse them inside a NativeScript application. There are already about 400 plugins created in NativeScript that are using native libraries. Latest Android Material design and latest iOS design patterns are supported out of the box.

Benefits

Now lets see what benefits you will have when you start using NativeScript instead of the native frameworks directly.

Benefit #1: First of all you have now one code base to support which means cheaper implementation and faster time to market. But we all know that the initial implementation is the devil in any software product. It is the support after that. Especially in the case of a mobile application where the underlying mobile OS and tooling is changing every several months. So I would say that biggest benefit of the single code base is that the support cost after the initial release is much lower.

Benefit #2: Another benefit of NativeScript is that actually the development is actually much faster compared to the native frameworks because there is no need to recompile the application after each code change to see the results. We follow the web philosophy here and each change in the code is visible on the device/emulator screen in second(s).

Benefit #3: With NativeScript it is possible to submit hot patches to already published application for small bug fixes. This is especially useful if you have a small fix you want to apply without going thru a full review cycle from the app stores which can take a week or more time.

Benefit #4: NativeScript is open source and backed by a company that invests in Developer tools. The entire source code is available on GitHub and there is an active community involved. You can fork the project or request a fix or feature when needed.

Benefit #5: There are a lot of talks in the community recently that discuss this topic. For me, one of the most interesting things is that you no longer need to separate your team according to the platform they will be working on. You no longer need iOS team or Android team, or Windows Phone team. Now you can have one team that can do cross-platform mobile development. In that team, you can have people that understand in details a particular business requirement and focus on the actual business problem that needs to be solved not on the technology they are using.

Benefit #6: Cloud development. This is a big one. With NativeScript you don’t need to have a local environment setup of the native development kits. Native development kits are very complex and require an extensive knowledge of the native in order to install and once again maintain them in the long run. With NativeScript you can use cloud build services that will build, package and preview the application on the cloud without the need to maintain a local environment. If however, you prefer local, internet disconnected environment you can use the local builds. Another benefit from the cloud builds is that if you are using Windows for your development machine you don’t need a Mac machine to develop for iOS.

Benefit #7: You can have custom features for iOS and Android if needed. Custom layouts, pages, functionality. You don't need to have exactly the same app for iOS and Android if you don't want to.

To summarize:

  • Open source,

  • One code base, which brings the following benefits:

    • cheaper implementation,

    • faster time to market,

    • less support due to the less code being used.

  • Can reuse already existing native libraries,

  • Can be integrated into existing native applications,

  • Faster preview - live sync,

  • Hot Patch - avoid marketplace re-submission for small updates,

  • (Optional) No need to have Mac machine to build for iOS, if you develop on Windows,

  • (Optional) No need to support local development environment,

  • Solution focused engineering teams, not platform focused.

Convinced?

To see NativeScript in action please see our published demo application.

To start a NativeScript app from scratch please follow our getting started guide. If you decide to integrate NativeScript into an existing application please follow this guide.

There is a difference between web and mobile development, even that the technology stack is the same. The design patterns involved in web and mobile development are different, mobile OS defers from each other and the mobile skillset is still something that a developer should learn regardless which technology he is using. To help with this transition we offer a big list of code samples that implement the most common mobile design patterns.