React Native v/s Xamarin: A Cross-Platform Frameworks Standoff

Mobile App Development December 30, 2020
react-native-vs.-xamarin

React Native v/s Xamarin: A Cross-Platform Frameworks Standoff

We are speeding towards a mobile-first world, and businesses worldwide are continuously trying to find ways to ace mobile app development. It can sometimes be a resource-heavy task for business owners to extend their offerings across various mobile app platforms. Cross-platform app development frameworks come in to rescue such businesses. They use a native rendering engine to deliver a close-to-native app experience but with the perks of code shareability and reduced development time and costs.

In this article, we will discuss two such popular cross-platform frameworks— React Native and Xamarin. Both these technologies present a good enough case to get employed in your next mobile app development project. But to find out which one is more suited to your needs, you need to compare the two. We have analyzed both these technologies against various parameters and then put together an unbiased comparison to make the decision. We considered factors like app size, performance, modularity, ease of finding developers, and more that can end up having an impact on your business decision. 

Here’s a glimpse of what you are going to learn about these technologies in upcoming sections:

What is React Native— An Overview

React Native is a popular open-source framework that runs on JavaScript. It primarily focuses on the native rendering of applications that is majorly compatible with Android and iOS. React Native is written with the combination of XML -Esque markup and JavaScript which is also known as JSX. It is backed by the social media giant Facebook, with over 50 dedicated engineers working on the framework at present.

Here are some cool stats for the market usage of React Native:

  • In 2020, 42% of developers are reported to use RN for cross-platform application development. (Source: Statista)
  • 11.5% of developers prefer to use React Native for its native tools and libraries. (Source: StackOverflow)
  • 58.5% of the developing community loves using React Native. (Source: StackOverflow)

Use cases of React Native

  • Simple cross-platform apps
  • Quick prototype applications
  • Apps with simplified UI
  • Apps that look nearly native with responsive UX using FlexBox
  • Apps with reusable components
  • Apps that operate with synchronous APIs

What are popular apps made with React Native?

  • Facebook – Developed a supercharged, supportive mobile UI with simple navigation.
  • Walmart – Improved user experience by building smooth in-app animations identical to native functionality.
  • Bloomberg – Streamlined simple-to-access, personalized content for users with automatic code refreshing features.
  • Instagram – Implemented push notification in the form of WebView without building navigation infrastructure.
  • SoundCloud – Bridged the time gap between updates and patched versions simultaneously for iOS and Android.
  • Wix – Achieved high speed and agility in the development of configurable navigations and screen options.

What is Xamarin — An overview

Xamarin is a popular cross-platform development framework used by developers to build native-like and performant apps. It came into existence in 2011 and was later acquired by Microsoft in 2016. After the acquisition, Xamarin SDK was open-sourced and made available for free within Microsoft Virtual Studio. The framework is currently being used by more than 15,000 companies worldwide hailing from diverse industries such as energy, transport, and healthcare. 

Xamarin leverages a single programming language, that is C#, and the .NET framework, to create mobile apps for various platforms and needs. It also uses XAML which is a markup and data binding language for an app. Xamarin acts as an abstraction layer that facilitates the communication of shared code for the platforms. You can write the applications and then compile them into native application packages (.apk for Android and .ipa for iOS). 

Here are some cool stats for the market usage of React Native:

  • 14% of developers worldwide used Xamarin for cross platform app development.
  • There are over 15,000 apps built using the Xamarin framework, amounting to more than 2 billion downloads.
  • The average market share of Xamarin apps is 1.74% with the highest share of 6.23% for business-related apps.

Use cases of Xamarin

  • Efficient cross-platform apps
  • Apps with native-like performance
  • Apps with access to native APIs
  • Apps with reusable components
  • App that leverage hardware acceleration

What popular apps are made with Xamarin?

  • The World Bank: Released an app called Survey Solutions, which stems from their expertise in C#, to launch their survey tools across mobile platforms.
  • UPS: Got rid of nearly half the code used for platform-specific versions by bringing Xamarin into the picture.
  • Aggreko: Used Visual Studio for Aggreko Technician App that is used by more than 5000 field officers globally.
  • Alaska Airlines: Developed mobile-centric customer experiences with C# that delivered the right information to the right person at the right time.
  • HCL: Adopted Xamarin and Microsoft Visual Studio to synchronize their geographically dispersed teams.
  • Academy of Motion Pictures Arts and Sciences: Xamarin played a key role in Academy’s migration from paper, DVDs, postal mail to digital means.

Pros and Cons— React Native vs. Xamarin

Here are the pros and cons of going with either of the technologies for cross-platform app development.

Pros of React Native

  • Native rendering: Uses host platform to natively render APIs without the need for HTML or CSS markup. 
  • Performance: Translates the markup of an application to mimic authentic UI elements and yet maintain high performance. 
  • Ecosystem: Leverages rich ecosystem and UI libraries to automatically re-render app appearance with each state change. 
  • Debugging: Provides accessibility to intelligent debugging tools and error reporting. 
  • Hot-reloading: Allows hot reloading to add new codes directly into a live application. 

Cons of React Native

  • User Interface: Native rendering of APIs may not support certain native UI elements, which may make the UI look a little off. 
  • Tools and Plugins: Third-party libraries that can be used for better implementation may often turn out to be outdated.  
  • Performance: Does not support parallel threading and multi-processing, resulting in slow performance. 
  • Debugging: Chrome debugger might be inconvenient to edit, inspect codes, and UI elements properly. 

Pros of Xamarin

  • Faster development: Reduces the development time as it uses a single tech stack and shareable codebase. Developers need to make only slight changes to release apps across different platforms.
  • Native user experience: Uses native APIs and toolkits that cater to native app design and performance. Since it leverages system and hardware-specific APIs, it’s nearly impossible to distinguish between a Xamarin and a native app.
  • Single technological stack: Creates apps for multiple mobile platforms using a single language that don’t need switching between environments since everything can be done in Visual Studio.
  • Convenient prototyping: Xamarin.forms gives developers a UI toolkit to develop an interface for any device, resulting in code reusability.
  • Easy on the pocket: Develop, test, and deploy apps for different mobile platforms without hiring multiple teams. Testing and deployment can also be handled by the same team, adding more flexibility to the budget. 
  • Simpler maintenance: Update changes in the source file and they reflect accordingly across the different apps.

Cons of Xamarin

  • Larger app size: Adds 3-5 megabytes for the release and 20 megabytes for debug builds, increasing the app size. 
  • Not suited for heavy graphics: Xamarin isn’t very good at incorporating rich graphic elements and animations. It is therefore not the best choice for gaming and other apps involving advanced graphics.
  • Delayed updates: Updates for latest iOS and Android releases take 1-3 days to get integrated into the ecosystem.

Performance Comparison— React Native vs. Xamarin

Performance matters! Your mobile app will share space with some of the most advanced apps present in your target audience’s smartphones. Performant apps are the need of the hour. Let’s see how React Native and Xamarin fair in terms of performance.

How does React Native stand out in terms of performance?

In terms of performance, React Native has received quite a backslash from the development community. Under the hood, React Native comprises three elements: native thread, javascript thread, and a bridge that acts as a mediator to both threads. Whenever a user opens a React Native application, the native thread sends out a message to the javascript thread via the bridge. The number one reason why a few React Native applications have low performance is due to the fact that the number of messages that the javascript thread can process is limited. So when this limit is crossed, the UI starts to lag. In some cases, the application UI took longer than 16 milliseconds to render the program making the application stutter. 

However, the good news is that the performance of a React Native application can be improved by doing some workarounds and using third-party libraries like Proguard that further optimizes bytecodes. Also, elements like Slowlog help setting performance timers that can help to track performance issues and to resolve them.

How does Xamarin stand out in terms of performance?

A series of tests conducted by a tech consultancy agency revealed the glaring differences in performance across  two of Xamarin’s prevalent environments — Xamarin.Forms and Xamarin Native.

Xamarin.Forms

While Xamarin.Forms presents 90% code reusability, the app performance often falls behind its native counterparts. For common functions of mobile applications such as booting, processing API requests, serialization/deserialization, and image loading/saving, Xamarin.Forms’ apps showed weaker metrics compared to native apps. However, a lot of organizations and developers are ready to sacrifice a bit on performance for the operational feasibility and cost effectiveness they get in return.

Xamarin-performance-boot-speedXamarin Native

The apps created in this environment for Android turned out to be comparable with native apps in terms of performance. Surprisingly, there were a few instances like SQL BulkInsert operation where Xamarin.Android seemed to perform better than native apps. Consequently, it’s safe to say that Xamarin.Android is a great alternative to native apps.

Xamarin.iOS apps, however, were not able to keep up with the performance metrics of native iOS applications as did Xamarin.Android, but that’s a common occurrence for cross platform app development. There are a plethora of factors that affect app performance including backend performance, and Xamarin Native lets you create apps that can’t be differentiated from natively developed ones.

Application Architecture— React Native vs. Xamarin

Sound app architecture enforces sound programming patterns and assumptions and helps you solve complex problems that show up during the development. Both React Native and Xamarin sport varying application architectures. Let’s assess the differences between the two technologies in terms of app architecture.

What kind of architecture does React Native support?

Under the hood, React Native possesses a bridge between the Native thread and JavaScript thread. As per this functionality, the JavaScript code communicates with the platform and the Native API. In iOS, React Native uses JavaScriptCore separately to run all codes, whereas it bundles the JavaScriptCore within the application in Android. Whilst this might increase the native functionality, it also increases the app size, resulting in performance issues or device lag.

What kind of architecture does Xamarin support?

The Xamarin environment supports a whole lot of architectural patterns and isn’t bound to a single architecture as it happens in many frameworks. However, there are a select few patterns that turn out to be more useful compared to others. Model-View-Presenter (MVP) is the way to go when designing native mobile applications with Xamarin. Similarly, you’d want to build Xamarin.Forms apps on the Model-View-View-Model (MVVM) pattern to make the most out of Xamarin’s offerings. Some other useful patterns for working in the Xamarin ecosystem are Command, Publish/Subscribe, and Singleton.

Suitability for building complex apps— React Native vs. Xamarin

The ability to build a complex app using a cross-platform development framework can have a lasting impact on your bottom line. Let’s see how suitable these two technologies are for building complex mobile apps.

Is React Native suitable for building complex apps?

Yes, you can leverage React Native to build complex native apps. But it’s important to note that will be likely to be possible only when you involve native app development along with React Native. At that stage, your application is more likely to be hybrid than cross-platform. The entire process of building complex apps with React Native does not only involve Javascript but the utilization of native development skills.

Is Xamarin suitable for building complex apps?

Xamarin is natively compiled, making it one of the better cross-platform development options to create performant apps that look and feel like native apps. The sound functioning is a result of the combination of C# and native libraries under the .NET framework-hood. Additionally, Xamarin utilizes the capabilities of native platforms through APIs, which further allows developers to add complex functions to apps. The fact that you can also create platform-specific UIs favors building complex apps on the framework. Xamarin also supports apps for wearable devices such as smartwatches.

Ease of Testing— React Native vs. Xamarin

A mobile app needs to go through rigorous testing before qualifying to be on an app marketplace. Moreover, app stringent app testing is necessary to deliver a pleasant experience to the end-users. Let’s see how easy it is to test apps built on these two cross-platform frameworks.

How easier is it to test a React Native app?

React Native boasts of no official support for UI level testing and Integration testing. Furthermore, there are only a few unit level testing frameworks available to test RN apps. No official support means developers have to rely on third-party tools like Appium and Detox and unearth bugs with the help of them.

Moreover, It is still relying on third-party libraries for build and release automation. Succinctly put, the entire framework doesn’t offer any automated steps to deploy the iOS apps to App Store. Instead, RN suggests developers define the manual process of deploying the app through Xcode.

How easier is it to test a Xamarin app?

With Xamarin, you can easily test all the features of the app across thousands of devices to get rid of bugs before the release and shorten the development cycle. It also facilitates automated and stern UI testing that filters out all the anomalies in the app by replicating user-behaviour. Be it taps, swipes, rotations, or even waiting for UI elements to load, it’s all possible while testing with Xamarin. Apart from being convenient, testing with Xamarin is quick as you get results from comprehensive tests in a matter of minutes before application deployment.

Communities around React Native and Xamarin

How big is the community around React Native?

Since the launch of React Native in 2015, its community has been growing, and the number of contributors to the framework on GitHub is the proof of that. Currently, there are more than 2,207+ professional developers who actively share their experiences. Even a novice can easily seek help in developing React Native applications. In fact, there are over 19.8k live projects where developers come together to resolve existing issues. Some of the common platforms where you can find other React Native developers, projects, conferences, and live events are:

  • Meet Up
  • Slack
  • Discord
  • Telegram
  • Reddit
  • Stack Overflow

How big is the community around Xamarin?

According to Statista, 14% of developers worldwide use Xamarin for cross-platform app development. The community consists of close to 1.4 million developers spread across 120 countries. These are some healthy numbers considering the stiff competition in the cross-development framework ecosystem. This open-source framework has more than 60,000 contributors that hail from 37,000 different companies. You can easily get in touch with active Xamarin community members on platforms like Xamarin Blog, Stack Overflow, Xamarin Q&A, Reddit, etc.

Modularity support for React Native and Xamarin

Does React Native support modularity?

React Native may offer less modularity support. Android, iOS, and Reactjs developers might find it hard to correlate with each other. Without expertise, different teams may have issues with code fragmentation in React Native. However, React Native offers the possibility to combine simple native elements of different OS platforms for different developers to work together to some extent.

Does Xamarin support modularity?

In a word, yes. You can use Prism as an effective tool to bring about modularity in your Xamarin applications. Then, there are a few libraries such as ReactorUI that let you follow a component-based approach. However, modularity isn’t as intrinsic a property of Xamarin as it is for some other cross-platform development frameworks. But with the use of certain tools and libraries, you can simplify complex projects and enjoy the benefits of modularity.

User experience— React Native vs. Xamarin

At the end of the day, if app users aren’t satisfied, all your efforts may go down the drain. It is, therefore, necessary to deliver a satisfactory user experience. Let’s see how these two technologies fair up in this department.

React Native’s ability to give the best user experience

Android’s Material Design and Style Design in iOS are transforming by the day, and it’s tough for React Native to keep up with the constant change in the requirements of native platforms. Additionally, ready-made React Native UI kits such as React Virgin, Shoutem, and Ant Design make it even more difficult to create consistent designs across platforms. However, some valuable components like ScrollView fixed header, Modal components, Activity indicators, Snap carousels, and Pagination components help greatly in improving the UX across multi-platform.

Xamarin’s ability to give the best user experience

In Xamarin, you can create platform-specific UIs and access all the native APIs such as Bluetooth, SDKs, etc. to bring apps to life. Since Xamarin uses native UI controls to bring hardware acceleration into picture, the apps do far better than solutions doing code interpretation during runtime. Developers can also add elegant themes, charts, UI controls, and graphics from Xamarin’s component store. What’s more, you can also leverage material design components to build custom applications.

Code Maintainability— React Native vs. Xamarin

It determines how easily the components can be modified to deal with faults, make adjustments with respect to a changed environment, and improve performance. Let’s see where the two technologies stand when it comes to code maintainability.

How convenient is it to maintain code in React Native apps?

In React Native, upgrading and debugging the code is a pain, perhaps. When you fork the code to suit your application, it interferes with the framework’s logic thereby slowing down the development process. In addition to that, most of the native components might have a third-party library dependency. Often these libraries are outdated and cannot be maintained properly due to the issues that come along with it by default.

How convenient is it to maintain code on Xamarin apps?

One of the bigger headaches during cross-platform app development is code maintenance. The sheer number of iterations make it tricky to implement a simple change across the different platforms. However, that’s not the case when working with Xamarin. All you need to do is make changes in the source file, and it will automatically reflect across all the apps. This makes bug fixes, updates, and adding new features a cakewalk in Xamarin.

Application Size— React Native vs. Xamarin

Even though smartphones now sport bigger batteries, users are ever so cautious as to which app deserves a piece of their phone’s memory. Smaller apps bring bigger benefits. And since cross-platform app development ends up bloating an app, it’s always a key consideration when choosing a technology. Here’s what’s up with app sizes on React Native and Xamarin.

What is the minimum application size in React Native?

The initial size of the Hello World app with React Native is 7 MB and when native dependencies were added, the size increases up to 13.4 MB. React Native can iterate applications faster and at a minimal size, better than Flutter.

In addition to that, enabling Proguard and using enableSeperateBuildPerCPUArchitecture element will reduce the size in large by auto-generating split builds for all native and external libraries.

What is the minimum application size in Xamarin?

The Hello World app can be as large as 15.6Mb for Xamarin.Forms and as low as 3.6Mb for Xamarin.iOS. Whereas the Xamarin environment adds a considerable overhead leading to larger app size, the smaller file size for native apps is a result of Xamarin Libraries, Mono runtime, and Base class library assemblies used in Xamarin.

The Learning Curve—React Native vs. Xamarin

You’d want to know how easy or difficult it is going to be to incorporate a cross-platform framework into your existing infrastructure. If it’s easier to get the developers acquainted with a new technology then you can easily plan future operations with better clarity. Let’s see what’s the learning curve on React Native and Xamarin like.

How good is the learning curve of React Native for developers?

Learning React Native is considerably simple for those who have built applications using JavaScript. But, web development is different from mobile app development which is why mobile developers find it relatively difficult to learn and implement the framework. Over time, React Native has released various libraries, extensive documents, and tutorials that improve the learning curve.

How good is the learning curve of Xamarin for developers?

To be proficient in Xamarin, one needs to have the knowledge of C#, mobile development, and architecture. Since C# is quite a popular programming language, most developers don’t take long to adapt to this environment. This is not to say that developers with limited experience in the Microsoft ecosystem wouldn’t take a tad more time to get a grip on the framework. Thankfully, Microsoft offers learning resources for developers to get familiar with the various components in Xamarin.

Hiring Developers— React Native vs. Xamarin

How convenient is it to hire React Native developers?

The average yearly rate of hiring good React Native developers in Western Europe is $78,000. In the USA, the average hourly rate of hiring a React Native Developer goes up to $61.54 per hour. To build an application with React Native, you’ll need about 5 to 10 developers. This team can be a mix of talent with at least 2 React Native experts to guide the team through the development lifecycle. Additionally, since code maintenance of different platforms is crucial for the success of a React Native application, it’s recommended that you team up with developers who have a diverse technical background.

How convenient is it to hire Xamarin developers?

Most stats suggest that there are more Xamarin openings than developers available in the job market. It is why finding the right Xamarin developer might be tricky for you. Although the cost of hiring a Xamarin developer varies based on the region and nature of projects, you can expect to pay anywhere between $20 and $50 per hour. In the US, the salary for a Xamarin developer ranges from $7,700 to $10,000.

However, if you already have a team of skilled C# developers, then introducing them to the Xamarin might not be a bad idea after all. A lot of organizations have already adopted Xamarin for this reason and so could you.

Conclusion

Both React Native and Xamarin bring some unique set of advantages to the table and some flaws, as well. However, if you are still in two minds as to which technology to choose, here’s a quick cheat guide to help you out.

Choose React Native if you wish to:

  • Develop cross-platform apps with simple UI that are easy to maintain.
  • Create native-looking apps on a tight budget without compromising much on the performance.
  • Leverage various ready-made solutions and libraries to quickly deploy app solutions for your target audience.
  • Create apps with reusable components while also having the capability to create prototype applications.
  • Develop apps that load fast and provide a smooth user experience.

Choose Xamarin if you wish to:

  • Develop performant cross-platform apps with native-like user experience.
  • Create apps that can leverage hardware acceleration for better performance and have reusable components.
  • Create multiple apps using only a single programming language i.e. C#.
  • Leverage your existing team’s C# skill for mobile app development and create apps that take less time to market.
  • Create cross-platforms apps that are easy to test, fast to make, and light on the pocket.

React Native vs Flutter Sidebar

Xamarin-vs-Ionic

Hiren Dhaduk

Hiren is VP of Technology at Simform with an extensive experience in helping enterprises and startups streamline their business performance through data-driven innovation.

Your email address will not be published. Required fields are marked *

Areas We Serve