Below is an excerpt from a conversation about learning Cordova that I thought was helpful to understand it at a high level.
My first startup used Cordova directly without Ionic so Iâm intimately familiar. The biggest issue with Cordova is that itâs a collection of plugins so when you go diving in to investigate itâs plugins all the way down.
React Native chooses to make components sort of equal real components written in native so it gets the speed of native.
Cordova instead gives you a browser on top of native and then native hooks into the functions that youâd want/expect. Then you hit weird edge cases. Where are the files located? How is security handled? and for the most part, we have to rely on plugins.
When you want to send users to a browser but donât want them to leave your app (improving funnels or unconverted pages) then you run a real browser (InAppBrowser) in the app browser.
The InAppBrowser is full-fledged but doesnât have the context of being a Cordova app. Now in order to get that browser access to some of the same features you need to interface that inner browser with the Cordova context some of which lives in plugins.
I bet this is much easier to handle with modern Angular. This got to be just a big f*ing mess in AngularJS days because you had $scope
and then a bunch of Cordova scope on top of it.
It was like having two global scopes
and theyâd go out of sync and youâd have to write listeners
and then youâd hit dumb edge cases where users had the app re-launching after coming back from being a background process
and youâd need to reconstruct the app but from a specific pageâŠ
You really have to separate things out and architect with attention to these issues to do it well.