Evergreen Browsers

Posted by EisenbergEffect on February 17, 2014

There's lots of hype these days about HTML5. Never mind that no one actually knows what "HTML5" is. But with all the talk, it's surprising that so very few have blogged about what could possibly be the most important browser feature to date.

Automatic Update

Yep, that's it. It's that simple. Firefox, Chrome, Safari and IE10 browsers all have the ability to update themselves. Think about that for a second.

What if IE6 had released with auto-update capability?

Let's consider the Chrome browser. If you use Chrome, chances are, you don't even know what version you're running. That's because Chrome (and Firefox, Safari and IE10) is an Evergreen Browser. That means it always keeps itself up to date with the latest stable release. You don't need to do anything to make that happen.

The term Evergreen Browser seems to have been coined by Paul Irish of jQuery fame sometime in 2012.

This significantly changes front-end web development. Essentially, it means that when targeting Evergreen Browsers, you can be pretty confident that if your code runs on your browser, it's going to run on your customer's browser too.

In this day of Evergreen Browsers it's even more important that JavaScript developers aren't writing conditional code based on "user agent sniffing" or other mechanisms of determing a browser's version. Instead, use feature detection...or just use a polyfill for whatever feature you want. Then, when the browser updates itself the native implemenation will take over in place of your shim code.

A polyfill provides a fallback implementation for a browser that doesn't natively support a particular API or feature.

Now, I don't want you to think that I'm wearing rose-colored glasses over here. This still doesn't solve all our problems. For example, there's always IE. While the other browsers are heavily leveraging their auto-update capabilities by making frequent releases with new features, bug fixes and security patches, the IE team has yet to embrace an agile iterative strategy. To put it in persective, Chrome seems to update about once a month, while IE is still only updating once a year at best. Some have speculated that this has to do with IE's strong connection to the OS. Additionally, other browsers let you turn off the auto-update feature which can obviously thwart some plans.

All in all, things are in much better shape today, now that every browser has an auto-update capability. In fact, that's one of the reasons why "HTML5" is so nebulous. Browsers really aren't going to be hitting major web standards version milestones. Instead, you're going to see a constant stream of improvements as additional specs get implemented one-by-one by the various browsers, as they see fit. (This includes new language features too!) Polyfill usage will be common, but over time old polyfills will cycle out and new ones will come into play.

The strategy is fairly straight forward for modern web apps. Start with Evergreen Browsers as your baseline. Code to the feature, using polyfills where appropriate. Watch the platform underneath your app steadily enhance itself (and your app) as time passes.