I’ve been a native Android Developer for 10 years (started with Donut 1.6). At my current company we focused on Android since 90% of our target users use Android. When faced with the decision to build the iOS client, we decided to go with React Native. The prospect here is to build the iOS version of the app and then replace the Android client at some point by the same version, eliminating a whole team of Android developers (5 engineers).
Your arguments on why you don’t use cross platform tools seem to be biased. Let me explain why I came to this conclusion:
2. Business Values/Vision: again predicting RN’s/Flutter’s future based on your experience with Xamarin isn’t a good argument. Taking that argument, no evolution would be possible, we would all stick to our good old mainframes and program in Cobol because “there is such a low risk that mainframes/Cobol will ever stop being supported”. Putting your bets on the challenger has its risk but putting your bets on the old horse will with certainty lead you down a path of decline.
3. Time savings: I agree with you that the question regarding the most efficient way to implement an application is a very complex one. From my current experience, developing in RN for iOS is probably faster than developing native Android although we haven’t established benchmarks yet (and that is just for one platform, haven’t even considered that we can with some extra effort use the same code for Android too). Talking about reusability, creation a component with RN that can be used on two platforms is definitely drier than creating two reusable components for two platforms. When it comes to time savings, I don’t see any argument for native development, at least for the type of application we develop (business application).
Overall my impression is that your opinion is biased because of your experience with Xamarin. Xamarin definitely supports some of your arguments but most of those arguments are not applicable to RN/Flutter.