The choice of Xamarin was a very good one since it allowed us to make about 80% of the code reusable for both platforms. We also used MVVMCross as a framework, to create even more cross-platform components. By using this technology, we were able to implement all components including view models as cross-platform C# code. In fact, the only native aspect is the UI itself. We were able to integrate the OSX version with the native FreeRDP client which allowed the user to access remote Windows machines through the RDP client running inside the app on MacOS natively.