Safari is the New Internet Explorer

Meghan (she/her) - Jan 14 '18 - - Dev Community

Image credit: blog.html5test.com

A little while ago, someone at The Verge posted an article titled "Chrome is turning into the new Internet Explorer 6". And today I would like to strongly refute this. The reason I dislike this article so much is because it not only brings up valid points but in the process of doing so, proves its title wrong and completely subverts the problem that it is trying to bring light to.

The issue that Chrome is starting to suffer from is that it is becoming too good. Google just has so many people invested in the entire process of web development stack (standards spec writing, browser engineering, site development, etc) that the other browsers are having a hard time catching up when it comes to releasing new features.

However, this was not the issue that Internet Explorer faced. From the article,

Ignoring web standards meant that developers started to code their sites around Internet Explorer specifically, and would recommend that their customers only accessed their site through Internet Explorer.

Internet Explorer (and ergo Microsoft circa 2006-ish) did not only not participate in standards development, but went off standard, thus forcing web developers to do the same in order to cater to the browser that had a +90% market share.

We went from seeing charts like this:
ie

To charts like this:
chrome

Chrome has spoiled us and if you are lucky enough to have played with the shiny new APIs recently, I hope you have Chrome because ES6 Modules are still not implemented in Firefox, And both Firefox and Edge do not support Custom Elements (Firefox just enabled it in Nightly for FF 59)

But Safari. Safari has both**.

Oh. You might've noticed that the "both" had a big asterisk next to it. Yes, because as I said in my title Safari is the new Internet Explorer. Safari supports many, many APIs but with just enough differences that you have to be aware of them.

  • With ES6 Modules: Safari requires that you include the .js extension in include statements, and (in my experience) will sometimes only see a function inside a module (from within a module) if you export it.
  • And with Custom Elements: Safari does not support the :host CSS selector so much of the embedded CSS that you might try to add probably won't work.

And just today, I was working on making a compass PWA, and I found a discrepancy in the deviceorientation Event on iOS where the alpha value of the Event will reset to the initial value of the gyroscope on every page load. So, instead of taking advantage of the absolute property from the spec, they added their own webkitCompassHeading property for the compass value.

Oh Apple..

😩

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .