progressive-enhancement-resources
Enhancement guide
A collection of resources and examples on Progressive Enhancement strategies for web development
Resources on Progressive Enhancement. From concept and strategies to feature detection & testing methods. Complete with a list of (code) examples.
135 stars
12 watching
7 forks
last commit: almost 2 years ago
Linked from 3 awesome lists
awesomeawesome-listexamplesfeature-detectionlistopen-sourceprogressive-enhancementsupport-tables
Progressive Enhancement Resources / The Concept | |||
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 | (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) | ||
Progressive Enhancement Resources / 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 | ||
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 (aka ) | ||
Application Shell Architecture | Setup for instant loading web apps | ||
Progressive Enhancement Resources / Feature Detection | |||
CSS feature queries | ( & ) - 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 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 | ||
Progressive Enhancement Resources / 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 | ||
I want to use ... | Figure out the browser support of combinations of features | ||
HTML5 Test | Test and compare HTML5 feature support across browsers | ||
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 | 65 | about 7 years ago | Support tables for type and typographic features on the web |
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 | ||
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 | ||
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 | 5,032 | 5 days ago | npm module powering the MDN Compatibility tables |
Device Bugs & Quirks | 864 | almost 9 years ago | 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 | ||
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) | ||
Progressive Enhancement Resources / Testing Methods | |||
Open Device Lab | Lets you (for free) | ||
Text browsers | Good way to test if your content is accessible at the baseline. Try 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 | ||
Run Internet Explorer using Virtual Machines | To test IE browsers on other platforms | ||
Device emulators and simulators | |||
Configure Desired Capabilities in Selenium | 30,979 | 2 days ago | Run automated browser tests in different scenarios |
BrowserStack | Continuously run automated tests in different browsers using , or other alternatives | ||
Lighthouse | 28,510 | 5 days ago | Audit and meassure performance of Progressive Web Apps (via cli or ) |
Progressive Enhancement checklist (1st edition, HTML) | , - Actionable list to check you've applied Progressive Enhancement best practices. Part of | ||
CSS Feature Toggles | Chrome DevTools extension to toggle support of selected CSS features for testing progressive enhancement fallbacks | ||
Progressive Enhancement Resources / 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 | 34 | over 2 years ago | Accessible, custom slider widget based on a standard HTML select |
jQuery custom file input | Article and library | ||
React isomorphic form | 31 | over 8 years ago | Set of React form components which can be pre-rendered & handled server-side. They are enhanced client-side without losing state |
Progressive Enhancement Resources / 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) | ||
Progressive Enhancement Resources / Examples / Images | |||
Responsive Carousel | List of images enhanced into responsive carousel with various behaviour options | ||
Lazy Progressive Enhancement | 191 | over 4 years ago | Lazy load images inside tags. (note: Evergreen browsers only) |
Progressive Enhancement Resources / Examples / Menus | |||
Progressive hamburger menu | List of links in footer enhanced to off-canvas menu | ||
Progressive Enhancement Resources / Examples / Page Navigation | |||
Barba.js | Add page transitions with event hooks, cache and prefetch support | ||
SmoothState.js | 4,423 | about 3 years ago | Add page transitions with event hooks, cache and prefetch support. (requires jQuery) |
jquery-pjax | 16,718 | about 2 years ago | Add page transitions with support for multiple containers / content slots (requires jQuery) |
MoOx/pjax | 1,458 | about 2 years ago | Similar tot jquery-pjax, but without the jQuery dependency |
Turbolinks | 12,709 | over 3 years ago | Add page transitions with event hooks and cache support. Has adapters to bind to native navigation controls on iOS and Android |
Progressive Enhancement Resources / Related Articles | |||
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 |