Xamarin – Pros and Cons

When developing apps for iOS and Android most development is done in what are considered native tech stacks, these are Java, Swift and Objective-C. However there are other tools to create high performance user orientated mobile apps. One of these is Xamarin which we are finding is often the ideal solution for our clients as an alternative to developing natively.

Xamarin is a cross platform tool which allows developers to develop most of the code to be compatible with both iOS and Android. Using C# Xamarin is natively compiled so it has some great performance advantages and creates a great native feel for users which has been one of the drawbacks of many other cross platform tools. This is due to platform-specific UI layer Xamarin offers making their apps appear native across devices.

We want to discuss some of the pros and cons of Xamarin as it will not always be the right solution for your app project but it is such a powerful tool that can save time and budget we think you should be considering it as an option.

Pros

Xamarin’s C# code with the .Net framework allows for huge chunks of the code to be shared, normally around 85% meaning this is how much time you can save over developing natively. This reduces time to market and saves your budget or allows your budget to be spent on promotional activity. This also applies to the life cycle of the app as many of the changes or updates needed will be to this shared code.

Unlike other hybrid solutions the Xamarin apps perform like native apps. While measuring performance metrics such as load times, the results are all very similar to native solutions and since Xamarin’s launch in 2011 the gap has been narrowing. We don’t believe there are many apps that will need to worry about the small differences in the performance levels now and these are only set to improve.

Xamarin creates a wonderful native user experience for their apps which is one of the most sought after features and why most people choose to develop natively. Xamarin converts app UI components into the platform specific interface elements and with only the most complex features requiring work in the separate iOs and Android layers of Xamarin. This means that the apps have a very professional experience that users have come to expect.

Cons

It’s wise to consider the potential drawbacks that come with using Xamarin and these might be critical to your project:

There is a delay in supporting any new iOS and Android versions. Xamarin claims “same-day” support, but in our experience this is not always the case; there can be some delays. It is impossible for 3rd party tools to do anything other than play catch up and it takes the development teams some time to implement these changes. They generally turn these changes around quickly but there can be some lag.

There is a small talent pool currently using Xamarin frameworks which in 2018 was only around 7%. This means finding the right people to deliver a Xamarin solution can be trickier than going native.There is growing traction, with the support of Microsoft, and this will ease as time passes but currently there is still a need for good Xamarin developers. The platform is also providing support to developers so engineers with C# or .Net backgrounds are able to get up to speed very quickly.

There is another drawback when developing apps in Xamarin; some work needs to be completed in the Xamarin.iOS or Xamarin.Android layers and developers need at least a basic knowledge of native technologies. This is required to develop apps with a more native look and feel. Most of the work can still be completed without this so when working in teams the workload can be shared between developers with different skill sets and competencies in different languages.

Our Take

Xamarin is a great choice for most mobile projects we encounter. The time and budget saved is obviously a major bonus for most businesses as apps are not cheap to make. Also for business apps where the target audience isn’t a consumer we would almost always recommend Xamarin. The drawbacks on the very top end of feature sets usually aren’t required for these types of apps therefore Xamarin is the best solution.

The problems become more prevalent when developing for consumers, who are a fickle bunch, and if budget isn’t an issue Native development might be the best approach. We do however recommend Xamarin at the early stages of App life cycles. You may be 10% off with your feature set or polish level but you will be able to benefit from your budget going further and helping you take your app to market. 

We believe that in most cases that when above becomes a problem it is because your app project is already a success and at this point redevelopment into native could be discussed. The cross platform alternatives to Xamarin do not have the same level of performance, support or native functionality. If you don’t go native, and most of the time you shouldn’t, Xamarin is probably the right tool for your project.