Chapter 2. Progressive Enhancement

Progressive enhancement is a term that often incites intense debate. For many, progressive enhancement can be summed up as “make your site work without JavaScript.” While developing a site that works without JavaScript often does fall under the umbrella of progressive enhancement, it can define a much more nuanced experience.

In Aaron Gustafson’s seminal A List Apart article “Understanding Progressive Enhancement”, he describes progressive enhancement as a peanut M&M: the peanut is the core experience, which is essential to the user. The chocolate is the features and design that take us beyond the naked peanut experience and add some much-loved flavor. Finally, the candy shell, though not necessarily needed, provides added features, such as not melting in your hand. Often this example uses HTML as the peanut, CSS as the chocolate, and JavaScript as the candy shell.

In today’s web application landscape it may be an oversimplification to consider progressive enhancement as simply “works without JavaScript.” In fact, many of the rich interactions and immersive experiences that have come to define the modern Web certainly require JavaScript. For progressive enhancement to be considered an ethical issue in web development, we must tie it back to user needs. Progressive enhancement is about defining what users need to get from your website and ensuring that it is always delivered to them, in a way that will work regardless of network conditions, device, ...

Get Building Web Apps for Everyone now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.