Skip to main content

The competitive landscape of cross-platform development: Xamarin, Flutter and React Native

(Image credit: Image Credit: B-lay)

The days of writing code and spending countless hours porting it to another platform are over. Popular software development tools are increasingly cross-platform, enabling development teams to build apps using a shared codebase that can be quickly and easily adapted from one platform to another.

Cross-platform development tools aren’t anything new, but older implementations frequently created apps that were less responsive and often didn’t adhere to the user interface guidelines of each native platform. Modern cross-platform development tools are an entirely different beast, using native frameworks, user interface elements and even hardware capabilities in order to build apps that are truly “write once, run everywhere.”

Today, there are three leading non-hybrid cross-platform development platforms: Xamarin, Flutter and React Native. With Flutter we may develop not only mobile but also desktop, web and embedded applications. React Native supports non-mobile platforms with community-supported bindings. Xamarin supports mobile and desktop apps (not only Windows but macOS and Linux as well) development. Each platform offers its own set of strengths, meaning developers looking to build a cross-platform app should carefully weigh the benefits offered by each particular toolset.

Here’s a breakdown of each of the major cross-platform development tools as well as a look at some of the unique benefits each solution has to offer:

Xamarin

Microsoft’s Xamarin platform enables the development of native iOS, Android and Windows apps using a single shared .NET code base. With Xamarin, apps are able to take advantage of native user interface controls, native API access and platform-specific hardware acceleration and performance.

Xamarin apps are built in Microsoft’s Visual Studio, an IDE that’s available for developers on both macOS and Windows, using the .Net platform. With C#, Xamarin apps can utilise a shared codebase that covers up to 90 per cent of a platform’s language, APIs and data structure. When building apps, Xamarin uses 1:1 bindings to the native components, making an app that feels entirely native to the intended platform — at the cost of a slight, often unnoticeable performance dip.

Ciklum’s development team has been proficient in the Xamarin framework since 2012, obtaining the highest levels of certification directly from Microsoft. We’ve used Xamarin to develop a wide spectrum of applications across a wide domain area, including (but not limited to) B2B apps, navigation apps, medical apps and IoT projects.

Flutter

Google’s Flutter platform is a UI toolkit to create native IOS and Android apps from a single codebase. Focused on building beautiful user interfaces, speed and productivity for developers, Flutter creates apps that can take advantage of hardware-accelerated graphics and UI elements that are powered by native ARM code.

Flutter apps are written using Google’s Dart programming language. Unlike Xamarin, interface elements are not rendered using each platform’s native UI; instead, Google developed a large number of reactive widgets that feature standard-looking UI elements. This allows for high levels of customisation to an app’s overall interface, making it simple to build branded UIs for apps that go beyond simply modifying a native app’s components. When developing proof-of-concept apps, Ciklum has found Flutter to be one of the most successful platforms for fast development.

For Google, Flutter is also the future. The company has already embarked on developing Fuchsia, its next-generation operating system eventually intended to replace Android. It’s a bold new OS that’s meant to power everything from smartphones to IoT devices — and its apps are written exclusively in Flutter. A great way to future-proof your development plans might be to develop for the platform of the future.

React Native

React Native is Facebook’s open-source framework to build iOS and Android using the web’s favorite programming language: JavaScript. Using a language many web development teams are already familiar with, React Native makes it easy to turn web applications into native mobile apps using fundamental UI building blocks and native code.

React Native emerged from the original development of React, Facebook’s JavaScript library for building user interfaces. Ciklum developed proof-of-concept apps using React Native and found it’s a great solution for web frontend teams looking to launch a native app.

But unlike Xamarin and Flutter, which both use ahead-of-time compilation to boost an app’s performance, React Native uses the iOS interpreter and the just-in-time compiler for Android, resulting in slower performance. While React Native makes it easy to bring a web frontend to life, it’s not necessarily the best platform for building an app that performs as well as a native app.

Which cross-platform development tool is best?

Which cross-platform development solution is right for your developers? There’s no clear winner: All three platforms offer their own significant benefits, and the best tool comes down to the specific needs of your team.

Xamarin is a good option for enterprises and teams with profound .Net expertise. It is a truly Microsoft product -- high quality, mature, deep, though, a bit outdated. Even taking into consideration Ciklum’s extensive experience with this framework, we think it is better to start new mobile projects with its competitor - Flutter.

Flutter is a relatively young framework with lots of potential. Ciklum often recommends Flutter to clients requesting custom branded UIs for their apps due to the platform’s strength at creating unique UI elements. And because Flutter is baked into the future of Google’s next-generation Fuchsia operating system, it’s a great way to stay ahead of the development curve.

For teams of web developers to support the same code base between a website and a mobile app, React Native is likely your best choice. Developers seeking better performance may be better served by Xamarin or Flutter.

No matter the needs of your particular development team, cross-platform development tools make it easy to build a solution once and deploy it everywhere. If you’re setting out to build a new app, do yourself a favour and embrace a cross-platform development toolkit that will save you time, money and energy.

Oleksandr Leuschenko, Head of Mobile Stack, Ciklum