Based on the advantages, it sounds like choosing to build your app with React Native is a no-brainer. However, there are also some limitations to React Native, so it’s important to take these into consideration before making your decision. The main things to watch out for are:
: If your app requires a decent amount of smooth animation, then React Native may not be the best choice. By ‘a decent amount’, I’m not referring to something like Angry Birds
, but subtle things like Spotify’s transition of the tab-bar/compact player to the large player. Your designers may not always be able to get the animation that they desire, so it’s important to explore whether or not the designed animation affects the performance too much.
: If you have large lists, especially those that include images or video (think Instagram), then scroll performance may quickly become an issue that you’ll need to tackle. A good example of this is Discord. Whilst it still chooses React Native
, the team needed to invest a large amount of time and effort
into improving performance (even having to develop native modules to achieve this).
: There’s no built-in default End-to-End (E2E) testing library for React Native. There are solutions such as Detox
, but these aren’t as performant or reliable as the in-built E2E solutions that come as standard with Xcode and Android Studio.
Why is E2E testing important? It allows automation of critical user flows, helping to stop any bugs from making their way into your production app.
If you’re not careful, bottlenecks can occur, resulting in laggy user interactions, especially on older Android devices. In saying that, there is an open proposal
within the React Native community that looks to improve this, so it’s something to keep an eye on.
: Because of its cross-platform nature, it can be very easy to make unintentional compromises in user experience and flows when building apps with React Native. Whilst writing once for both platforms is a major benefit, there are subtle differences between platforms that ideally should be respected; for example, navigation, search experience, date pickers, and typography