Chris put together two posts. A first one by Jim Nielsen who couldn’t update Safari on his Mom’s iPad when a site broke due to the use of the Optional Chaining Operator; and a second one by Eric Bailey with some nuance on the Evergreen part of “Evergreen Browsers”.
As Chris wrote:
But even browsers that I think of as evergreen aren’t always. Eventually, hardware limits the software. The logic isn’t as simple as “if Chrome, then evergreen,” for example.
Safari normally updates via system updates, but in the case of a first-generation iPad Air it is stuck on iOS 12, and no more updates are possible for what Apple considers a “vintage” device. Same deal with a Chromebook stuck at Chrome 76.
When I worked at Small Town Heroes (RIP) back in 2017, we were constantly battling old browser versions that were stuck on old hardware. Even though we could theoretically use CSS Grid then, we couldn’t in practice. In a time when Android 6 was mainstream and Android 7 was gaining users, most of our visits still came from Android 3 and Android 4 devices.
The reason why we saw these higher than usual numbers for old versions was caused by the target audience of our client. We were building web-based games (and more) for Ketnet, a Flemish TV channel that’s targetted towards children. The explanation we found was that parents (rightfully) wouldn’t give their children shiny new tablets, but, instead, they’d pass on the older models whenever they bought a new one.
Thanks to transpilers such as Babel and postcss/autoprefixer we could still write code that uses modern features, and also have it work in older browsers. For some things though, we grabbed back to oldskool methods like relative-absolute positioning — because we knew that’d work consistently. Furthermore, we relied on feature detection to enhance the result and polyfills to cater to these older browsers — IMHO the way we should all do it.