Xamarin provides a bunch of generic controls that act as bridges to their corresponding platforms. It has enough flexibility that you can build the UI code from scratch for each platform, but you could probably put together a simple form based application with a single UI source.
This says you can share 96% of the code base across platforms:
Xamarin Forms dev here. This is true. I wrote an audiotour app and I was able to reuse everything. The only thing I couldn't reuse was the audio player because of differences between platforms, but still you can use plain old Xamarin.Android and Xamarin.iOS. Pretty good results and you save ton of time.
curious is there design pattern for that? could you still have one code base similar to how different processors are compiled? or some kind of wrapper component? seems like there should be someone to write the code once and not need to make a copy.
Yes, and that is why those apps look and feel better - you use OS native widgets that users are familiar with and feel as their OS does.
Meanwhile you still can share most of the code in the app.
That's where React Native comes in ;)
Build for IOS/Android/UWP/Ubuntu/OSX all in the same base.