Hey now

Progressive enhancement is at the heart of everything I do on the web. It’s the bedrock of my speaking and writing too. Whether I’m writing about JavaScript, Ajax, HTML, or service workers, it’s always through the lens of progressive enhancement. Sometimes I explicitly bang the drum, like with Resilient Web Design. Other times I don’t mention it by name at all, and instead talk only about its benefits.

I sometimes get asked to name some examples of sites that still offer their core functionality even when JavaScript fails. I usually mention Amazon.com, although that has other issues. But quite often I find that a lot of the examples I might mention are dismissed as not being “web apps” (whatever that means).

The pushback I get usually takes the form of “Well, that approach is fine for websites, but it wouldn’t work something like Gmail.”

It’s always Gmail. Which is odd. Because if you really wanted to flummox me with a product or service that defies progressive enhancement, I’d have a hard time with something like, say, a game (although it would be pretty cool to build a text adventure that’s progressively enhanced into a first-person shooter). But an email client? That would work.

Identify core functionality.

Read emails. Write emails.

Make that functionality available using the simplest possible technology.

HTML for showing a list of emails, HTML for displaying the contents of the HTML, HTML for the form you write the response in.

Enhance!

Now add all the enhancements that improve the experience—keyboard shortcuts; Ajax instead of full-page refreshes; local storage, all that stuff.

Can you build something that works just like Gmail without using any JavaScript? No. But that’s not what progressive enhancement is about. It’s about providing the core functionality (reading and writing emails) with the simplest possible technology (HTML) and then enhancing using more powerful technologies (like JavaScript).

Progressive enhancement isn’t about making a choice between using simpler more robust technologies or using more advanced features; it’s about using simpler more robust technologies and then using more advanced features. Have your cake and eat it.

Fortunately I no longer need to run this thought experiment to imagine what it would be like if something like Gmail were built with a progressive enhancement approach. That’s what HEY is.

Sam Stephenson describes the approach they took:

HEY’s UI is 100% HTML over the wire. We render plain-old HTML pages on the server and send them to your browser encoded as text/html. No JSON APIs, no GraphQL, no React—just form submissions and links.

If you think that sounds like the web of 25 years ago, you’re right! Except the HEY front-end stack progressively enhances the “classic web” to work like the “2020 web,” with all the fidelity you’d expect from a well-built SPA.

See? It’s not either resilient or modern—it’s resilient and modern. Have your cake and eat it.

And yet this supremely sensible approach is not considered “modern” web development:

The architecture astronauts who, for the past decade, have been selling us on the necessity of React, Redux, and megabytes of JS, cannot comprehend the possibility of building an email app in 2020 with server-rendered HTML.

HEY isn’t perfect by any means—they’ve got a lot of work to do on their accessibility. But it’s good to have a nice short answer to the question “But what about something like Gmail?”

It reminds me of responsive web design:

When Ethan Marcotte demonstrated the power of responsive design, it was met with resistance. “Sure, a responsive design might work for a simple personal site but there’s no way it could scale to a large complex project.”

Then the Boston Globe launched its responsive site. Microsoft made their homepage responsive. The floodgates opened again.

It’s a similar story today. “Sure, progressive enhancement might work for a simple personal site, but there’s no way it could scale to a large complex project.”

The floodgates are ready to open. We just need you to create the poster child for resilient web design.

It looks like HEY might be that poster child.

I have to wonder if its coincidence or connected that this is a service that’s also tackling ethical issues like tracking? Their focus is very much on people above technology. They’ve taken a human-centric approach to their product and a human-centric approach to web development …because ultimately, that’s what progressive enhancement is.

Have you published a response to this? :

Responses

Matthias Ott

“Progressive enhancement isn’t about making a choice between using simpler more robust technologies or using more advanced features; it’s about using simpler more robust technologies and then using more advanced features. Have your cake and eat it.” 💯🍰 adactio.com/journal/17140

Daniel Ehniss

«Progressive enhancement isn’t about making a choice between using simpler more robust technologies or using more advanced features; it’s about using simpler more robust technologies and then using more advanced features.» – @adactioadactio.com/journal/17140

Jason Zimdars

“Progressive enhancement isn’t about making a choice between using simpler more robust technologies or using more advanced features; it’s about using simpler more robust technologies and then using more advanced features. Have your cake and eat it.” adactio.com/journal/17140

CSS Basics

Hey Now: “Progressive enhancement isn’t about making a choice… it’s about using simpler more robust technologies AND then using more advanced features. Have your cake and eat it.” by @adactio adactio.com/journal/17140

# Posted by CSS Basics on Monday, August 3rd, 2020 at 9:00pm

✪ Felippe

interesting, but so wikipedia or gmail are not a web application? why it wouldnt be? (honest question haha)

# Posted by ✪ Felippe on Wednesday, February 10th, 2021 at 4:31pm

Tom Morris 🏳️‍🌈

The distinction is pretty fuzzy. My concern is really the idea of a “web app” is it exists to say “we don’t need to do these things that websites do” (i.e. responsive design, accessibility, progressive enhancement etc.) even though you can totally do all that.

✪ Felippe

makes sense. i always thought in web app as an app built “on-browser”, not as a web app separated from its context (a hybrid). but even hybrids (web embedded on native apps) its possible to deliver all that you said, spotify and postman desktop versions does it, for example

# Posted by ✪ Felippe on Wednesday, February 10th, 2021 at 6:09pm

1 Share

# Shared by George Salib® on Thursday, July 16th, 2020 at 4:12pm

12 Likes

# Liked by George Salib® on Thursday, July 16th, 2020 at 4:47pm

# Liked by Marty McGuire on Thursday, July 16th, 2020 at 5:37pm

# Liked by Daniel Ehniss on Thursday, July 16th, 2020 at 6:06pm

# Liked by Chris M. on Thursday, July 16th, 2020 at 9:52pm

# Liked by Josh #BlackLivesMatter on Saturday, July 18th, 2020 at 9:23pm

# Liked by Andy Bell on Saturday, July 18th, 2020 at 9:23pm

# Liked by Matt Machell on Saturday, July 18th, 2020 at 9:23pm

# Liked by Orangetronic on Saturday, July 18th, 2020 at 11:43pm

# Liked by Chriztian Steinmeier on Sunday, July 19th, 2020 at 6:40am

# Liked by Austin Gil on Wednesday, February 10th, 2021 at 5:11pm

# Liked by Jeremy Keith on Wednesday, February 10th, 2021 at 5:11pm

# Liked by ✪ Felippe on Wednesday, February 10th, 2021 at 5:27pm

1 Bookmark

# Bookmarked by Daniel on Monday, July 20th, 2020 at 7:18am

Related posts

Browser support

Here’s Clearleft’s approach to browser support. You can use it too (it’s CC-licensed).

Speculation rules

A performance boost in Chrome.

Baseline progressive enhancement

If a browser feature can be used as a progressive enhancement, you don’t have to wait for all browsers to support it.

Hanging punctuation in CSS

A little fix for Safari.

Progressive disclosure with HTML

The `details` element is like the TL;DR of markup.

Related links

Request for developer feedback: customizable select  |  Blog  |  Chrome for Developers

I’m very glad to see that work has moved away from a separate selectmenu element to instead enhancing the existing select element—I could never see an upgrade path for selectmenu, but now there are plenty of opportunities for progressive enhancement.

Tagged with

Futuristic Progressive Enhancement - Jim Nielsen’s Blog

We’re all tired of: write some code, come back to it in six months, try to make it do more, and find the whole project is broken until you upgrade everything.

Progressive enhancement allows you to do the opposite: write some code, come back to it in six months, and it’s doing more than the day you wrote it!

Tagged with

12 Modern CSS One-Line Upgrades | Modern CSS Solutions

I love how straightforward these bits of CSS are—time to rip out some of those old complicated hacks and workarounds!

Tagged with

Web developers: remarkably untalented and careless? – Baldur Bjarnason

I’d like to suggest that everybody in web dev point their dysfunctional novelty seeking (of which I suffer as well) in the direction of HTML and CSS. See how much can be done without JavaScript. It’s a lot! Then look at writing more lightweight JavaScript that’s layered on top of the HTML as enhancements. Because it’s an enhancement and not required for functionality, you can cut the line higher and use newer tech without worry.

See how refreshing that feels.

Tagged with

Introducing Enhance Music — Begin Blog

I also think the number of situations in which an SPA architecture can be recommended is dwindling, chiefly due to how good the web platform has become (and how much better it’s getting every day). And because so much of the rest of the ‘struggle stack’ (transpilers, unique dialects, etc.) was built to get around gaps in the web platform that no longer exist, the use cases for these tools is dwindling in tandem.

This is good news: not only can we avoid piling up transient knowledge about a seemingly endless stream of dependencies, we can also eject from the routine stress of those dependencies changing or breaking under our feet and throwing wrenches into our workflows — all while delivering more robust and performant websites to end users.

Tagged with

Previously on this day

5 years ago I wrote Trad time

From the west coast of Clare to the World Wide Web.

9 years ago I wrote Quakepunk

The best writer on the web.

10 years ago I wrote Overcast and Huffduffer

Two great tastes that go great together.

10 years ago I wrote Cory Doctorow at dConstruct 2014

The wheel turns full circle.

12 years ago I wrote Brighton SF

I’m gathering together some sci-fi authors the evening before dConstruct.

16 years ago I wrote Sound and vision

Data visualisation killed the video star.

20 years ago I wrote Picture perfect

Tim Bray points to a great collection of photographs by Richard Friedman.