React Native: The trend for using React Native has improved considerably. Thousands of websites use this tool, from Fortune 500 companies to new startups. Lazada, a German e-commerce company, the Guardian, a British daily newspaper, ScienceDirect (scientific journals and articles), and the Frontline Recruitment Group are just a few of the websites using React Native. That's not all. Facebook, Skype, Facebook Ads Manager, Tesla, and Walmart also use this tool.
Xamarin: Acquired by Microsoft, and a part of its Visual Studio development, Xamarin is 6 years old and has been the technology choice for 15,000+ companies. Apart from developing cross-platform apps, it lets the developers reuse code, supports a test ecosystem and debugs products. Some of the famous apps made with the platform are Novarum (medical app), CA Mobile (mobile banking), Story (movie maker) and Foundbite (audio sharing).
Winner: Both have strong market shares.
React Native: A free tool that you can build for both Android and IOS platforms.
Xamarin: There's a free version, but you need to spend extra for the premium tools.
Winner: React Native
Xamarin: The language, C++, makes both JIT compilation and AOT (Ahead of Time) compilation possible. However, as JIT compilation is not possible with iOS, Xamarin AOT-compiles the application. Except for some limitations, code that is AOT compiled runs faster. On Android, the default is JIT but it can be configured to use AOT.
React Native: It allows the developers to choose an IDE they are comfortable with. A common practice is to use Expo to debug and develop a React Native application. A great built-in feature of React Native is hot loading, which does not require a full application reload after code modification.
Xamarin: This is more powerful because you can write a code for an iPhone app on Windows and compile it for Mac. However, you need a different platform for the build. And this process is much more powerful than RN because Expo doesn't support everything.
React Native: Uses the more modern one-way data flow that comes with React. It could be more productive, but only in a marginal way. If you are happy with the recent changes in the JS web development, then you will definitely love this.
Xamarin: If you are an ASP.NET MVC, Web Forms, or other MV* developer, you would prefer Xamarin. It works in the MVVM framework style.
React Native: The components can all be found in place, with excellent documentation.
Xamarin: The components are split between NuGet and the component store, but the documentation part could be improved.
Winner: Equal quantity and quality of components, but React Native is slightly better.
Community and assistance
React Native: A younger tool and the developer support is there, but much smaller. Often, the depth of knowledge is small.
Xamarin: A great deal of assistance can be found on websites like Stack Overflow, blogs, and community support forums.
If you want to check the testing capabilities of the tools, then both are really good. Visual Studio Code has amazing debugging capabilities for React Native, while you can easily write unit tests in Jest. You can debug in the Xcode Simulator for iOS with Xamarin.