React Native is Facebook's solution for the deployment of cross-platform apps. Officially launched in 2015, React Native grew out of an internal hackathon in 2013 to develop a hybrid app framework to leverage the company's own Spartan JavaScript library, React. Since the company uses it for the development of its own apps (including Instagram and Facebook's Ads Manager app, among others), it has attracted high-level adopters such as Bloomberg, SoundCloud, and Walmart.
In contrast to C#-based hybrid app development environments such as Xamarin, React Native takes a decoupled, piecemeal approach, where JavaScript segments operate effectively as widgets in a wider app ecostructure.
React Native apps also use a Virtual Document Object Model (DOM) to allow for easy updating of these discrete JavaScript-driven components in a flexible hierarchy. Apps distributed from React Native benefit from Hot Reloading, which can inject new files and data into a stream without changing the active state of the app.
React Native apps repurpose the UI building blocks of the host OS for fast response time and visual integration. They can also feature blocks of native code as necessary, a practice that Facebook implements for its own apps.
The decoupled architecture of React Native tends to reduce framework lag considerably, and React Native apps compare favorably to those written in lower-level languages such as Swift. However, it's necessary to pay attention to optimization bottlenecks such as unnecessary re-renders in order to achieve the advertised 60 FPS from your React Native app.
Since React Native is a component-driven library rather than a rich framework, the functionality one might expect in a feature-complete development suite will need to be added via components.
For instance, React Native has no out-of-the-box state management tools, for which shortcoming a third-party solution, such as Redux, will be necessary. External tools will also be needed for app testing, in areas such as unit testing (Enzyme is a popular choice), JavaScript testing (Facebook uses Jest), DOM testing (react-testing-library, for instance), and component testing (Enzyme or unexpected-react).
The laissez faire philosophy behind React Native will entail greater initial planning than with lower-level programming environments, since the environment itself has to be developed before work can begin on the app. That means defining the architecture and anticipating any components or services that will be needed to support it. This is likely to slow down initial development, as a trade-off against later ease of use.
React Native directly supports iOS and Android platforms, but the industry interest has prompted compatibility projects from some of Facebook's major tech stablemates. For instance, Microsoft maintains its own framework to facilitate the development of Universal Windows Platform (UWP) apps with React Native.
As for Apple, the React Native macOS GitHub repository forks the library to the OSX desktop platform. To make things easier, the advent of Apple's own Project Catalyst could make separate iOS device development channels redundant.
As of 2016, React Native operates under a permissive and short MIT license that allows commercial use. However, the controversial history of React Native licensing signifies that the terms of use could be reviewed again by Facebook in the future.
At 10.8%, React Native is high in the top ten developer environments for 2019 according to Stack Overflow. Nuevoo estimates the average salary for a React Native developer at $120,000, while PayScale places it at $91,000.
In terms of online documentation, Facebook maintains a list of resources. These include a frequently updated blog, a Twitter account (for React), and a bug report template at GitHub. There's also a dedicated Facebook group, a chaotic Discord channel, and a less-than-lively spectrum chat domain. The best resource for developers remains Stack Overflow, which currently hosts nearly 56,000 questions around React Native.
Enterprise projects where responsiveness is critical can benefit greatly from the ability to switch between React Native's very abstract node modelling and into native code as required. The backing of one of the planet's richest tech entities also means that you're getting a mature, rich and highly performant codebase without any of the commercial 'gotchas' featured in some of the rival frameworks listed here.
On the other hand, your project is likely to get off the ground later with React Native than with any comparable rival frameworks, so it's important to be realistic about this upfront investment of time and money.