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.