Should Progressive Enhancements Be Required for a Web Application?

If you are building a client-side application in the web browser, what should happen when you turn the programming language off?  This is the issue raised by Steve Webster today.

A lot of people argue that the web is about accessibility and therefore a well designed, standards-compliant web page should practice progressive enhancement.  That is, if JavaScript is shut off, people should still be able to access the page.

I totally agree with this statement.  It is particularly true if you are a company like Yahoo, writing an ad-supported content-driven website where reaching the broadest audience possible is of the utmost importance.  Where is the business value is setting a high bar of entry for readers?

This is not the case however for thick-client web applications like SproutCore apps.  In this case, your users come to your site to use a fast, right, desktop-class application.  JavaScript is the key enabling technology behind the very features your users want to use.  Asking them to turn it on in their web browser only makes sense.

That said, there are a lot of progressive techniques that do still make sense.  Smoothly degrading your CSS for example is an obvious choice.  Also expensive things like animations that make the experience less pleasurable on slower browsers would be obvious places to cut back.  If you do use Flash (maybe for audio or video playback) that’s another good place to avoid requirements; asking users to enable an option built in to their web browser is way different from asking them to download and install a plugin.

If you want to support users with no JavaScript as well, build a reduced functionality site using traditional page-driven models that you can redirect your users to via a <noscript> and <meta> tag in your SproutCore app.

If you’re building a content site like the NY Times or Yahoo’s front page, make sure your page works even with JavaScript turned off.  It’s the best way to bring in the broadest audience.  If you are building a web app however, requiring JavaScript to be turned on so you can deliver a fast, fluid experience on the web will attract more customers because it will set you apart from the competition.