I can’t count how many times recently I’ve seen a comment, tweet, or article discussing the overuse of JavaScript-driven UIs and MV* frameworks for websites and apps that, in most cases, could have been built just fine without these tools.
There are tweets like this one from Jeremy Keith, or this one from Nicholas Zakas. There’s also Peter-Paul Koch’s thoughts on AngularJS.
I think, in some sense, we are in somewhat of a scripting-dependency backlash, and it’s probably a good thing. While ARIA roles and other accessibility features can help, dependency on scripting for displaying simple content seems to be taking things too far. Developers seem to be using flashy new tools just for the sake of it, and not because they are solving an actual problem.
Sadly, we still see even basic content disappearing when JavaScript is disabled. A great example of this is TIDAL, Jay-Z’s new music streaming service. I don’t expect the service itself to work without JavaScript, but, as I pointed out on Twitter, the TIDAL home page displays just a black screen if JavaScript is disabled. Awful!
Like many others, I still feel that the best way to approach app development is to ensure your entire application functions with JavaScript disabled. Any JavaScript and Ajax enhancements can then be layered on top of that by intercepting the default functionality.
Of course, some apps are pointless without JavaScript. Code playgrounds like JS Bin and CodePen come to mind. But in a lot of cases, progressive enhancement techniques can ensure that users are not left without even basic content or functionality.
Do you have any thoughts on this? Are progressive enhancement techniques too old-school? Or is the scripting-dependency backlash a good thing?
This editorial appears in this week’s issue of the SitePoint Newsletter.