Editor’s note: This Xamarin vs. React Native comparison was last updated on 25 February 2021.
In this guide, we’ll zoom in on two popular cross-platform development frameworks: Xamarin and React Native. We’ll evaluate each according to criteria such as performance, popularity, and community support and describe the pros and cons associated with using both Xamarin and React Native.
Here’s what we’ll cover:
- What is cross-platform development?
- What is Xamarin?
- What is React Native?
- Is Xamarin better than React Native?
What is cross-platform development?
Cross-platform mobile app development is the process of building mobile applications for multiple platforms, such as iOS and Android, with a single technology stack.
This means that instead of creating multiple versions of your app, each written using the dedicated native language for each platform, you can write your code one time and deploy it on several platforms at once.
Advantages of cross-platform development
Cross-platform development and native development each have their advantages and drawbacks. In this section, we’ll review the pros and cons associated with cross-platform mobile development frameworks such as Xamarin and React Native.
- Write once, deploy everywhere: The most significant advantage of cross-platform development is having a single codebase that you can export to multiple operating systems
- Uniformity across apps: Having a single shared codebase allows you to maintain the same look, feel, and experience across all platforms. All updates and fixes are also automatically reflected everywhere
- Saving resources: Instead of having separate teams with different skill sets working on multiple native versions of your app, you only need one team working on a shared codebase. This allows you to leverage smaller teams and quicker development time to save time and money
- Audience reach: Having your app published on multiple platforms allows you to increase your market reach without any added effort, consequently increasing your chances of getting more downloads and users
Disadvantages of cross-platform development
Below are some of the cons associated with cross-platform development.
- Performance issues: While cross-platform frameworks work on providing apps that are as close to native apps as possible, they still don’t integrate seamlessly with the respective platforms and have inconsistent communication between the native and non-native components, reducing the app’s speed and degrading performance
- Inconsistency with platforms: Cross-platform development tools don’t have all the features offered by each different platform, so you might need to employ some workarounds. It may also take these frameworks some time to get up-to-date with the newest features and updates released by the platforms
- Limited features: There are many native-only features and integrations available in each platform that are not available in cross-platform apps, which limits the user experience you can provide
Cross-platform mobile app development tools
There are many cross-platform mobile app development tools and frameworks available, including:
We’ll take a look at two of the most popular mobile development platforms in 2021: Xamarin and React Native.
What is Xamarin?
Xamarin is an open-source, cross-platform mobile app development framework that was founded in 2011.
What is Xamarin used for?
Xamarin is particularly useful for sharing code and business logic across platforms as well as writing cross-platform applications in C# with Visual Studio. According to the official docs, Xamarin lets you share roughly 90 percent of your app across platforms. That means you can achieve a native look and feel — not to mention native performance — on each platform without writing in multiple languages.
You can write Xamarin apps on a PC or Mac and compile them into native packages, suck as .apk files and .ipa files for Android and iOS devices, respectively.
Xamarin is used to write apps that serve a wide variety of industries, including energy, media, healthcare, transportation, and more.
Apps built using Xamarin include:
- Skulls of the Shogun
- SuperGiant Games
- The World Bank
- Just Giving
- Thermo Fisher Scientific
Why use Xamarin?
Below are some benefits associated with Xamarin cross-platform mobile app development.
- Performance: Xamarin apps are known for having almost native-like performance levels
- Complete development ecosystem: C#, .Net, and Microsoft Visual Studio with Xamarin are all you need to build mobile apps with Xamarin, making it one of the most complete cross-platform mobile app development frameworks out there
- Seamless user experience: Xamarin.Forms allows you to take advantage of standard interface elements by providing a library of templates so that you can reuse your code across different platforms. You can also use Xamarin.iOS and Xamarin.Android for manual customization, if needed
- Free: For small teams
Disadvantages of using Xamarin
Now let’s zoom in on some of the drawbacks associated with writing cross-platform mobile apps in Xamarin.
- Updates delay: Whenever new platform features or updates roll out, there is usually a delay until these changes are reflected in the Xamarin tools, which may cause issues with your app
- Large app size: Xamarin apps can add around 5 megabytes for releases and 20 megabytes for debug builds, making them larger than native apps. This is primarily due to the libraries used to translate C# calls into native calls
- Heavy graphics: Xamarin is great for apps with a simple UI. However, building complex applications or mobile games with Xamarin might not be the best thing to do as you will have to spend a lot of time writing platform-specific code, which defeats the purpose of using it
- Platform-specific code: You might need to re-write some parts of the UI in your app in native code. That means that you will need some knowledge in native programming languages such as Kotlin or Java for Android, and Swift or Objective-C for iOS
Xamarin development tools
The following is a partial list of tools and libraries designed to improve the Xamarin developer experience.
- Xamarin development language
- Xamarin IDEs:
- Xamarin tools:
- Xamarin testing tools:
What is React Native?
Why use React Native?
Below are some of the benefits of using React Native to build cross-platform mobile apps.
- User Interface: Implements native UI components, allowing apps to look like native apps, and therefore providing a high-quality user interface
- Ready-made components: Offers a vast library of UI components, allowing for faster development time.
- Access to native functionalities: Like camera, accelerometer, etc.
- Platform-specific code: Allows you to further optimize your separate native apps by using native code
- Hot reload: Allows developers to apply changes to the apps right away without having to recompile the apps
- Reliability: Developed and supported by Facebook
- Free: Open-source platform
High-profile apps built with React Native include:
- Facebook Analytics
- Facebook Ads Manager
- Uber Eats
- SoundCloud Pulse
Disadvantages of using React Native
For all its advantages, there is a small handful of drawbacks you should consider before deciding to write your next mobile app in React Native.
- Navigation: Navigation built in React Native is not seamless and not comparable to native navigation
- Complex UI: React Native struggles with building complex animation and transitions
React Native development tools
Below is a partial list of tools and libraries designed to improve the Xamarin developer experience.
- React Native development language
- React Native IDEs:
- React Native tools:
- React Native UI components:
- React Native testing tools:
Is Xamarin better than React Native?
Now that you have a good idea of what Xamarin and React Native are used for, pros and cons associated with using each, and what high-profile companies use these frameworks to build mobile apps for their customers, it’s finally time to compare Xamarin vs. React Native.
We’ll evaluate Xamarin vs. React Native according to the following criteria:
One of the most important factors you should consider when choosing a cross-platform development framework is app performance.
While React Native and Xamarin provide near-native app performances, some argue that Flutter’s performance is better because Dart code is compiled to a C-library, which means it’s close to the native code.
This improves communication speed and provides better performance.
However, it’s hard to benchmark performance as it depends on many factors and variables including device, code, app, and features being used.
With over 1.6 million developers across 120 countries, Xamarin has developed quite the user base over the years. However, this is largely due to the fact that it is one of the oldest frameworks out there.
Since its release, React Native has slowly but surely gained popularity, surpassing Xamarin in 2017.
According to Stack Overflow’s “2020 Developer Survey,” React Native is more “loved” than Xamarin, with 57.9 percent of developers expressing interest in continuing to develop with React Native, as opposed to 45.4 percent for Xamarin.
The cross-platform tool development language is another crucial factor to consider when making your decision.
As a result, some APIs might not work, while others may have to be proxied by React Native.
This makes both Xamarin and React Native solid choices when it comes to development languages; both work with a familiar language that can help boost your productivity and save you from enduring a steep learning curve.
React Native offers some prebuilt and partly adaptive components, such as buttons and text inputs. However, most of these components aren’t really adaptive. If you need something a bit more advanced, you would have to build it yourself by recomposing these built-in components.
Xamarin.Forms offers a complete cross-platform UI toolkit consisting of native UI components for both platforms, which are compiled into platform-specific UI components.
You can also use Xamarin.iOS or Xamarin.Android for custom app UI and better performance.
Code reuse is what brings developers to cross-platform frameworks, so how much of the code written with each framework is actually reusable?
React Native allows you to write the code once and ship anywhere, but it also embraces platform differences. This means that from time to time, you have to find out on which platform you’re running and load a different component or set of components depending on the platform you’re running. Still, a considerable part of the codebase can still be reused.
Xamarin prides itself on allowing developers to reuse up to 96 percent of their C# code by leveraging the language. Xamarin also offers forms components, making it better for code reuse than React Native and Flutter which share an average of 60–90 percent of codes.
While both Xamarin and React Native are free, open-source platforms, Xamarin is only free for individuals and small companies. For large enterprises, single-user licenses start at $499 and go anywhere up to $2,999 for a Visual Studio Enterprise annual subscription.
While this might not be a problem for large enterprises, the costs can still add up, which could cause bigger companies to go with React Native.
Support and ecosystem
When choosing a framework, you should also consider its community support, especially if you’re new to it. This includes forums, documentation, tutorials, etc.
React Native has a pretty good amount of support out there. You can easily find a lot of learning material as well or developers on forums or QA sites like Stack Overflow to ask for support whenever you need any help.
For Xamarin, support is quite limited. However, Microsoft provides some free Xamarin courses and learning paths to help you get started.
When choosing a cross-platform development tool, there is no one-size-fits-all option. Both Xamarin and React Native have proven successful in building great mobile apps. Your specific needs and preferences determine which framework is best for you.
LogRocket: Full visibility into your web apps
LogRocket is a frontend application monitoring solution that lets you replay problems as if they happened in your own browser. Instead of guessing why errors happen, or asking users for screenshots and log dumps, LogRocket lets you replay the session to quickly understand what went wrong. It works perfectly with any app, regardless of framework, and has plugins to log additional context from Redux, Vuex, and @ngrx/store.