Picking between Xamarin and Apache Cordova

Now that Visual Studio has great integration between both Xamarin and Apache Cordova, I often get
asked how to choose between the two.

 Xamarin is generally better when you:

  • Need to do apps with less shared UI, more shared logic. Xamarin.Forms changes this, but it’s still very new at the moment
  • Have .Net developers
  • Need a high performing, native looking app

Cordova with Visual Studio is generally better when you:

  • Want to share more UI between platforms, with fewer native looking elements.
  • Share UI assets with a mobile websit
  • Have HTML \ JS developers
  • Are OK with a somewhat less smooth UI on older Android and iOS devices, or don’t plan on supporting older Android (pre 4.2)

The Xamarin experience for developers is generally better than the
Cordova experience, having been around a bit longer. Cordova can be really
difficult if you don’t use the new Visual Studio integration.

Xamarin has a license cost, Cordova does not. However, the difference in
the license cost can quickly be eaten up by having to do more work to account
for different Android versions on a Cordova app.

Xamarin has a much greater need for access to a Mac while developing iOS
apps than Cordova. Cordova apps can be built against an iOS
emulator running in Chrome
. You absolutely still have to do testing against
physical devices.

My preference is usually for Xamarin, but there are situations that are
better suited to Cordova-based apps. I wouldn’t do Cordova apps without the new
Visual Studio support.

I’m finding more and more services companies using Xamarin, and more
startups using Cordova. Services companies can quickly recover the Xamarin
license cost through improved productivity, whilst startups have a need to keep
costs down, whilst being real responsive to changes in their product on
multiple platforms, including the web.

Lots of agencies still do only native app development. I view this as
half ignorance and half rort to make more money out of customers who don’t know
better. Apart from the higher initial cost, the real bite comes in the total
cost of ownership over the lifetime of the app, since each fix and change needs
to be multiplied by the number of platforms. The product they deliver rarely
justifies the cost, and they often reuse codebases they’ve already written but
still charge customers for it. Native development has a place, but it’s
definitely not for a cross platform forms over data app.

Hope that helps next time you're faced with a decision.

Till next time,

Hannes Nel

Technical Evangelist, Microsoft New Zealand

Twitter: @hannesn