It's not a lowest common denominator. You can have a different UI on Android and iOS, and share whatever code can be shared.
Additionally I like the React lifecycle better than Android's finite state machine where you always have to know where in the cycle you are, what's next and what's before, etc.
It's using native UI elements but they're still wrapped in a higher level abstraction, which obscures details and nuances of the UI stack on each platform. You're still giving up precision and control in exchange for a cross-platform abstraction, just not as much.
Well, you can use a common abstraction for elements that make sense on both platforms and have platform-specific components that does exactly what you want and that you will use only in one version.
If the wrapper doesn't do what you want, you can still write that portion in native or write your own wrapper with an underlying implementation that does exactly what you want.
Additionally I like the React lifecycle better than Android's finite state machine where you always have to know where in the cycle you are, what's next and what's before, etc.