Cordova at a High Level

February 08, 2021

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.