When we talk about browser compatibility, most of the time we define it as a list of minimum version of browsers the application will support. e.g.:
IE9+, Firefox 25+, Chrome 32+, etc.
When testing compatibility, we typically test the baseline and the latest version. If we want to make it more extensive, we can use tools such as SauceLabs to test all versions in between.
My question is not about if we can test for the compatibility, but rather should we or how should we consider which version of browsers should be supported.
For example, I encountered an issue with aurelia-polyfills
.
The library fails to load in Firefox 35 at the line (function(o, s) { ... }(Object, Symbol))
with Symbol is not defined
.
This code works fine in Firefox 29 and in latest (54). I don't know how many versions before and after 35 would experience this issue.
This issue, IMO, has more to do with Firefox and less with the library, as it should dereference Symbol
as undefined
and let the code check and handle it properly. It is similar to the issue that IE doesn't handle keywords such asenum
properly.
Now, the question is, should this consider as a bug for the library or the library should declare this in-between version of Firefox is not supported?
On one hand, it makes sense to exclude this version as it is the "wrong doing" of the browser. Library author can't take the beating on any and all issues made by the browser. Especially nowadays new releases of browsers are much more frequent compared to the past. Some bugs are bounded to happen.
On the other hand, this is precisely what "browser compatibility" is about and should be handled. The library author can't ignore them because they are used by the customer. But in this particular case, it just won't work because whenever accessing Symbol
will crash the system.
Another point is that when the browser compatibility table is updated, it will "shift" to those versions that have the problem.
That means either updating the compatibility table from "IE9+, Firefox 25+, ..." to "IE10+, Firefox 35+,..." and "WTF", or forced to have a much narrower table, e.g. "IE10+, Firefox 52+,...".
I think that we have to either bite the bullet and continue to support "all-recent versions" or leave some holes in the compatibility table and only support the "golden" versions.
What would you recommend?
btw, I have nothing against Firefox and only using it as an example.
When the developers remove the default design in browsers by applying CSS resets, it causes layout compatibility issues. This is due to the lack of support for some layouts or as a result of a non-responsive design on certain browsers or their variations.
Compatibility issues cause users to return to the search engine results page. Online users expect speed and efficiency from the websites they browse. Using a browser compatible website design reduces your site's bounce rates, increases the time users spend on your page, and improves your site's conversions.
For auto updating browsers (Chrome, FX, Safari, Edge) support the latest version only. Corps can freeze on older versions, but supporting that older version is something you can both charge for and recommend against. If a client wants FX35 support then that would be a very singular request - it's not cost effective for you to spend time testing for it when you don't know they're going to want it. Spend that money on the versions the vast majority of customers are going to need first.
Also note that old versions are extremely high risk - FX35 is missing 2½ year's worth of security patches, I wouldn't even let a machine with it installed access our network.
For IE it's much messier. Currently 'live' out there are IE8, IE9, IE10 and IE11 - all with their own quirks and incompatibilities, all no longer actively developed and all pretty much dead in the non-corporate space (non-tech users with a new PC have to go out of their way to get IE11 rather than Edge, so won't). IE11 is a zombie - MS have stopped developing it and only patch security issues (until 2025), but it still shambles on consuming the brains of web developers everywhere.
For some time I think the best strategy in IE has been to support IE11 fully, and offer cut-down/missing functionality for IE8, 9 and 10 with very limited testing. If you find a bug in IE8 turn that feature off and recommend upgrading - IE8 users don't expect smooth animations and rich UI anyway.
This really comes down to a business case: supporting lots of old versions will cost you money, what money will it make? Define the budget that you have for supporting those old versions and then decide on the testing and support strategy that fits.
I would go for the latest versions of all browsers, with some exception:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With