When Should You Use Progressive Enhancement?
![]()
When Should You Use Progressive Enhancement?
by Brian Fegan
Recently, a client approached us with a project that presented an interesting challenge…we were asked to build a robust, data-driven site, behind a user login, that would sit on their JavaScript-based framework. That’s right, a website built entirely out of JavaScript.
There would also be no traditional middleware layer. No PHP, no JSP, no ASP, or the like. All the data for this site would be retrieved via Ajax requests returning XML, which we would then parse, and either store in JSON for later use, or use DOM manipulation to immediately display the data as something useful for the user in the browser.
And there was one final catch: cut down on the number of calls to the data server. So when a user logged in, we would store a vast amount of data one time in memory as a reference for later use, and use JavaScript to navigate to new pages, as opposed to making a traditional page request where we would need to retrieve all that data again with each request.
Needless to say, this site consists of a lot of JavaScript.
But let’s switch gears for a moment and talk a little about what the site looked like. True to practice, the designs we came up with for the site looked spectacular.
With so much data to display on the page, our designers came up with a page layout and data table design that is a pleasure to look at, including plenty of rounded corners, subtle gradients, alpha-transparent borders, and box shadows.
Which brings me to the topic of this article; progressive enhancement.
For those of you who need a quick definition, progressive enhancement is a development technique that “uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing those with better bandwidth or more advanced browser software an enhanced version of the page.” –Wikipedia
As a result of the sheer amount of JavaScript this site would require to serve up page screens to the user, we soon realized that the experience in modern browsers (Firefox, Chrome, Safari) would far exceed the experience in older browsers. Forget IE6, even IE7’s JavaScript and DOM rendering would be visibly slower than the performance you’d see in the modern browsers mentioned.
In cases like this, progressive enhancement screams out at you as a developer.
Traditionally, to implement all those design techniques mentioned above, you would need to use a series of sprites across the site, adding to the number of images being requested by the browser. And in most cases, as much as it can be avoided, extra markup still makes its way into the page to accommodate those design techniques. I’m looking at you alpha-transparent borders!
And since each page of this site was being built by manipulating the DOM via JavaScript, that extra markup means extra JavaScript, and extra DOM rendering. All of which compounds the problem of slowing down the user experience in older browsers visibly, and adding unnecessary complexity to the way modern browsers will render the document.
So, with a site that requires the browser do so much heavy lifting already, why not use all those fancy CSS3 attributes that are all the rage these days to help cut down on all the elements required for the page to render true to the design.
Below you can see an example of one of the table designs from the site. Notice the rounded corners on the first and last rows, the gradients on the table cells, the way the background colors bleed through the cell borders, the highlighted column gradient, and lastly the highlighted row gradient (which can change color according to each user). All of these required the use of a sprite containing the graphical pieces of this particular design puzzle.

Now click here to see that design implemented with CSS3 techniques. Look ma, no images...
So long as you’re using Chrome, Safari, or Firefox 3.6, these will look near identical. (Older 3.x versions of Firefox will be missing the gradients.)
If you view the page using our old friend IE, you’d see this…

(Note: Microsoft claims IE9 will have the same level of CSS3 support that other modern browsers currently have.)
Is this slightly less fancy design in IE an acceptable sacrifice?
For some clients, the answer might flat out be “Absolutely not!!” Especially if the particular project in question is largely a showcase site. However, in cases like this – a data-driven, user-based site – if the site requires so much of the browser already, doesn’t it make sense to give the browser a little less to do for the sake of the user experience?
What do you think?
Brian Fegan is a Web Developer at Fi.
-
karlstanton
2 months ago
Great read, thanks, Brian!
-
karenegould
2 months ago
Really nice post Brian!
-
Steve Manatt
2 months ago
Makes total sense and sounds like this is a fantastic example of implementing the concept of progressive enhancements. FI Rox!
-
thisisal
2 months ago
The answer is a definite yes. The browser should be required to work as little as possible. If the browser has to "wear too many hats" a user will most certainly see a lessened experience in either performance or usability. Ask CSS3 to do everything it can. Push JavaScript to think even faster on its feet. And ask the DOM to referee the whole thing. LOL!
Progressive enhancement has become the new 'cool' in my group.
-
denis
2 months ago
I think we could already use all the stuff that give us css3 and even html5, like, for example, wordpress.com & wordpress.net does. :)
Great post Brian!
-
xulqarnain
2 months ago
It's a great and well crafted article. I am definitely make all my developers read this :)
-
David
2 months ago
Nice Mr. Fegan!
-
ppinho
2 months ago
I'm impressed! I want customers as same as yours with their ultimate challenging requests!!! ;P
Sure hope IE9 would support CSS3... it's about time! -
corebean
2 months ago
thank you F-I for doing a post on this. i have been coding (basic) websites with this very same ideology in mind. i have explained to the client's why i do it this way and thus far, every single one of them has agreed with me and okayed the development.
but this is really nice to see the best agency in the world uses this approach.
-
David Lind...
2 months ago
Excellent article Brian, thanks!
-
clarke78
2 months ago
This is actually a great post. I've been using, and advocating, progressive enhancement for quite awhile now. I've not quite heard that term because so many others refer to it as "graceful degradation" where older version of browsers still are capable of the same core functionality as newer browsers.
To answer your question. Yes. 150% Yes. The community as a whole, and the technology, are evolving rapidly. We are pushing the DOM and JS to it's limits and getting so much more out of it then we used to. Clients expect amazing experiences at lightning speeds. What is needed to be done in the case of a client's need for complete browser compatibility is to set expectations accordingly.
Even for show pieces I don't see a need to create an exact experience on deprecated / outdated browsers. Clients / project managers need to understand and date those technologies. Ask those people whether they are still using a 10 year old computer. Most likely they aren't, but that's the comparison you can use when dealing with someone asking for IE 6 support.
I'm not saying that you have to leave those users high and dry, but the tools we have available in this day an age allow us to easily create experiences for the top of the line browser while allowing fallbacks for those less fortunate (ie. CSS3, HTML5).
Cheers!
(and great post)
-
David Philip
2 months ago
From my point of view this makes sense as "Form follows function".
-
acefx
1 month ago
You know what, screw IE, they've always been behind and this is not good for designers.
I develop alot of sites with round corners and for IE i have to start writting series of JQuery to sustain that yet IE still fails sometimes.
PNG transparency is another ache with IE.
I think Microsoft needs more work to make their browser standard cause they've always been behind.
I sometimes do two designs now, for other browsers and for IE.
Looking into JS as serving the whole site, i think the future is going to be bright cause alot of projects are now looking into JS sustaining sites and Server sides doing less. We did a project recently that PHP only serves onces and every other proccess is in JS and when forms are filled we use Java's vector in managing data before pushing everything back to DB again. So JS does like 70% while PHP only 20%.
Thanks for the post man, really something to think of.
-
denis
1 month ago
Quoted from: acefx - "You know what, screw IE, they've always been behind and this is not good for designers.
I develop alot of sites with round corners and for IE i have to start writting series of JQuery to sustain that yet IE still fails sometimes.
PNG transparency is another ache with IE.
I think Microsoft needs more work to make their browser standard cause they've always been behind.
I sometimes do two designs now, for other browsers and for IE.
Looking into JS as serving the whole site, i think the future is going to be bright cause alot of projects are now looking into JS sustaining sites and Server sides doing less. We did a project recently that PHP only serves onces and every other proccess is in JS and when forms are filled we use Java's vector in managing data before pushing everything back to DB again. So JS does like 70% while PHP only 20%.
Thanks for the post man, really something to think of."
And what about security in this site, where almost all stuff made in JS? What about slow computers or netbooks? The best way to create round corners is still images. The best way to use transparency in ie is filters, You just don't us it, but You should try ;) JS is not good solution for this stuff. It doesn't make somethink new or imposible, it does that things, that you just don't know and make all things work slower.
-
Cobo
1 month ago
thx for that very interesting post.
-
Brian Fegan
1 month ago
thanks for all the comments, everyone!
i think its interesting that everyone agrees for the most part, and we haven't had one designer come in saying they feel their designs need to look exactly the same across all browsers, new and old.
-
gern
1 month ago
If we don't start excluding IE6 from our development when will it stop? Kill it. Kill it now. I pretty much feel that way about all versions of IE, but my clients don't, so it's one step at a time. MS just makes the lives of developers more troublesome.
To add comments please login OR signup and activate your account by clicking the activation link in the signup confirmation email.



Comments (17)