My team has been working on our app for 1.5 years now and of all the technical choices we've made, React Native is probably our favorite. It's taken us through the prototyping stage and all the way to production without many issues. Granted, we're a very small engineering team of 3.
Pros
- We haven't done performance tuning and haven't had any user complaints about performance (it's a multi-channel chat app)
- Most of the time, changes "just work" on both platforms
- Javascript :D
- Development velocity is great, especially w/ UI changes
Cons
- Wish we had better text input control
- You still need someone who knows about native app development on each platform
- Upgrading versions can cause breaking issues (this has gotten better)
- Lesser used 3rd-party packages are often incomplete across platform, so a fair amount of patches
- Changes on one platform have the potential to break the other platform (so testing can require a lot of back and forth)
We're building a chat app in RN. Last I checked, the RN components do not support the functionality that you mention out of the box.
We are using a fork of GiftedChat which has generally been a positive but not stellar experience (https://github.com/FaridSafi/react-native-gifted-chat). I understand includes some fairly clever (perhaps hacky?) and extensive changes on top of RN's components to mimic the interactions we generally expect in a chat UI. It's been performant for the most part but is quite opinionated.
I would love to know if there's a better, more modular solution out there.
We're also using a fork of gifted chat; pretty much use it for the layout measuring and the inverted scroll view. Hoping to move to FlatList at some point!
Pros
- We haven't done performance tuning and haven't had any user complaints about performance (it's a multi-channel chat app)
- Most of the time, changes "just work" on both platforms
- Javascript :D
- Development velocity is great, especially w/ UI changes
Cons
- Wish we had better text input control
- You still need someone who knows about native app development on each platform
- Upgrading versions can cause breaking issues (this has gotten better)
- Lesser used 3rd-party packages are often incomplete across platform, so a fair amount of patches
- Changes on one platform have the potential to break the other platform (so testing can require a lot of back and forth)
edit: formatting halp