Xamarin Forms provides platform independent UI framework, however the code is natively compiled, it gives you speed but deployment is lengthy process. Xamarin Forms makes it easier to create and deploy custom UI components using Custom Renderers.
React Native on other hand provides quick updates but to achieve native performance, and for custom UI components, you need to write code in different platforms in different languages.
With Web Atoms, we decided to bring all features of React Native in Xamarin Forms to get the best of both.
We are always in need to create native components when framework components don't provide exact features we need. In case of React Native, we are left to create new components in Java/Kotlin for Android and in Swift for iOS. In Xamarin Forms, we can create custom components by combining existing platform neutral controls or write custom renderers in different platform but all in C#.
In Xamarin Forms you can reuse all existing NuGet Packages. There is no support for NuGet packages in React Native as it is not built on .NET framework.
In Web Atoms, you can reuse all existing NuGet Packages.
In Web Atoms, you can use most of NPM Packages as well.
Application deployment is becoming lengthy day by day, the queue to publish new update is increasing and also subject to approval.
Live Reload allows user to refresh the app version without having to download the app from the respective store.
In Xamarin Forms, it is not possible to provide live reload as entire code is natively compiled and shipped via store.
In React Native and Web Atoms for Xamarin Forms, you can provide live reload in production.
Xamarin Forms has excellent One, Two way binding and MVVM Pattern support.
React Native is purely functional and there are no inbuilt binding/MVVM concepts.
Xamarin Forms has simple dependency injection and Prism provides advanced dependency injection.
React Native does not have dependency injection, but there are other frameworks in NPM in which you can achieve same.
If you have your backend and most of your front end application already has C# code, reusing them in Xamarin Forms is very easy.
Using existing C# code in Web Atoms is as easy as using in Xamarin Forms. In fact, you can use Web Atoms in existing app without having to rewrite most of its parts.
Since Xamarin Forms apps are compiled natively, you cannot allow users to switch the version, this is very useful in beta test, early adopter tests. For admin and investigation purpose.
|Feature||Xamarin Forms||React Native||Web Atoms for Xamarin Forms|
|Support for NuGet Packages||Yes||No||Yes|
|Support for NPM Packages||No||Yes||Yes|
|Live Reload in Production||No||Yes||Yes|
|Binding and MVVM Pattern||Yes||No||Yes|
|Dependency Injection||Requires Prism||Requires other packages||Inbuilt|
|Reuse Existing C# Code, if you already have various application logic already available in C#||Yes||No||Yes|
|Side by side versioning (Use different versions of Application without uninstall/reinstall)||No||Possible||Yes|
|Exception Line Numbers in Production||No||Available||Available|