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.