Is Progressive Enhancement Over? Hi everyone,



Recently, Nolan Lawson wrote a post theorizing that perhaps the time for progressive enhancement was over. He focused mostly on whether or not the "no JavaScript" experience is still meaningful in today's world and argued that network connectivity is the biggest problem for most users (mobile and wifi users). If that is the case, he continued, then we should be pushing as much as we can to the browser and JavaScript so we can deliver a decent user experience where we aren't sure if we'll ever have a connection back to the server. A fair argument given recent history.



In response, longtime progressive enhancement proponent Aaron Gustafson wrote a response, in which he explained why he doesn't see progressive enhancement as diametrically opposed to approaches like offline-first. His primary point is that while service workers help with repeat visits, the first visit isn't well served, especially if the service worker script fails to load or execute. He echoes the old saying about progressive enhancement that it's not about the technology, it's about the user experience.



Those who have followed me for a while will know that I'm also a big proponent of progressive enhancement. It's been my go-to approach for over a decade and I've seen it work to improve existing web applications, build a solid foundation from scratch for new web applications, and help solve a bunch of problems when single-page, JavaScript-only apps started to include progressive enhancement concepts. Over the years, I've had to debate whether this is the correct approach or not several times. At the end of the debate, I'm usually left saying a couple of things.



First, that progressive enhancement isn't about having a JavaScript vs. JavaScript-disabled experience, it's about providing the best possible user experience throughout the entire lifecycle of the web application. Yes, native apps sometimes show up blank because they fail to load data from the server, but that doesn't mean it's a good user experience or that we should say it's acceptable for web applications. If we can do better, why wouldn't we?



Second, progressive enhancement isn't a strict prescription, it's a way of thinking about the software you're building. It doesn't say "no JavaScript" or "yes HTML," specifically. Instead, it encourages you to think more deeply about the problem you're trying to solve, and guides you towards solutions that work for the maximum number of users.



These two points are why I believe progressive enhancement is as relevant today as it has ever been. The only difference now is that we have more options for improving the user experience than ever before.



Be well.



-N