Everyone wants a responsive web experience, hence why the likes of Mozilla, Microsoft and Google continue to fine-tune the guts of their browsers. But once the easy optimisations are done, you have to be a little more aggressive with your improvements. Google nearly took it too far with the latest Chrome, which was originally going to massively "throttle" background tabs... a change that would have busted popular web apps including Slack and Discord.
It seems logical to limit, or throttle, the resources of browser tabs you're not looking at, providing more for the foreground tab and the operating system in general. This was a feature Google was planning to roll-out in Chrome 56, but after activating it in the browser's beta, decided to hold back after receiving some troubling feedback from testers.
As web developer Samuel Reed writes, the idea behind the throttling feature was to give each background tab a budget. Exceed that budget and the tab would have to wait a while — potentially minutes — before it could do anything.
So what's the problem? I'll let Reed explain:
This is generally a Good Thing. Browser vendors should be concerned about battery life, and this will do a lot to help. Unfortunately, this implementation is ignoring the new reality: the browser is no longer just a reading device; it is the world's largest application platform.
This will break the web.
Reed goes on to detail how web apps the rely on behind-the-scenes processing for say, notifications, would be wrecked by this change. Fortunately, Google didn't ignore the outcry and held the optimisation back for further work:
Unfortunately, our current implementation throttles WebSockets. Because of this we ARE NOT SHIPPING this intervention in M56.
The current plan is to disable time-budget background timer throttling for the pages with active connection (websocket, webrtc and server-sent events) and to ship in M57 (subject to further feedback).
We will keep you updated with the progress.
Definitely an improvement, but one Google will likely want to test extensively before Chrome 57 arrives...