Comparing Titanium, React Native, NativeScript & Xamarin

0 Flares 0 Flares ×

We regularly get asked about the differences between Titanium and other cross-platform development tools, especially those where you also develop using JavaScript.

Before we go through the differences, it’s worth mentioning that to be truly cross-platform, any development tool should do a few things really well:

  1. There should be a common language across all mobile platforms – ideally something that is already established and can be extended and added to using existing, published code samples. There wouldn’t be much point having a cross-platform solution that required you to code in three different languages!

  2. There should be built-in APIs to allow you to write the same code that works on multiple mobile platforms. Windows, buttons, labels, or opening the camera or photo gallery shouldn’t require you to write different code for each mobile platform. You should be able to write code to open the photo gallery once and the magic is handled by the cross-platform API. It should be perfectly possible to write an app for say iOS and Android that can share over 90% of the same code.

  3. Where you have to access the underlying mobile SDK or third-party libraries that may not be exposed by a built-in cross-platform API, you should be able to do that with native code. This can usually be achieved using native modules, which most cross-platform tools support – where you write modules in Objective-C, Swift or Java.

    (With Titanium and Hyperloop, it’s possible to do this using JavaScript that can directly address the underlying SDK – there’s no need for any Objective-C, Swift or Java code. We have a few examples of this for iOS, Android and Windows Mobile in our Hyperloop example project.)

  4. A cross-platform solution, especially one that uses JavaScript, should obsfucate and encrypt your code out-of-the-box, making it difficult and virtually impossible for anyone to disassemble your app and access any protected or sensitive code.

  5. Whilst not absolutely necessary, some cross-platform tools offer accompanying back-end and MBaaS solutions with easy integration into the application development lifecycle. This could include push notifications, analytics, crash detection and reporting. It might also include an API builder and a database of some kind. In some cases – as is the case with the Axway AMPLIFY Platform, these services can offer additional functionality that can be useful for modern application development: file storage, user accounts, geolocation, social functionality, etc.

For this post, we’re focusing on cross-platform solutions that offer a native user experience, i.e. where the user interface is native, NOT web-based. We compare three JavaScript solutions and one C# solution.

(We realise that tools can change or documentation can be out-of-date, and we’d really like to keep this up-to-date and accurate. We ran this post past some React Native, NativeScript and Xamarin developers however if you spot anything you think is wrong or could be improved, please do let us know and we’ll review. When suggesting a correction, it would be great if you could provide any additional information i.e. links or supporting documentation. Thanks!)

Titanium & Hyperloop React Native NativeScript Xamarin
Launched 2008 2015
(Created 2013)
2014 2011
Created /
Owned by
Axway Appcelerator Facebook Telerik / Progress Microsoft
Language JavaScript JavaScript JavaScript C#
Development Platforms macOS, Linux, Windows macOS, Linux, Windows macOS, Linux, Windows macOS, Linux, Windows
Target Platforms iOS, Android, Windows Phone, Windows Desktop iOS, Android, Windows Unified Platform1 iOS, Android, Windows Phone11 iOS, Android, Windows Phone, Windows Unified Platform
Cross-platform API Yes Partial2 Yes3 Partial4
Native UI Yes Yes Yes Yes
Entry Price FREE FREE FREE FREE
IDE Support Appcelerator Studio, Atom, Sublime, Visual Studio Code, Others Xcode, Atom, Sublime, Visual Studio Code, Deco, Others Atom, Sublime, Visual Studio Code, Others Visual Studio, Xamarin Studio
Debugging Yes Yes Yes Yes
MBaaS companion Axway Mobile Backend Services and API Builder None5 Yes10 Microsoft Azure
Primary Language JavaScript JavaScript TypeScript / AngularJS / JavaScript C#
Direct Access to Platform SDK via JavaScript Yes No Yes n/a
Direct Access to Platform SDK using Native Code Objective-C Modules or JavaScript / Swift with Hyperloop, Java Modules Objective-C / Swift Objective-C / Swift C# Only
Built-in SQLite Support Yes No6 No6 No6
Built-in Code Encryption Yes No Yes7 n/a8
Live Reload Yes Yes Yes Yes
Enterprise Support Available Yes No Yes Yes
Community Support Yes Yes Yes Yes
Components Widgets, custom components, Native modules, JavaScript Modules React Components, Native Modules, JavaScript Modules NativeScript Plugins, JavaScript Modules Xamarin Plugins
Component Marketplace Yes No Yes Yes
Mobile Analytics Yes9 No No Yes
Crash Analytics Yes9 No No Yes
Over-The-Air App Distribution Yes9 None None Yes


1 Windows support is not there by default but can be can be added as a plugin.

2 React Native doesn’t claim to be write once, run everywhere so whilst it’s possible to share code between platforms, it doesn’t have the same built-in cross-platform API coverage as other cross-platform solutions.

3 NativeScript does include a cross-platform API where you can create Buttons, Views etc with a single command that works on multiple platforms, however the API does not have the coverage of some other cross-platform tools.

4 The Xamarin Forms framework allows sharing of UI / code across platforms.

5 “None” as in not bundled / built-in to the toolset – requires you to use a 3rd party solution.

6 SQLite database support is available as a downloadable plug-in.

7 NativeScript works with a third-party tool,  Jscrambler to obfuscate JavaScript code.

8 Xamarin compiles to a binary that has no human-readable code.

9 As part of a paid Axway Appcelerator Platform account. The FREE Indie account gets 1 month analytics data retention for free.

10 Telerik are part of Progress, who also own Kinvey, an MBAAS solution.

11 Available as a download — see Nativescript runtime preview for Windows 10

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- 0 Flares ×

25 Comments

  1. Randy Johnson

    Can you elaborate on this one: “Direct Access to Platform SDK via JavaScript”

    I went to the about us page on NS and it says : “Get 100% access to native APIs via JavaScript and reuse of packages from NPM, CocoaPods, and Gradle”

    Are Native API’s different than the Platform SDK?

    • Jason Kneen

      Thanks for the comment — updated and corrected.

  2. Fredrick

    NativeScript has an awesome component marketplace: https://market.nativescript.org/

    • Jason Kneen

      Thank you, updated and corrected!

  3. Vince

    I think one important row is missing in your comparison: is the code translated to a native executable at compile time, or does the JavaScript run interpreted at run-time, which requires a bridge to the native UI.

    • Jason Kneen

      Thanks for the comment — it’s implied with JavaScript to Native solutions that’s it’s a run-time on the devices requiring the bridge — this is pretty much how all JS based native solutions work.

  4. Jason Kneen

    Thank you to everyone who contacted me about this post, both in the comments and privately, especially regarding NativeScript (thanks Nathan Anderson).

    I’ve updated the post and table accordingly.

    Thanks again!

  5. Sean Conway

    3 things that really need to improve:
    (1) Documentation with more examples and associated github code with both android and ios
    (2) Gradle support for Android.
    (3) Official third party module support. For example, Mapbox has an officially supported module for both React and Xamarin. Xamarin, Nativescript and React all have this. Despite the fact that it is great to write your own modules it is tedious and time consuming compared to these other frameworks, moreover the instantiation of native functions is still fairly Swift or Java looking syntax wise so I actually think it could be a pretty big change from the old model.

    Really love the idea but there is not near enough examples and far too much focus on iOS.

    • Jason Kneen

      Thanks for the comment. Documentation is continually reviewed and updated — if you have specific examples of where it’s lacking I’d be interested to know. We also have example apps like Kitchen Sink 1/2 + Hyperloop and lots of community contributions too. TiSlack is a great place to get examples and help also. Regarding 3rd party support, it’s obviously difficult to control what third parties do, however with Hyperloop it’s much easier now to integrate with 3rd party SDKs, and much quicker than the old way of writing native modules.

      • Daniel

        One area where documentation could really be improved is that in relation to native modules that include views. The few samples are GitHub are difficult to follow. Modules with no requirement for a view do have understandable documentation.

        • Jason Kneen

          Thanks for the comment and feedback — could you give me an example of what you mean?

  6. A minor correction: Xamarin was not developed by Microsoft but was purchased by them in 2016.

    https://en.wikipedia.org/wiki/Xamarin

    • Jason Kneen

      Correct — have adjusted the wording. Thanks.

  7. Rodrigo Farfán

    Hi Jason. Congrats for this post. I miss “Java Modules” for Ti in “Direct Access to Platform SDK using Native Code” section.

    • Jason Kneen

      Thanks, good spot. Updated.

  8. Yang Shen

    could you please compare similar feature app size?

    • Jason Kneen

      Good idea but will take some time to do as requires the same app to be built in all platforms.

  9. Saket Kumar

    Two things I want to ask author.

    First – Has he heard about System.Data namespace in .NET world?
    Did he check, weather it is supported in Xamarin or not?
    Before writing no inbuilt support for Sqlite in Xamarin.

    Second : If xamarin works with c# , how can you ask it to support access to native sdk with javascript?

    • Jason Kneen

      Thanks for your comment.

      My understanding is that sqlite is a downloadable plugin and not built-in — if that’s not the case, happy to correct the post.

      The post focused on comparing cross-platform solutions, three of which are JavaScript-based. For those, it was necessary to say if they could provide direct access to the underlying SDK from JavaScript. Since Xamarin is C#, it was marked as n/a or “Not applicable” because it’s not.

  10. I’m glad that you’re getting better and better after Axway. I found Titanium too weak for a JavaScript environment, no node_modules, etc… at the first time that I used it. But now I think Titanium can be a usefull tool as it looks a waaay better than React or Xamarin. I just have one more question, does Titanium supports any JS modules? What JS modules can we use to create UI components?

    • Jason Kneen

      Thanks for the comment — you can use node modules and I have some published like RESTe etc on npm. You can use JS modules to create components especially with Alloy — by defining new / or redefining exist tags. Here’s a video on how to do that

  11. Anastasiia

    React Native was launched in 2015, not in 2013. In 2013 it was ReactJS.

    • Jason Kneen

      Thanks for the comment. It was created in 2013 and launched the public in 2015. Will update to reflect that.

  12. Anastasiia

    About ‘Built-in SQLite Support’: React Native has a plugin (https://github.com/andpor/react-native-sqlite-storage), the same situation as for NativeScript.

    • Jason Kneen

      Thanks for the comment — have updated both to confirm it’s not built-in and is available as a plugin.

Comments are closed.

Sign up for our blog!

computer and tablet showing Appcelerator software
Start free, grow from there.
0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- 0 Flares ×