There are more mobile web vs. native app articles out there than you can shake a stick at. Some advocate both. Some say the web can’t (and shouldn’t) compete with native. To be fair, there are pros and cons to each. But in light of this months topic, I’m going to focus on a single point in the debate, and one of the strongest arguments for focusing on building a robust web presence before diving into native.
When Java first appeared on the scene a couple of decades ago, it came with the hopes of establishing a “Write Once/Run Anywhere” ecosystem. When the iPhone was first launched, there was no native SDK. The reasoning was that developers could build web applications that “would behave like native apps on the iPhone”. Had that remained the case, it would have been very likely that those “applications” would have also worked on the rest of the smartphones that were soon to follow. But the fact of the matter is, browsers these days are extremely powerful, and are gaining more native-like funcationality with every release.
So what is the most powerful characteristic of the web? Reach.
Browsers are being built into everything these days. Watches. Refrigerators. Handheld gaming devices. Televisions. If we really want to reach the most people, we need to focus first and foremost on the most ubiquitous platform. And with API’s such as Service Workers, Geolocation, and the getUserMedia API, there’s nothing stopping us from building native-like applications (if that’s actually your goal). One issue that proponents of native use against web is discoverablitiy and “installation”. Getting your apps/sites icon on the users homescreen is a big deal. We’ve had some hacks in the past, but with the Web App Manifest, we’ll soon have this funcationality built-in across all mobile browsers (fingers crossed).
Now what I’m NOT saying is that native apps are bad or wrong. I have a ton of them (if bits had weight) installed on my phone. I’m even in the process of learning Swift this year. My recommendation is that unless you can focus on native for every platform your users have installed, you should focus first on creating the best possible experience for the web. This includes keeping accessiblity and progressive enhancement in mind. Not every user has a brand new top-of-the-line smartphone. But when sites/webapps are built correctly, they can run on some pretty old and underpowered tech.
The ability for the web to run on thousands of different kinds of devices with varying sizes, limitations, and use-cases is extremely powerful. Whether our goal is to educate, entertain, or the millions of other use-cases out there on the web, the simple fact that this medium can reach all of them is more than powerful, it’s revolutionary. Operating systems come and go. Neglected apps will fail to run on newer OS’s. But a website/webapp has the possiblity of continuing to run even after innovation has left its codebase behind.
I’m looking at you Space Jam