So what’s it about? React Native and Xamarin are both frameworks for cross-platform mobile app development. This means that developers can maintain one code base and generate executables for both iOS and Android. Without one of these frameworks (or one of several others on the market), developers have to maintain separate sets of code for each platform, which means twice as much effort to develop and maintain the same app. It also complicates keeping the two versions in sync.
Other than the fact that they are both designed for cross-platform development, there are actually few similarities between the two frameworks. They approach the task from different angles, and therefore require somewhat different mindsets to use. Here are some of the major differences:
It’s difficult to call one framework better than the other. Mostly it will depend on what you are accustomed to as a developer. Developers experienced in .NET in general and C# in particular will find it easier to develop in Xamarin. Experienced web developers will typically gravitate towards React Native. People who have actually used both (and have expressed an opinion about it on the Internet) tend to favor React Native, but this is a small community indeed.
When you think about it, the differences and similarities between Xamarin and React Native are mainly points of personal preference for the developer. You can split hairs over whether one framework is better than another with regard to a specific aspect of development, testing, or maintenance, but at some point it resembles an argument over whether Xbox is better than PlayStation. The choice will largely boil down to what the developer or team is most comfortable with. The results—the quality, usability, look-and-feel and performance—of the end product is what really matters, isn’t it? And both frameworks do an admirable job of generating mobile apps that “feel” like native apps on each platform.
Both frameworks continue to improve as they mature and as more developers become experienced with them. The developer communities generally come from different experience backgrounds, so there will be few who “convert” from one to the other. Thus, there seems to be no reason why one would supplant the other, so it’s reasonable to expect they will coexist for quite some time. And in a world filled with so many metaphorical wars, isn’t that a nice thing?