There’s an ongoing (and largely made-up) war between native apps and progressive web apps. Developer Kim Fransman talks about what they are, why they both matter, and why we need to start by assuming what we’re building can be done with the web – until it can’t.
Kim Fransman, web developer at Daresay.
To understand the state of the web in 2018, you need to go back more than twenty years, to 1996, the year the movie Space Jam was released. If you’re not familiar with this basketball-stars-and-cartoon-characters-but-in-space movie, it goes like this: a bunch of aliens steal the Looney Tunes cartoon characters and then Michael Jordan gets sucked into a golf hole, and there’s some basketball and then – victory for Earth! No one is sure why the movie was successful, just as no one is exactly sure why the website for the movie is still around.
The important thing is, at some point during production, a website was created, one that did just about everything the web was capable of doing in 1996. And it’s still around.
The Space Jam website has iframes and a table-based layout. It’s as 1996 as a pair of overalls with one strap down. It couldn’t survive without our thirst for cringeworthy pop culture nostalgia, but it’s also a reminder of what’s so special about how the web was built. As the web evolves, it’s up to browser vendors to ensure backwards compatibility. In other words, when a browser vendor prepares a new version for release, they adhere to a rigorous process that ensures they don’t break anything that’s already there.
One recent example is what’s known among developers as SmooshGate. Two developers wanted to add a ‘flatten’ function to a JavaScript language itself, but the term ‘flatten’ already existed in an old library called MooTools. Using the term in the new library would have disrupted sites still running MooTools. One (joke) suggestion made was to rename the new function ‘smoosh’, as a synonym for ‘flatten’. Not-breaking-the-internet is centrally important to web developers, but that doesn’t mean it’s always easy.
Space Jam is an artefact of just how dedicated web developers are to backwards compatibility. Whatever you do, don’t break ‘Planet B-Ball.’
Backwards compatibility
In short, a progressive web app is just a great website that looks and behaves like an app, but the user can access it on the web. You still usually ‘download’ it, but it’s usually incremental, and much smaller. It’s also ‘progressively enhanced’, which means it provides a modern, up-to-date experience on a new device, sometimes with enhanced features, but will also still work on older devices. With native apps, developers sometimes build fallbacks to allow functionality with older operating systems, but progressive web apps do this by design.
They’re designed to be reliable, fast, and engaging. It’s more than this, of course, and Google has a checklist for what you need to qualify as having built a progressive web app. But a true example of one represents best practices for websites and applications — because that’s what they’re designed around.
Notifications on the browser.
It’s not that it’s never time to build a native app, but because building native is often so much more expensive, it’s just useful, as a rule, to assume something can be built for the web – until it can’t. It used to be the case that it was harder to create good user experiences for mobile web, but that’s not the case anymore. In fact, companies like Twitter and Tinder have created progressive web app versions of their products.
Progressive web apps are, in general:
They’re also not the end-all, be-all of digital services. Despite what a lot of inflammatory articles would have you think, web developers aren’t trying to kill off native apps.
It’s important to remember that what you’re building is a service for customers, not an app for a platform. The mobile web can do a good job of that in more circumstances than it could in the early years of smartphones, but sometimes native apps are the right choice.
As a general rule:
The question isn’t whether you should build web or native, but what your users need and want. When you’ve done your research, and you know what users expect of the service you’re building, you can start going through what’s actually needed for these users in particular. You can use a site like What Web Can Do Today to check your users’ needs against what progressive web apps can do.
In fact, they probably don’t even ‘want’ your organisation. They want the service you provide for them. If you’re focused on what they need, what they care about, and the environment they’re in, then you’ll build the right thing. But nobody is looking at their device thinking, “What this thing needs is another app.”
It’s true that a lot of what is currently done by native apps can be done by progressive web apps. And there are misconceptions about the mobile web – that it can’t deliver good user experience, that users universally trust native apps more – that need correcting. But there is no war, and nobody is trying to kill off native.
That said, the web is still beautiful, useful, and it remains usable, no matter what version of browser it was built for. And if the Space Jam website had been a native app, it wouldn’t be around to remind us that once upon a time, we used a ridiculous thing called iframes.
We love to write about what we do, what we learn along the way and what we play with.