The popularity of cross-platform mobile applications has grown exponentially over the years. The initial phase of cross-platform applications relied mainly on web view (Cordova, ionic) which lacked performance as well as the native look and feel to the applications. Then came new generation frameworks which don’t use a browser to package the apps.
React Native and Nativescript are two of the most popular cross-platform mobile application frameworks. Both these frameworks have access to native API's. They create truly native components separately for both ios and android.
The road map of both these frameworks shows code sharing for both mobile as well as web applications. Nativescript framework supports vanilla js, Angular and vue for application development whereas React Native supports React js and Vue js. In future technology stack decision for mobile frameworks would depend on the stack used by the web app as code sharing can reduce the development time to a great extent.
Coming to the architectural difference between both frameworks:
Both React Native and Nativescript Angular use virtual DOM. React Native has a separate thread running for UI and background services. Nativescript, on the other hand, uses UI thread to execute the UI. both these approaches have there own pros and cons. In React native executing the UI in separate makes the UI more responsive but the communication between the native API would be slow. The single thread architecture for nativescript makes it simpler for the developer to access UI tree of the application. But when it comes to complex UI nativescript apps seems to become unresponsive. Nativescript also provides a background thread which can be used for handling the long-running task.
When it comes to plugin development to access native APIs. React Native has a bridge which connects with the native APIs.To access the API we will have to write native code for different platforms which would be a burden for the developer as there would be a necessity for him to understand different platform languages. With Nativescirpt we can directly call the API from the JS code itself which is much convenient.