Hacker News new | ask | show | jobs
by WorldMaker 3174 days ago
I think a terminology quirk here is that the goal posts for "progressive enhancement" have moved over the years. Certainly there's still the ideal out there of artisanal HTML that doesn't need JS to function, but slowly gets enhanced as layers of JS are added... but the P in PWA doesn't necessarily refer to that ideal.

In the specific context of PWA, I've seen progressive enhancement is most often specific to how the app-like enhancements are applied (ie, use platform notifications if they are available, fallback to something like a JS toast library, if not), not necessarily to, say, the relationship of the HTML and JS. Many PWAs in the wild are still SPAs (and still going to be SPAs), and arguably a SPA is going to provide the most app-like feel for a PWA on a user's device, rather than something "pure" and HTML page driven.

1 comments

That certainly appears to be the case. I'm not quite so willing to give up on the original definition, though. "Agile", for instance, eventually came to be widely (though by no means universally) known as something requiring a very specific set of tools and processes (SCRUM, test-first, velocities,...) when the original manifesto made no mention of any of this and even said "Individuals and interactions over processes and tools".

Goalposts move, definitions change... but if "progressive" doesn't refer to the progression from HTML to elaborate UI in JS or mobile, does it still refer to the movement from simple to more complex? Or has "progressive" become a great sounding word, like "agile", that everyone wants to claim? Nobody wants to describe themselves as lumbering and clunky instead of agile, or regressive and backward instead of progressive.

It still refers to a movement from simple to complex: server delivery to service-worker-based caching and offline-capable "delivery" strategies; lighting up an increasing number of "app-like" experience APIs as browsers and OSes offer them (from general "web platform" APIs that work across operating systems such as web platform notifications, to hooks into OS-specific APIs; an example there is PWAs on Windows can request access to a lot of the UWP APIs to support things like Live Tiles).

ETA here: The missing idea here being that when using these OS-specific components, you should do it in a progressive enhancement way such that they have fallbacks or offer alternative functionality when they don't exist. Try to avoid the old west days of "Works Best on This Particular Browser/OS Combo".

There is definitely a need to preserve the old meaning of "progressive enhancement", but that may be a need for a new term, as this one moves on. Particularly the more that it feels that JS has "won" and is the default much more than the exception. I used "artisanal" as a joke in the previous post, but it's also somewhat apt here as raw, barely filtered, HTML [1] feels increasingly like a fad for hipsters and old curmudgeons more than the way of the web. To support it as a movement you might have to market it in similar "return to the web's roots" marketing.

[1] Just like Grandma used to bake.

Hi. Progressive Enhancement is a separate term and concept from Progressive Web Apps. The intention is not to replace the meaning of Progressive Enhancement. As you say, it is a very important concept in its own right.

Progressive Enhancement is an important aspect of PWAs, as it is for web development in general. PWAs are bringing new features to the Web, but it should/must be done in a way that does not break the experience for anyone else. I guess that's why Alex chose that word in particular.