Xamarin vs React Native – a brief history of the cross-platform frameworks
Xamarin had quite an interesting beginning. It began as a project rolled out to support coding in C# language on systems other than Windows. It has since evolved to provide full wrappers for all APIs of both Android and iOS. One codebase could easily get compiled and would run on both operating systems.
React, a web framework by Facebook, allows developers to create complicated UIs compared to previous technologies. When augmented with JavaScript, it is a complete web application development toolset. Earlier, developers used to create apps for mobile devices by embedding their web applications into a webview in the native application. But since the web application couldn’t talk to the native code, this wasn’t an ideal solution to the problem. React Native emerged as the perfect solution. The framework still functioned as React did – they wrote the same code using the same languages. The important difference between React and React Native was that the CSS and JavaScript code would get converted into the native code of the mobile platform which was targeted.
Xamarin, on one hand, was made for the purpose of coding and API compatibility. React, on the other, was designed to be an easy-to-use UI toolkit. Making small and reusable components is the heart of React Native. Xamarin cannot guarantee the ease and flexibility of the creation of customized control because its primary purpose is as a wrapper around existing controls.
Google Trends and survey results from 2019
The following graph shows the interest over time as defined by Google Trends for Xamarin and React Native in 2019 (Numbers represent search interest relative to the highest point on the chart for the given region and time. A value of 100 is the peak popularity for the term. A value of 0 means there was not enough data for this term).
In a survey conducted by Stackoverflow with 90,000 developers (in 2019), the following were the results when it came to React Native and Xamarin:
Xamarin vs React Native: Stackoverflow survey results
Xamarin –
1. 10th most popular among frameworks, libraries, and tools (6.5% of votes)
2. 15th most loved framework (48.3% of votes)
3. 11th most wanted framework (4.9% of votes)
React Native –
1. 6th most popular among frameworks, libraries, and tools (10.5% of votes)
2. 8th most loved framework (62.5% of votes)
3. 3rd most wanted framework (13.1% of votes)
Xamarin vs React Native: Comparison of features
Features of Xamarin –
1. Language: C#
2. Pricing: Open-source
3. Performance: Fully supports 64-bit mode and also provides the fastest UI as it allows to use native tools directly
4. Scalability: More scalable compared to React Native (gives a full set of widgets and provides native look-and-feel to applications)
5. Development environment: Visual Studio
6. Development speed: Controls and Layouts save a lot of time while building an app. Availability of Xamarin and NuGet plugins speed up the process as well
7. Top users: Facebook, Instagram, Airbnb, Walmart, Skype, Tesla
Features of React Native –
1. Language: JavaScript
2. Pricing: Open-source
3. Performance: No 64-bit mode for Android but provides custom UI designing frameworks which use fast native widgets under the hood
4. Scalability: Comparatively less scalable (need to manually style your application in order to give it a native look)
5. Development environment: Any IDE/text editor (e.g. Atom, Sublime Text, Visual Studio Code, Nuclide, Vim Editor, etc.)
6. Development speed: Hot Reloading lets instant reloading of the app without having to recompile the code. Over the Air (OTA) updates allow pushing an update to users over the air, without having to go through the approval process of the app stores
7. Top users: Slack, Siemens, Honeywell, BOSCH, Jetblue
Pros and cons of Xamarin
Pros –
1. Most native
2. Individual UI for different platforms
3. Great for apps that rely on using Native APIs heavily
4. Leverage of NUnit (framework for Unit Tests, native to C#)
5. Profiler to check performance for iOS
6. Easy for MVC and MVVM patterns
7. Amazing support
Cons –
1. The requirement of Visual Studio means you have to shell out money for licenses
2. APIs need to be updated to support the latest iOS/Android SDKs
3. UI Development for different platforms (Xamarin Native)
4. Heavy linking of codes and referencing between .NET frameworks and iOS/Android/Windows
Pros and cons of React Native
Pros –
1. Easy entry for developers because of JavaScript adoption
2. Learn once, write everywhere
3. Live updates (OTA)
4. No specific IDE requirement
5. Availability of 3rd party libraries
Cons –
1. No stable version
2. Not good for apps that rely on using native APIs heavily
3. UI Development for different platforms (Xamarin Native)
4. Does not support all native features in iOS and Android
5. No official APIs (Camera, Bluetooth, biometrics, NFC, sensors)
6. Bad UI/automation testing
7. Not compatible with 64-bit 3rd party Android libraries
8. Difficult to refactor
9. 3rd party libraries can’t catch up with frequent React Native updates
10. No multi-processing support
11. No memory sharing between native and JavaScript
12. Long initializing time
13. More time required on debugging
Conclusion
The choice between React Native and Xamarin ultimately comes down to the project needs or individual’s requirements and the availability/comfort level of developers. Both frameworks have their strengths when it comes to cross-platform development, and at Algoworks, we have dedicated teams available to work on React Native app developers and Xamarin app developers.
Contact us today if you have a project in mind!
References: Pixel Crayons, Coding Infinite, Ego CMS, Stackoverflow