Cordova or: How I Learned to Stop Worrying About Native and Love the Web
Ten years ago, as a personal project, I built several apps with HTML, CSS, and JavaScript, wrapped them with Cordova, and published them in the Play Store —also on the App Store, although only shortly as the Apple pricing was a barrier I couldn't afford... but that's a different story.
I eventually stopped updating the apps for personal reasons: we had children, and my spare time priorities shifted from "building side projects" to "bringing up human projects." I let the apps go without updating them, leading to Google removing some of the apps from the Play Store five years ago. Unfortunate, but understandable.
But. I recently upgraded my version of Cordova, recompiled the apps, and republished them on the Play Store. Google reviewed them, and they are back online and available!
This wouldn't be surprising if it wasn't because I didn't change a single line of my code. By developing the apps using standard HTML, JavaScript, and CSS that was widely supported by browsers, and wrapping them with Cordova, the apps stood the test of time. In fact, they now have more support than before... again, without changing a single line of code!
Why I Chose Cordova
In 2008, I had already played with hybrid apps on Symbian (I even built one as part of my thesis!) and really liked the idea of wrapping web apps for mobile. How the Internet was evolving, HTML, CSS, and JavaScript were (are?) the future... and I saw potential in a technology that wrapped web technologies and allowed it on mobile devices.
I kept researching and looking for options to build hybrid apps, and not long after, I stumbled upon Cordova (then PhoneGap) and started building small projects that I never published. I also played with webOS (something boosted by my joining HP) and was leaning toward the latter... until HP killed the Touchpad project, which drove me to Cordova's arms again. Its simplicity and easy-to-build process hooked me, and I started publishing apps and designing many more that never saw the light of day.
I have a weird theory: many (most) companies are wasting time and money developing native apps when they should have a hybrid app instead. Most of the companies where I've worked had iOS and Android teams duplicating code for both platforms. That would be OK if the app needed advanced native features like the accelerometer, GPS, ... but most of them were not even using the camera!
When I suggested something like this at a corporate level, the idea was quickly disregarded (mainly by the IOS and Android teams that saw their positions could be at risk) with excuses like "It's slower", "It doesn't provide enough features" (that's debatable) or "Not worth it" (that's not even an excuse!)
It is true that hybrid apps are slower, but for the uses it is aimed at and the type of apps companies build, the difference between hybrid and native would be negligible. And hybrid apps may end up being lighter.
As a side thought, notice how I mentioned a hybrid app, instead of a web app. It's nice being able to install a website from your browser onto your phone/computer, but companies must be on the platform app store for visibility. They need a hybrid app.
Going back on topic, Cordova, alongside the plugin ecosystem it provides, is the perfect solution for what I wanted. And I still think it's a perfect solution for many companies that overlook it for the wrong reasons.
Software Complexity vs. Cordova Convenience
Developers keep changing libraries and frameworks and having to rewrite whole codebases, from Knockout to Angular, from Angular to Angular (sigh), from Angular to Ember, from Ember to React, from React to... whatever the next big thing is. And each time adding layers of complexity that increase development and, especially, maintenance time.
Meanwhile, my (simple) apps developed with HTML, CSS, and JavaScript, and wrapped on Cordova keep working without changes. Just like 20-year-old websites still work as expected in today's Internet. They may not be pretty, but they still work.
That's why I love Cordova, and I will keep maintaining my Cordova apps as Cordova apps while I can. It makes things so simple, it brings memories of a time when tools were straightforward, and web development was easier. More chaotic, but easier.
Don't take me wrong: I will create new apps with new technologies. I'm now learning Flutter. But I cannot help seeing it as "just another technology." Something fun and convenient, but that 5-10 years from now, may or may not be around, as it will be replaced by the latest fad, or upgraded in a non-backward compatible way.
All the while, my web apps will still work and, if Cordova is still around, they will be in the Play Store, without needing a single line of code to be updated. Something that I most likely won't be able to say about the other platforms I use.
Subscribe to my newsletter
Read articles from Alvaro Montoro directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by