
So although Cordova fills an important role as the most cost-efficient way to deliver a “website in an app,” I decided it wasn’t a great choice for a new project. Additionally, the support for native smartphone APIs is patchy and sometimes unreliable even simple things like media controls can be frustrating to implement. Even a website that works perfectly in a mobile browser may need substantial work to look and feel right as a Cordova app. Both the process and the end result are full of unpleasant surprises. While this is by far the cheapest way to bring a website to both app stores, and in theory can accomplish nearly everything a native app can, in my experience this is anything but frictionless.

Apache Cordova turns websites into mobile apps by putting them in a WebView (basically an iframe for native apps) and packaging that WebView as an iOS or Android app. I have high hopes for the future of PWAs, but right now I don’t see them as an effective way of reaching users. For it to show up on someone’s home screen, the user will have to visit the website and click the Install button at the bottom of the screen, which is an unfamiliar operation and goes against most users’ muscle memory of swiping away or clicking X on anything that covers site content. Typically, there’s a lot more to be done surrounding data caching, syncing, conflict resolution, and offline request handling than there is in simply making your app a PWA, and at the end of the day you still won’t have an app in either app store. Whether it will actually work is another story and really depends on how the web app was built.

With the addition of a manifest file and service worker, a responsive web app can be quickly converted to something that will load without an internet connection. There are a couple of traditional ways for web developers to deliver offline experiences: By day, I’m a full-stack developer targeting desktop and mobile web, but considering the use cases for this app, we determined it needs to be fully-functional offline. I recently worked on an app prototype with a friend in another industry.
