React Native is an open source framework that was born on Facebook with the purpose of creating native and multiplatform mobile applications, all this from the same code base written in JavaScript and React.
Due to its effectiveness, it has been used by companies such as Microsoft, Tesla and Instagram in some of their apps, since it allows the applications created with it to be executed on both Android and iOS without having two separate projects in two different programming languages.
Code reusability: React Native's ability to reuse code for two platforms results in less development time and makes it easier to quickly publish updates.
An extensive development community: since React's native components are open source, it opens up the possibility of having many more updates and finding more information about the platform.
In addition, React Native is the most used framework in JavaScript for native apps, there are many books and guides that can be found on the web for the developer to continue expanding their knowledge.
Developing with React Native is low cost: being a cross-platform framework, the cost of developing an application with it is lower than doing it with another technology. You don't need two separate teams to handle Android and iOS, even if you already use React on the web you already have an approach to mobile development.
Performance similar to native: React Native by not converting the code and connecting to native components, achieves a performance similar to apps created by Java or Swift, this means that the speed of the app is not affected in the multiplatform development process.
Lacks some custom modules: Even though React Native was created several years ago, it still lacks some custom modules. Sometimes when some functionality is needed that is not yet supported, three separate code bases may need to be run: one for React Native, one for Android, and one for iOS, rather than just one.
Compatibility and Debugging Issues: Despite being used by large technology companies, React Native is still in a testing phase, which in practice means that developers may have problems with package compatibility or debugging tools.
It is necessary to have knowledge of native development: React Native joins JavaScript with the native mobile code, so if the developer in charge of creating the application does not have knowledge of native mobile development, will have difficulties incorporating native code in the code base from React Native.