Progressive Enhancement
Progressive enhancement is a design philosophy that provides a baseline of essential content and functionality to as many users as possible, while delivering the best possible experience only to users of the most modern browsers that can run all the required code.
The word progressive in progressive enhancement means creating a design that achieves a simpler-but-still-usable experience for users of older browsers and devices with limited capabilities, while at the same time being a design that progresses the user experience up to a more-compelling, fully-featured experience for users of newer browsers and devices with richer capabilities.
Feature detection is generally used to determine whether browsers can handle more modern functionality, while polyfills are often used to add missing features with JavaScript.
Special notice should be taken of accessibility. Acceptable alternatives should be provided where possible.
Progressive enhancement is a useful technique that allows web developers to focus on developing the best possible websites while making those websites work on multiple unknown user agents. Graceful degradation is related but is not the same thing and is often seen as going in the opposite direction to progressive enhancement. In reality both approaches are valid and can often complement one another.
See also
- Progressive enhancement at Wikipedia
- What is Progressive Enhancement, and why it matters at freeCodeCamp
- Progressive Enhancement reading list 2021 at QuirksMode
- Understanding Progressive Enhancement by Aaron Gustafson; a 2008 A List Apart article which first "placed progressive enhancement at the forefront of web developer thinking"
- Inclusive Web Design For the Future with Progressive Enhancement (related article) by Steve Champeon and Nick Finck; a 2003 SXSW presentation cited by Aaron Gustafson as "unveiling a blueprint for a new way of approaching web development", and naming it "progressive enhancement"