I haven't used Xamarin, so take this with a big grain of salt. But my understanding is that its API is similar to that of the underlying platform, meaning that it's mostly imperative and you write and interact with views in much the same way you would in Objective-C or Java, just in a different and arguably better language (C#).
React Native has a different philosophy -- it intentionally abstracts away the platform APIs entirely, and unless you're writing a native plugin you're only able to access a React-centric API. This is a lot more ambitious and leads to a great developer experience when it works. Some people however feel that it's a misguided effort and that you can't expect to write fluid mobile applications without interacting with the platform primitives directly. The jury is still out on how well it will scale and there definitely still are pain points with both the developer experience and app performance, but many people including myself have written production apps in it and in my opinion it largely delivers on its promise.
React Native has a different philosophy -- it intentionally abstracts away the platform APIs entirely, and unless you're writing a native plugin you're only able to access a React-centric API. This is a lot more ambitious and leads to a great developer experience when it works. Some people however feel that it's a misguided effort and that you can't expect to write fluid mobile applications without interacting with the platform primitives directly. The jury is still out on how well it will scale and there definitely still are pain points with both the developer experience and app performance, but many people including myself have written production apps in it and in my opinion it largely delivers on its promise.