Progressive enhancement is a design philosophy that centers around providing a baseline of essential content and functionality to as many users as possible, while at the same time going further and delivering the best possible experience only to users of the most modern browsers that can run all the required code.
Feature detection is generally used to determine whether browsers can handle the high level content or not, with polyfills often being used to build in missing features with JavaScript.
Special notice should be taken of accessiblity — acceptable alternatives should be provided where possible.
It is a useful technique that allows Web developers to focus on developing the best possible websites while balancing the issues in those websites being accessed by multiple unknown user-agents. Graceful degradation is related but different — often seen as going in the opposite direction to progressive enhancement. In reality both approaches are valid and can often complement one another.
Learn more
General knowledge
- Progressive enhancement on Wikipedia