Skip to main navigation Skip to main content

Start a project.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Thoughts on choosing Ionic vs. Xamarin

What we think.

Thoughts on choosing Ionic vs. Xamarin


Over the years, I have been exploring different cross-platforms apps including Ionic and Xamarin. I have learnt both frameworks, and developed mobile applications published on all 3 stores (app store, play store and windows store). As with any framework, there are many pros and cons to both solutions. I hope to guide you through each case and give you some useful insights to consider when you’re making your next mobile app.

 

 Ionic 

Ionic is a Cordova project, but its benefits go beyond that, Ionic is becoming an ecosystem. They offer not only a framework to develop apps but a bunch of satellites like push-notification, device testing and what I like the most - live update.

For those who have already published an app regardless of the store (Apple store, Google play or windows store) you have already gone through the hassle that it is to publish an app. It is a tedious process to create an account, pay the subscription, create an app, create a package, and take screenshots. Then finally, you upload the app and wait . . . and wait. Eventually, the store verifies your app, which can take up to 3 days.

Ionic is a Cordova app which means it is HTML, CSS and JS based, so in theory if you change your entire app look and feel you could have a service somewhere to pull the new HTML files.  You can then update your app without going through the hassle of creating a new version of your app. Ionic provides a live update, so any bug-fixes you have to push to your app do not need a new version and you do not have wait days.

Ionic now supports TypeScript and Angular 2; which makes the development neat. Debugging is as easy as changing the code and saving the file. Ionic will refresh the emulator for you instantly.

Ionic is all about speed, fast development, and bug-fix delivery with a native app feel. All that comes at a cost, Ionic is a Cordova app meaning that it is not very energy efficient. It also does not launch as fast as a native app.


 Xamarin

I remember in early 2016 when Visual Studio was already supporting Cordova and Xamarin was starting to gain popularity in the development community. It was not free, and there was a big learning curve, so I had not given it much thought.

Jump to today, Xamarin now is part of the Visual Studio product and is free. It is the MS solution for cross-platform development and comes with many advantages such as more integration with VS, enterprise scaling and more importantly it is officially an MS product.

Xamarin is appealing offering to compile C# to native code giving you all the power of a native app, integrates with VS and VS Android Emulator. Running your first app is as easy as pressing F5 and VS will take care of running emulator, attach the debugger and so on.

Even though Xamarin allows you to share code between the apps (Android and IOS) you still have two different apps (projects) meaning you have to create the UI twice.

The big learning curve is not Xamarin itself, it is the uniqueness of each platform, e.g. on Android you have a lot of convention in folder names or what resource’s name should be for low, mid and high DPI devices.IOS has a different approach to treat different devices it is not based on name convention, and you will have to learn both.

The advantage with Xamarin, is not having to learn Swift and/or Java on top of that; you can just use C# instead. Xamarin may be the obvious choice or is it?


What's next?

After a long journey learning cross-platform development I would say the most important lesson I have learned is that there is no silver bullet. Ionic still have a lot of benefits over Xamarin and vice versa. For me, I prefer the speed that Ionic offers to deliver a high quality app. In contrast, Xamarin has the stage when it comes to developing native-quality apps for a platform using C#. As is usually the case, both are different tools that can accomplish a similar job. It is really up to the developer to choose the right platform, they will both get you there in different ways.