Progressive enhancement is an approach to web development that aims to deliver the best possible experience to the widest possible audience — whether users are viewing the site on an iPhone, a high-end desktop system, a Kindle, or hearing it on a screen-reader, their experience should be as fully featured and functional as possible.
People that have the latest devices will get the most progressively enhanced experience, and people on slow connections or less capable devices will still be able to access the information. The site doesn’t need to look the same in every browser, it just need to deliver core content and functionality.
- Basic content should be accessible to all web browsers
- Basic functionality should be accessible to all web browsers
- Sparse, semantic markup contains all content
- Enhanced layout is provided by externally linked CSS
- End-user web browser preferences are respected
- It avoids having to test each new functionality in all browsers and devices. Functionality works by default, enhanced experience will only be available when it is supported.
- Code is easier to understand because HTML is semantic and scripts and styles are written modular. Functional components can be reused across pages and modules.
- It is future proof. The basic functionality will work today and in a few years. Enhancements such as CSS4 and devices capabilities can be build on top of that.