Progressive Enhancement Resources 
A comprehensive collection of resources on Progressive Enhancement. From concept and strategies to feature detection and testing methods. Complete with a list of (code) examples.
A comprehensive collection of resources on Progressive Enhancement. From concept and strategies to feature detection and testing methods. Complete with a list of (code) examples.
Progressive Enhancement means gradually improving the user experience after verifying the target environment (e.g. browser) is capable of it. Start with content and ensure you maintain functionality & accessibility.
You can apply Progressive Enhancement in different ways:
Before you try to enhance the experience, you need to ensure the environment is capable of the enhancement. You test this by performing feature detections:
CSS.supports() & @supports()) - Natively test if specific CSS feature is supported using JS method or CSS declaration.[requiredFeatures] evaluate to true.Different environments (platforms, browsers, versions) have different capabilities. Support tables tell you what capabilities each environment has. Knowing the level of support can help you weigh an enhancement against the effort and impact of its implementation.
With progressive enhancement you support different experiences in different environments. These are some ways to test all these variations:
<noscript> tags. (note: Evergreen browsers only)Asynchronously fetch and transition between static pages using ajax and history.pushState: