The True Cost of Progressive Enhancement

by Aaron Gustafson

Backing Off From the Bleeding Edge

Some time ago we built a Chrome app for WikiHow. As a Chrome app and a show-piece for the new app store, our client wanted it to have fancy CSS3 animations & transitions, web fonts, a WebSQL “back-end”, offline support, and lots of other “HTML5” bells and whistles. And, as our target was a single browser, we relented when asked to go the single-page app route. The app was built to degrade gracefully (it blocked non-WebKit browsers), but it was not progressively enhanced.

Smart Code, Dumb Phones

In early 2012 we began working with a client who was struggling with the security of their mobile apps. They had numerous native apps that all followed the common convention of using a web service to authenticate users. They are a very security-conscious organization and this setup was creating a bottleneck in deploying new security features. In order to roll out any new authentication method, error state, etc. they had to go through an excruciatingly long, painful, multi-step process:

  1. Expose it via the web service,
  2. Update each app to use the new web service (which might include UI changes, etc.),
  3. Submit each app for approval, and finally
  4. Hope their users downloaded the new version of the app.

Lessons Learned

We’ve been practicing the philosophy of progressive enhancement for a long time. It’s deeply-ingrained in our process and part of who we are as a company. That often makes it difficult for us to put hard numbers against the cost of not doing progressive enhancement and the financial savings of doing things the way we almost always do. Hopefully, these two small case studies help illuminate things a bit for those who may still be a bit skeptical.

Author of Adaptive Web Design and former Web Standards Project manager advocating for web standards & accessibility at @Microsoft.

Author of Adaptive Web Design and former Web Standards Project manager advocating for web standards & accessibility at @Microsoft.