Progressive Enhancement and Graceful Degradation: Making a ChoiceBy Craig Buckler
In my previous article, we discussed graceful degradation and progressive enhancement — concepts that can help rich web applications support more browsers and have a wider reach. To recap:
- Graceful degradation is the practice of building an application for modern browsers while ensuring it remains functional in older browsers.
- Progressive enhancement is the practice of building an application for a base level of user experience, but adding functional enhancements when a browser supports it.
Good accessible web applications are likely to use a combination of both approaches. It’s possible a feature could end up at the same point no matter which practice you adopted.
Assessing Your Application’s Accessibility Requirement
Creating a web site or application for all browsers is obviously an ideal situation. However, constraints will be introduced by your schedule, budget, and feature set. You should also be aware of legal issues arising from accessibility legislation such as the US Section 508 and the UK Disability Discrimination Act. It’s advisable to plan your accessibility requirements from the start.
There are a few exceptions; your application might so dependent on scripting or plugins that it makes little sense to cater for older or incompatible systems. For example, an online video editor would almost certainly need Flash, Silverlight, or a similar technology; an HTML-only version would not be viable.
Many developers argue that their web site or application is browser-specific and need only support that application. For example, Mozilla add-ons could be inaccessible to non-Firefox users. However, the site that hosts Mozilla’s add-ons directory works well in most browsers:
- Mozilla are supportive of web standards; they have no reason to create a Firefox-specific site, and
- a user with another browser might visit the add-ons page to find out more about Firefox. Blocking that user or providing a poor experience would not endear them to Mozilla.
To the other extreme, there are e-commerce sites such as Amazon.com. The company could lose thousands of dollars if they restricted access to any users.
Choosing Your Development Approach
In my opinion, graceful degradation attacks the problem from the wrong direction. Progressive enhancement normally offers a more logical approach:
- It enables you build a stable application with solid foundations that should work on any device.
- You can add further enhancements as new technologies and browsers are introduced without changing the core functionality. On the contrary, graceful degradation requires a browser support list; you might need to update the application as new browsers are introduced.
There are a few exceptions when graceful degradation might be suitable:
- Cosmetic issues are usually acceptable if the system remains usable. Older browsers have more limited CSS support — layouts can be different or ugly if the core functionality remains operable.
In general, progressive enhancement should offer better stability and browser support. The initial development costs are higher but the application should require less long-term maintenance.
Coming soon: A series of articles showing how to build a simple widget using progressive enhancement techniques.
- 1 Create Your Own Yeoman-Style Scaffolding Tool with Caporal.js
- 2 Fetching Data from a Third-Party API with Vue.js and Axios
- 3 Why You Need to Know About Sketch's New File Format
- 4 Make Your Own Social Network, Game Server, or Knowledgebase! - Sourcehunt