I would like to have same source set for both the mobile and web. I am hearing many options like Angular2, React Native, NativeScript and many more but unable to decide on the technology.
For what it's worth, you could simply build a responsive site and offer it as an Installable Web App. Then you really would have just the one codebase, built in whatever you want.
There are many ways to achieve the same results in world of javascript. So getting overwhelmed by tons of choices might seem natural. You can either opt for angular2+nativescript combination or reactjs+reactnative for web app and mobile application respectively. If you would like to keep a single codebase for web,android and ios platform then Reactnative web might be a better option. The choice of using react or angular will mainly depend on the use case of your app. If it has lots of dom manipulations and dynamic updating of screens them react is the best choice. However if your app's data is comparatively static and you want to rapidly prototype your app without thinking a lot about the underlying mvc choices then angular is the preferred choice. Keep in mind that angular 2 is still in its early stages and nativescript borrows heavily from angular 2. If you need a detailed analysis between choice of frameworks and other related stuff you can check out my articles here: http://technoetics.in
Marco Alka
Software Engineer, Technical Consultant & Mentor
Especially on mobile, choosing a framework is a lot easier than in the WWW, because you can substract dynamic content generation, data transfer and traffic amount from the experience. However, keep in mind that mobile is a platform with quite the weak hardware, so you should choose technology which uses the least calculations possible for a speedy and battery-saving result.
As such, the best option would be to be minimalistic and stay on basic Cordova. Use lots of HTML and CSS, but JS only when really needed. Try to use VanillaJS instead of bloated libraries (like jQuery).
Now, I do not know what kind of app you want to produce. It might as well be that your app is quite data-heavy, displaying lots of stuff and allowing users to change it. In that case, you might want to turn to Angular-based projects, like IONIC, because Angular is quite nice for response to user interaction.
On the other hand, if you have lots of menues and widgets you might prefer WebComponents (which are, in fact, being standardized as we speak and can already be used with projects, like Polymer) or React-based stuff, like React-Native; though remember that React was built for and by Facebook, so it works best when there is going on A LOT!
You should think about what kind of stuff your app will be able to do and then select one of the passages above and reserach other similar technology to what I already mentioned. Then you can compare them and choose the best option for your own app.