With Flutter, we initially had a native Android app and a React Native iOS app. Managing two codebases was obviously painful, and React Native had significant performance issues, and we also struggled with the lack of stable libs, and the breaking changes between releases. Flutter came along and we were able to share 90% of the codebase across Android and iOS apps, and were quite happy with 60FPS rendering of native UI.
I've heard a number of people having issues with React Native. I'm curious if that is just an immaturity thing or something more fundamental.
React Native, it was both. Fundamentally, it uses a JS engine that acts as a bridge, and that can be a performance bottleneck depending on the usecase.
Flutter sounds like a good compromise between Native code (Swift/Kotlin) and React Native then.
If you need high performance but no code sharing - use Native code (Swift/Kotlin)
If you code sharing but okays performance - use React Native
If you need both high performance but code sharing - use Flutter