Skip to content
44

Progressive Enhancement Resources

Resources on Progressive Enhancement. From concept and strategies to feature detection & testing methods. Complete with a list of (code) examples.

151 stars9 forks85 entriesLast push Feb 17, 2023 (3 years ago)License CC0-1.0

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

The Concept

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.

Progressive Enhancement: It's about the content

Sharing content is the core of the web. Progressive Enhancement ensures access to content.

The Role of Enhancement in Web Design

From the concept of enhancement to the criteria and rules for enriching the user interface.

Understanding Progressive Enhancement

Apply technologies in an intelligent way, layer-upon-layer, to craft an amazing experience.

Designing with Progressive Enhancement

The book (400+ pages) on Progressive Enhancement.

Adaptive Web Design

Book on Progressive Enhancement from content to design and interaction.

Detecting (HTML5) features

Intro to different feature detection techniques with examples and demos.

Progressive Web Apps

Enhancing web sites into native-like apps (progressive, not hybrid).

Strategies

The Content-out Approach

Provide wide access to content without technological restrictions.

Make the page usable with only HTML

This sets the baseline for every device and browser.

Test Driven Progressive Enhancement

Core functional experience enhanced after testing capabilities.

Cut the mustard

Set a threshold for collection of enhancements.

In 2 lists

Grade components, not browsers

Component level feature tests and enhancements.

Feature vs Browser vs Form factor detection

As different strategies to tune your app to its environment.

Server-side device detection

Use user-agent and other HTTP header info combined with a device database to conditionally serve files.

Writing polyfills

If your baseline is still too high for some browsers, consider polyfills (aka Regressive Enhancement).

Application Shell Architecture

Setup for instant loading web apps.

In 2 lists

Feature Detection

CSS feature queries

(CSS.supports() & @supports()) - Natively test if specific CSS feature is supported using JS method or CSS declaration.

Feature Detect ES6

Detect which ES2015 features are available.

SVG requiredFeatures

Render SVG elements only if their [requiredFeatures] evaluate to true.

Modernizr

Extensive feature detection suite (supports custom builds).

Feature.js

Lightweight feature detection suite.

Conditioner.js

Conditionally load JS modules based on directives in HTML attributes.

EnhanceJS

Lets you asynchronously load CSS & JS after a set pre-defined feature tests.

Support Tables

The Web Platform

Overview of browser technologies with links to docs and test suites.

Can I use ...?

Compare feature implementations and limitations across desktop & mobile browsers.

In 4 lists

I want to use ...

Figure out the browser support of combinations of features.

In 2 lists

HTML5 Test

Test and compare HTML5 feature support across browsers.

In 2 lists

CSS3 Test

Fine-grained tests for CSS3 feature support of your current browser.

Accessibility Support

Compare accessibility support of HTML elements and ARIA roles across browsers & assistive technologies.

State of Web Type

Support tables for type and typographic features on the web.

In 2 lists

Font Family Reunion

Compatibility tables for default local (system) fonts.

HTML5 Accessibility

Compare feature support of HTML5 tags, input types and properties across major browsers.

WAI-ARIA Screen reader compatibility

ARIA roles and attributes support for different screen reader and browser combinations.

What web can do today

Lists and checks modern web APIs like access to device system, sensors and actuators.

In 2 lists

HTML5 Worker test

Compare which APIs are supported in Web Workers and Service Workers across browsers.

HTML5 Please

Explore features with recommendations and links to polyfills.

API Catalog

Lets you compare implementation of API specifications in major desktop browsers.

Kangax's ECMAScript compatibility table

Overview of JavaScript feature support across browsers and other runtimes.

Node compatibility table

Overview of JavaScript feature support across NodeJS versions.

Is service worker ready?

Overview of support for all features involved in the core technology behind Progressive Web Apps.

In 4 lists

Is PWA ready?

Overview of support for the core and related technologies behind Progressive Web Apps for both popular global and many Chinese browsers.

Is WebRTC ready yet?

Overview of support for the different browser features behind real time communication.

Is WebVR ready?

Overview of support of different browser features behind WebVR including display, gamepad, audio and speech APIs.

Is Houdini ready yet?

Overview of support for Houdini (low-level APIs exposing parts of the CSS rendering engine) across browsers.

Chrome Platform Status

Edge Platform Status

Firefox Platform Status

Webkit Platform Status

(Safari)

MDN Compatibility tables

MDN's web technology documentation has a browser compatibility table end the end of each article.

MDN Browser Compat Data

npm module powering the MDN Compatibility tables.

Device Bugs & Quirks

Crowd sourced collection of weird HTML, CSS, and JS quirks in mobile devices, which you won't find in the other support tables.

Can I Email?

Support tables for HTML and CSS in emails. Inspired by Can I use.

In 2 lists

Project Fugu API tracker

Browser support status overview of web API's filling the "app gap".

iOS PWA Compatibility

Support table for PWA features including service worker, manifest, background sync and push notifications (Unofficial, maintained by Maximiliano Firtman).

Testing Methods

Open Device Lab

Lets you test manually on actual devices (for free).

Text browsers

Good way to test if your content is accessible at the baseline. Try Lynx for example.

Testing in Opera Mini

Download the app, emulate on desktop, setup to test local websites. (Opera Mini accounts for over 5% browser usage world wide)

cURL

Web page to see the pre-rendered source code of a page.

Browserling

Lets you manually test web pages in different versions of browsers on Windows and Android platforms.

In 4 listsDetails

Run Internet Explorer using Virtual Machines

To test IE browsers on other platforms.

Device emulators and simulators

Configure Desired Capabilities in Selenium

Run automated browser tests in different scenarios.

In 9 listsDetails

Lighthouse

Audit and meassure performance of Progressive Web Apps (via cli or Chrome extension).

In 5 listsDetails

Progressive Enhancement checklist (1st edition, HTML)

, Checklist of 2nd edition (PDF) - Actionable list to check you've applied Progressive Enhancement best practices. Part of Adaptive Web Design book.

CSS Feature Toggles

Chrome DevTools extension to toggle support of selected CSS features for testing progressive enhancement fallbacks.

Examples >Custom Form Elements

Fancy radio buttons

Based on HTML radio buttons, visually enhanced using CSS pseudo classes and elements.

Checkboxes & radio buttons

With custom focus, hover and checked state. Enhanced asynchronously.

Toggle switch

Checkbox or radios, visually enhanced to sliding toggle switches using CSS only.

5-star rating

Based on HTML radio buttons, visually enhanced using CSS pseudo classes and elements.

jQuery slider

Accessible, custom slider widget based on a standard HTML select.

jQuery custom file input

Article and library.

React isomorphic form

Set of React form components which can be pre-rendered & handled server-side. They are enhanced client-side without losing state.

Examples >Data Visualisations

Timeline

From definition list to SVG illustration (article with demos).

Charts

From data table to themed charts using HTML5 canvas (article and library).

Examples >Images

Responsive Carousel

List of images enhanced into responsive carousel with various behaviour options.

Lazy Progressive Enhancement

Lazy load images inside <noscript> tags. (note: Evergreen browsers only)

Examples >Menus

Progressive hamburger menu

List of links in footer enhanced to off-canvas menu.

Examples >Page Navigation

Barba.js

Add page transitions with event hooks, cache and prefetch support.

SmoothState.js

Add page transitions with event hooks, cache and prefetch support. (requires jQuery).

In 2 lists

jquery-pjax

Add page transitions with support for multiple containers / content slots (requires jQuery).

In 3 lists

MoOx/pjax

Similar tot jquery-pjax, but without the jQuery dependency.

Turbolinks

Add page transitions with event hooks and cache support. Has adapters to bind to native navigation controls on iOS and Android.

In 2 lists

Make the web work for everyone

Plea to developers to consider browser differences and build a resilient web.

How many people are missing out on JavaScript enhancement?

Research on why in 1.1% of page visits JavaScript isn't loaded.

See category
93

Awesome Vue

vuejs/awesome-vue

🎉 A curated list of awesome things related to Vue.js

Fresh★ 74k1067 entriesPushed 5 days ago
93

Awesome DESIGN.md

VoltAgent/awesome-design-md

A collection of DESIGN.md files analysis by popular brand design systems. Drop one into your project and let coding agents generate a matching UI.

Fresh★ 119k74 entriesPushed 9 days ago
91

Awesome Angular

PatrickJS/awesome-angular

:page_facing_up: A curated list of awesome Angular resources

Fresh★ 10k1944 entriesPushed today
90

Awesome Blazor

AdrienTorris/awesome-blazor

Resources for Blazor, a .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly.

Fresh★ 9.4k375 entriesPushed today
88

Must-Watch CSS

AllThingsSmitty/must-watch-css

CSS talks you have to see covering CSS Grid, flexbox, custom variables, performance, frameworks, tooling, and more! 📺

Fresh★ 4.9k70 entriesPushed 6 days ago
87

Awesome React Native

jondot/awesome-react-native

Awesome React Native components, news, tools, and learning material!

Fresh★ 36k194 entriesPushed 1 month ago