Because that's incorrect. Yes, it outputs `UIView` objects. But that's far from being native. Just a few examples: a button/"touchable opacity" is not a `UIButton`, it's a custom view where RN fakes the touch animation in JavaScript(!). Gesture recognizers are faked in JavaScript. Animation doesn't use Core Animation but fakes it either in JavaScript or in custom C++ implementation in the Animated module. It's one big lie to call React Native "Native".
Ok, thanks for a more informative reply, I didn't know about how some of the interop between JavaScript and native broke the native bits. That's good to know. Still though, this is a subset of native functionality. It sounds like there can still be two apps one native one 'react native' that are indistinguishable as long as they use that subset. No?
No. I only gave you small examples. For example, system margins and guides are not taken into account by the RN layout system, causing apps to look non-native. Almost everything is implemented reinvent-the-wheel style in RN, which makes it uncanny valley (and thus, very easy to spot).