Progressive Enhancement and Graceful Degradation: an Overview

Share this article

web layers
In this article, I will discuss progressive enhancement and graceful degradation — two concepts that are well known but perhaps a little misunderstood.

The Web is Evolving

The web is in a continual state of flux and evolves at an alarming pace. Technologies and techniques rise and fall. Today’s Safari 4 is tomorrow’s IE6. We want to use the latest advances and provide a better experience for our users. Unfortunately, there is no way to force browser upgrades. Companies and individuals will not necessary change their working environments because of developer demands. Many people are happy to access web pages in total ignorance of the underlying technologies or valid reasons to upgrade. OS and browser manufacturers have some influence, but web developers can only extol the benefits of newer browsers. Many developers argue that there is little sense supporting outdated technology. However, that attitude is unlikely to convince clients who want the largest possible audience or have users who depend on older browsers. Those users might not have system permissions, financial resources, or the technical ability to upgrade. Some users may be using specialist assistive technologies which cannot be upgraded. No one can force software or upgrades on a user: doing so would be contrary to their democratic right of choice. How would you feel if someone forcefully installed software on your PC claiming that it was for your own good? The web was designed to be used with any device at any location. All we know about end users is that they are using a browsing application which transmits and receives data using internet protocols. We cannot make assumptions about their setup or technical ability. This makes the web a hostile development environment. The applications we develop can be fragile when they are accessed by a user with an 8 year-old browser with disabled JavaScript and no plugins.

The Need for Accessibility

Accessibility is an important issue clouded by the perception that it’s just about political correctness, alt tags, or blind users. It’s far more. Accessibility is about supporting all users no matter what browsing technology they use. A website that works on a wide variety of devices, screen readers, PDAs, mobile phones, game consoles
, and connection speeds will have a wider reach than one that does not.

Graceful Degradation

Graceful degradation is one solution. It is the practice of building a web site or application so it provides a good level of user experience in modern browsers. However, it will degrade gracefully for those using older browsers. The system may not be as pleasant or as pretty, but the basic functionality will work on older systems. A simple example is the use of 24-bit alpha-transparent PNGs. Those images can be displayed on modern browsers without problems. IE5.5 and IE6 would show the image, but transparency effects would fail (it can be made to work if necessary). Older browsers that do not support PNG would show alt text or an empty space. Developers adopting graceful degradation often specify their browser support level, e.g. level 1 browsers (best experience) and level 2 browsers (degraded experience).

Progressive Enhancement

Progressive enhancement is similar concept to graceful degradation but in reverse. The web site or application would establish a base-level of user experience for most browsers. More advanced functionality would then be added when a browser supports it. Progressive enhancement does not require us to select supported browsers or revert to table-based layouts. We choose a level of technology; i.e. the browser must support HTML 4.01 and standard page request/responses. Going back to our image example, we might decide that our application should be functional in all graphical browsers. We could use a lower-quality GIF images by default but replace them with 24-bit PNGs when the browser supports them. View the next post: Progressive Enhancement and Graceful Degradation: Making a Choice Related reading:

Frequently Asked Questions on Progressive Enhancement and Graceful Degradation

What is the main difference between progressive enhancement and graceful degradation?

Progressive enhancement and graceful degradation are two methodologies used in web design to ensure that websites function across different devices and browsers. The main difference between the two lies in their approach. Progressive enhancement starts with a basic, functional website and gradually adds more complex features for advanced browsers or devices. On the other hand, graceful degradation starts with a full-featured website and then ensures it still works in a simpler form on older browsers or less capable devices.

Why is progressive enhancement important in web design?

Progressive enhancement is important in web design because it ensures that your website is accessible to as many users as possible, regardless of the device or browser they are using. It allows you to build a website with basic functionality first, and then add more advanced features for users with modern browsers or high-end devices. This approach ensures that all users can access the core content and functionality of your website, even if they can’t use all of its features.

How does graceful degradation work in practice?

Graceful degradation works by designing a website with all its features and functionalities for the latest browsers and devices first. Then, it ensures that the website still works, albeit in a simpler form, on older browsers or less capable devices. This might involve disabling certain features or providing alternative content for users with older technology. The goal is to ensure that every user can access the website, even if they can’t experience it in its full glory.

Can you use both progressive enhancement and graceful degradation in a single project?

Yes, it’s possible to use both progressive enhancement and graceful degradation in a single project. In fact, many web designers consider these methodologies to be two sides of the same coin. By starting with a basic, functional website and then adding more complex features (progressive enhancement), while also ensuring that these features degrade gracefully on older browsers or less capable devices (graceful degradation), you can create a website that is accessible and functional for all users.

What are some examples of progressive enhancement in action?

Examples of progressive enhancement in action could include a website that starts with basic HTML content, then adds CSS for styling, and finally JavaScript for interactivity. Users with modern browsers and high-end devices get to experience the full website with all its features, while users with older technology still get to access the core content and functionality.

How can I test my website for graceful degradation?

You can test your website for graceful degradation by viewing it on different devices and browsers, including older ones. You should also disable JavaScript and CSS to see how your website functions without these technologies. There are also online tools and services that can simulate different devices and browsers for testing purposes.

What are the benefits of using progressive enhancement and graceful degradation?

The main benefit of using progressive enhancement and graceful degradation is that they ensure your website is accessible to all users, regardless of their device or browser. This can lead to a wider audience, better user experience, and potentially higher conversion rates. These methodologies also encourage good web design practices, such as semantic HTML and separation of content and presentation.

Are there any drawbacks to using progressive enhancement and graceful degradation?

One potential drawback to using progressive enhancement and graceful degradation is that they can require more time and effort to implement compared to designing a website for just the latest browsers and devices. However, the benefits of increased accessibility and user experience often outweigh this drawback.

How do progressive enhancement and graceful degradation relate to responsive web design?

Progressive enhancement, graceful degradation, and responsive web design are all methodologies that aim to make websites accessible and functional across different devices and browsers. Responsive web design specifically deals with making websites look and function well on different screen sizes, while progressive enhancement and graceful degradation deal with different levels of browser capabilities and features.

What are some best practices for implementing progressive enhancement and graceful degradation?

Some best practices for implementing progressive enhancement and graceful degradation include starting with semantic HTML for your core content and functionality, adding CSS for styling, and then JavaScript for interactivity. You should also test your website on different devices and browsers, including older ones, to ensure it degrades gracefully. Finally, always keep the user experience in mind and aim to provide the best possible experience for all users, regardless of their device or browser.

Craig BucklerCraig Buckler
View Author

Craig is a freelance UK web consultant who built his first page for IE2.0 in 1995. Since that time he's been advocating standards, accessibility, and best-practice HTML5 techniques. He's created enterprise specifications, websites and online applications for companies and organisations including the UK Parliament, the European Parliament, the Department of Energy & Climate Change, Microsoft, and more. He's written more than 1,000 articles for SitePoint and you can find him @craigbuckler.

CSShtmljavascriptstandards
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week