It's been 10 years since Steve Jobs used arguably the best keynote in history to introduce the world to the iPhone, and in doing so began a revolution that changed the way we all use technology.

Shortly after arrived 'Android proper', and not long after that we had the same scene we recognise today: two vibrant app ecosystems delivering world-class (often free) software straight into the hands of millions of people around the world.

This shift in how people use software has changed expectations for businesses. Now you've got an employee organising her wedding using Trello and a customer who’s managing his disposable income with Monzo. Suddenly your piece-of-shit 'but hey it beats the paper based process' solution goes from bearable to genuinely intolerable.

Why mobile apps?

Now great software can be delivered and consumed in a number of different forms. The key to deciding which form is most appropriate for your next project is always to understand the context in which it is going to be used.

The behaviour shifts smartphones have induced have meant that more and more often, the most appropriate form is that of a native mobile app. This does not of course preclude desktop software or responsive web-based software, both of which may even exist and share the same service layer. The unparalleled focus and immersion offered by native mobile apps however, means they're quite simply the best way to empower users while they're on the go.

Go cross-platform or go home

Your IT department might not agree, but BYOD is coming and whether talking about staff-facing apps or consumer-facing apps, the idea of offering only iOS or Android and arbitrarily excluding half your audience is unfathomable. This is why many organisations have compromised and settled for responsive web-based solutions, missing out on the immersion, focus and capability offered by native mobile apps simply because they've deemed them too costly, or the skills to develop them too difficult to find.

A number of different solutions to this cross-platform problem have presented themselves over the years, and at Razor we're 99% sure we've tried all of them. None of them are without their trade-offs, but within the last two years we believe an optimum solution has presented itself. That solution is Xamarin and we're really excited to be building apps with it and by what it can enable our clients to do.

How does Xamarin stack up?

At the time of writing (late 2017), the cross-platform landscape currently looks like this:

  • Cordova
  • React Native
  • Xamarin

Cordova

Let’s start with Cordova: Cordova apps are just websites than run in a wrapper. Frameworks like Ionic and Onsen UI can do a great job of giving them a native-like look and feel, but deep down this is still just a step up from a responsive website with an icon saved to your home screen.

Cordova can be great for prototyping but in our experience not much more than that. The more worrying aspect of Cordova is that many lower-skilled web shops that generally do little more than putting WordPress sites together use Cordova to deliver cheap, poor quality applications from a background which is not centred in software development and pollute the landscape. Businesses can be attracted by the seemingly low price of these but soon find out that they get what they pay for.

React Native

React Native is based on the hugely popular React Javascript framework from Facebook. It is still based on web-technology but as opposed to Cordova it is not a website shovelled into a webview, but uses the OS's native JavaScript engine as its runtime. The UI is native rather than HTML and the resulting apps can offer a near-native level of feel and performance.

React Native has an exciting future ahead of it, but in our experience it's still mostly good for prototyping. As early adopters of Xamarin, it feels to us like Xamarin.Forms (I'll explain in a bit) did 3 years ago. There is still a big startup overhead caused by having to inject the JavaScript bundle into JavaScriptCore, which means even the big players who use it (Instagram, AirBnB,...) generally use it to deliver smaller components within their existing native architecture.

Last but not least, it must be said that React Native developers are prone to being of the magpie variety, which presents a riskier bet when investing in a codebase that you want to last for years.

Xamarin

Xamarin has been around for 6 years now (donkey's years in mobile terms!) and is performant, efficient to work with and truly appropriate for engineering world-class software.

Xamarin allows developers to work with a shared C# codebase and utilise the mature .NET Framework and ecosystem to build business logic. Developers then have two choices in how to implement the user interface: using the 'traditional' Xamarin approach of native APIs ported to C# on each platform, or using Xamarin.Forms which allows you to write the user interface code once and have it run on any of its target platforms.

The Xamarin.Forms approach is similar to the philosophy of React Native but the platform is much more mature and, in our experience, more versatile.

In February 2016 Microsoft acquired Xamarin and since then the platform has hit new highs: the tooling is rock-solid and stable now (which wasn't always the case), and updated versions of SDKs are released very shortly after the native releases from Google and Apple.

Want to talk to someone about your next native app project?

Long gone are the times where you would need to spend upwards of £100k just to get an MVP that runs natively on both iOS and Android. For us Xamarin represents a smart investment on all fronts. We're experts in this field and we're also a friendly bunch so don't hesitate to get in touch to chat to us about your next project.