Is Progressive Enhancement An Unrealistic Ideal?

SSLWe all want users to have the best possible experience, but it’s hard to predict the environment in which our sites will be used. We don’t have control over the features browsers make available and some users will turn off functionality like JavaScript. There are two basic techniques to build sites that account for the range of functionality that might be available: progressive enhancement and graceful degradation.

Graceful degradation involves designing with the assumption that that most users will have most functionality available to them, while providing alternatives for those that don’t. The typical graceful degradation approach will use <noscript> element to offer equivalent functionality for JS scripts that aren’t run.

Progressive enhancement starts from the other end. Pages are built with the functionality that we can be reasonably certain all browsers have: HTML and widely adopted CSS features. Richer interactive elements are layered on top of this basic framework, but nothing on the page depends on these “enhancements” working to provide a good user experience. It might be better with the JS and complex CSS, but it works fine without.

For many designers, and for some at the W3C, progressive enhancement is the preferred option:

“I might be an idealist but I really dislike the idea of graceful degradation. By building something and then making it barely work in other environments (or asking users to upgrade) I make a lot of assumptions about both the environment and the ability of the users to upgrade.”

But, in the modern online landscape, is progressive enhancement a realistic option for a web project? I think it depends on the project. Take the example of a blog: its job is to show text articles and images. Designers might want to include nifty JQuery transitions, but they’re the cherry on top. For most blogs, progressive enhancement is a realistic goal.

But if we think about a site that depends fundamentally on real-time user interaction or updating of on-page elements, we can design it to offer some seriously degraded functionality without JavaScript, but there is no way to provide the intended user experience. All we can really do is signal what the user is missing by not experiencing the full version. It’s impossible to design a basic-level experience that in any way matches the intended experience. Enhancement isn’t progressive in this case, it’s a leap between levels.

The real sting in the tail here is that progressive enhancement can be time consuming and impose constraints on the design process. If developers are forced to develop workarounds to provide an ultimately unsatisfactory facsimile of full functionality in crippled browsers, then time is taken that could be used to implement a better experience for the majority use case.

On today’s web, where the traditional website is becoming less common than SPAs and interactive web apps powered by React and other advanced front-end technologies, progressive enhancement becomes even less attractive.

As Johan Ronsse points out, progressive enhancement is not always possible.

“Not everything is a content website consisting of pieces that can have “fallbacks”. Vast pieces of software are being built with web tech. Apple’s Pages in the browser is an entirely different beast than your average news website. Enterprises are moving every bit of their software to a web stack.”

There are a good reasons for taking the progressive enhancement approach: it improves accessibility, can be better for SEO, and it embraces an inclusive philosophy. However, given the expectations of modern users and complexity of modern sites, progressive enhancement is an ideal to be aimed for with the acknowledgement that other factors may prevail. Progressive enhancement should be preferred, but not insisted on.

About Matthew – Matthew Davis is a technical writer and linux geek for Future Hosting. Follow them on Twitter Twitter at @fhsales, Like them on Facebook, and check out more of Matthew’s writing on Future Hosting’s web hosting blog.

Matthew Davis is a technical writer and Linux geek for Future Hosting.

Dedicated Server Special

Take advantage of our Double RAM offer on the E3-1230v2 4 x 3.30GHz+HT server! Only $134.95 per month. Managed and Unmanaged options available at checkout.