React Native is a framework by Facebook to develop cross-platform (Android, iOS) applications in Javascript
Native refers to core Android and iOS components which are corresponded by React Native components
This is in contrast to apps using webview which display Html components
React Native is built on top of ReactJS, hence learning React Native is quite easy for any JavaScript developer
ReactJS, is an open source JavaScript library to create user interfaces, typically used for web development
React primitives render to native platform UI, meaning an app uses the platform-specific APIs (of platforms Mac, Android etc) other apps do
This enables to create platform-specific versions of components so a single codebase can share code across platforms
With React Native, one team can maintain two platforms and share a common technology β React
React Native is a framework that builds a hierarchy of UI components to build the corresponding JavaScript code
It has a set of components for both iOS and Android platforms to build a mobile application with native user experience
Both React Native and ReactJS are developed by Facebook using same design principles, except designing interfaces
Since it uses same code for creating REACT Native iOS or the REACT Native Android apps and web applications,
a developer just requires to know the mark-up(similar to Html, Xml), stylesheets (similar to Css) and the JavaScript
Javascript
Ability to write apps in Javascript can make it easy to onboard
High productivity
React Native apps are cross-platform, i.e. they can be developed via using a single codebase for both Android and iOS platforms simultaneously
Performance:
When compared to βhybridβ or βmobile webβ apps, React Native apps are compiled into natively written code, which enables it functions the same way on both the platforms with negligible/acceptable lags
Since React Native is a wrapper around native components, native apps have an edge on performance
Fast development :
Development can be expected to be typically faster than working on a native app, a factor in its popularity
Fast reload and Debugging
Ability to hot-reload application on code changes is quite a feature when asked to someone with experience of re-building apps for code changes
Just save a file and edits/updates get reflected on the app
There's also hot-restart to reset associated state
Re-usability
Components are re-usable which can be used to compose pages or other components
React Native components are defined as JSX which is similar to a template language like Html or Xml and can be used with javascript
So these components can be juggled in and around using functions and conditions, and can be used to create dynamic components
UI Focused :
React Native is focused on UI design and its UI is responsive
React Native framework uses native elements, so during any OS UI update, the app's components are also updated
Testability
default template of React Native ships with Jest testing framework
It has support for unit, integration and component testing like layout, gestures etc
End to end tests can be done with something like Detox or Appium
For Continuous integration, React native is supported in Bitrise, Circle CI, Fastlane, Nevercode
Community, Third party libraries
Packages for a number of plugins and use-cases can be found over Github, making it easier to integrate maintained features
React-native community is quite active and updating
Open-source
React Native is open-source and free to use, and provide documentation and community support to help out with issues
With asynchronous programming, waiting for input/network responses doesn't become a bottleneck so in case above statement is a new information, don't give it much weight
React Native consists of a bridging concept between native component and java script component, which can be a constraint
With a wide community, many features can be integrated with third-party packages and might not be available as built-in
Such a scenario is prone to compatibility issues and having to keep up with upgrades and outdated code
Check setup and example applications