Just last week I got one of those really?! 🤨 faces when this fact came up in conversation amongst smart and engaged fellow web developers: there is no browser choice on iOS. It’s all Safari. You can download apps that are named Chrome or Firefox, or anything else, but they are just veneer over Safari. If you’re viewing a website on iOS, it’s Safari.
I should probably call it what the App Store Review Guidelines call it: WebKit. I usually think it’s more clear to refer to browsers by their common names rather than the engine behind it, since each of The Big Three web browsers have distinct engines (for now anyway), but in this case, the engine is the important bit.
I’ll say how I feel: that sucks. I have this expensive computer in my pocket and it feels unfair that it is hamstrung in this very specific way of not allowing other browser engines. I also have an Apple laptop and it’s not hamstrung in that way, and I really hope it never is.
There is, of course, all sorts of nuance to this. My Apple laptop is hamstrung in that I can’t just install whatever OS I want on it unless I do it a sanctioned way. I also like the fact that there is some gatekeeping in iOS apps, and sometimes wish it was more strict. Like when I try to download simple games for my kid, and I end up downloading some game that is so laden with upsells, ads, and dark patterns that I think the developer should be in prison. I wish Apple just wouldn’t allow that garbage on the App Store at all. So that’s me wishing for more and less gatekeeping at the same time.
But what sucks about this lack of browser choice on iOS isn’t just the philosophy of gatekeeping, it’s that WebKit on iOS just isn’t that great. See Dave’s post for a rundown of just some of the problems from a day-to-day web developer perspective that I relate to. And because WebKit has literally zero competition on iOS, because Apple doesn’t allow competition, the incentive to make Safari better is much lighter than it could (should) be.
It’s not something like Google’s AMP, where if you really dislike it you can both not use it on your own sites and redirect yourself away from them on other sites. This choice is made for you.
My ability to talk intelligently about this is dwarfed by many others though, so what I really want to do is point out some of that recent writing. Allow me to pull a quote from a bunch of them…
iOS Engine Choice In Depth — Alex Russell
None of this is theoretical; needing to re-develop features through a straw, using less-secure, more poorly tested and analyzed mechanisms, has led to serious security issues in alternative iOS browsers. Apple’s policy, far from insulating responsible WebKit browsers from security issues, is a veritable bug farm for the projects wrenched between the impoverished feature set of Apple’s WebKit and the features they can securely deliver with high fidelity on every other platform.
This is, of course, a serious problem for Apple’s argument as to why it should be exclusively responsible for delivering updates to browser engines on iOS.
Chrome is the new Safari. And so are Edge and Firefox. — Niels Leenheer
The Safari and Chrome team both want to make the web safer and work hard to improve the web. But they do have different views on what the web should be.
Google is focussing on improving the web by making it more capable. To expand the relevance of the web, to go beyond what is possible today. And that also means allowing it to compete with native apps, with which the Android team surely does not always agree.
Safari seems to focus on improving the web as it currently is. To let it be a safer place, much faster and more beautiful. And if you want something more, you can use an app for that.
Browser choice on Apple’s iOS: privacy and security aspects ? Stuart Langridge
Alternative browsers on iOS aren’t just restricted to WebKit, they’re restricted to the version of WebKit which is in the current version of Safari. Not even different or more modern versions of WebKit itself are allowed.
Even motivated users who work hard to get out of the browser choice they’re forced into don’t actually get a choice; if they choose a different browser, they still get the same one. If there’s a requirement from people for something, the market can’t provide it because competition is not permitted.
Briefing to the UK Competition and Markets Authority on Apple’s iOS browser monopoly and Progressive Web Apps — Bruce Lawson
[…] these people at Echo Pharmacy, not only have they got a really great website, but they also have to build an app for iOS just because they want to send push notifications. And, perhaps ironically, given Apple’s insistence that they do all of this for security and privacy, is that if I did choose to install this app, I would also be giving it permission to access my health and fitness data, my contact info, my identifiers sensitive info, financial info, user content, user data and diagnostics. Whereas, if I had push notifications and I were using a PWA, I’d be leaking none of this data.
So, we can see that despite Apple’s claims, I cannot recommend a PWA as being an equal experience an iOS simply here because of push notifications. But it’s not just hurting current business, it’s also holding back future business.
I’ve heard precious few arguments defending Apple’s choice to only allow Safari on iOS. Vague Google can’t be trusted sentiment is the bulk of it, privacy-focused, performance forced, or both. All in all, nobody wants this complete lack of choice but Apple.
As far as I know, there isn’t any super clear language from Apple on why this requirement is in place. That would be nice to hear, because maybe then whatever the reasons are could be addressed.
We hear mind-blowing tech news all the time. I’d love to wake up one morning and have the news be “Apple now allows other browser engines on iOS.” You’ll hear a faint yesssssss in the air because I’ve screamed it so loud from my office in Bend, Oregon, you can hear it at your house.
Microsoft bundles IE in Windows and gets in a giant federal lawsuit.
Apple restricts all browsers to use their engine and it’s fine.
Yes they aren’t a “Monopoly”, but are we saying that means a company worth TWO TRILLION DOLLARS doesn’t have sway in de facto standards?
IIRC one of the “reasons” for not allowing other engines is security: by not allowing allow write access to executable memory it improves security so Apple are protecting users! (?)
Then there is JIT-less V8 made to workaround that. It don’t workaround Apple’s guidelines, but show that’s possible to run a JavaScript engine other than Webkit’s even if memory restrictions are kept, at the expense of being 40% slower.
So, even if Apple removed the Webkit requirement, unless the memory restriction is removed other engines are still in disadvantage… which is unlikely, as Apple will argument it’s a important security feature from their OSes.
But let’s be positive, I hope someone can get Apple to allow Safari to be updated separately from their OSes! It was one of Android issues some years ago and was fixed. Also Apple can’t argument that doing so will be bad for security. It’s not an ideal solution, but would help.
I think it’s essential that other browser vendors are allowed to ship browsers with JIT. This would need to involve some Browser Entitlement certification process, but there are many options here. The article by Alex Russell linked above is worth a read especially https://deploy-preview-19–infrequently.netlify.app/2021/08/webkit-ios-deep-dive/#just-in-time-pretexts
And at the same time Apple is criticizing the EU for hindering innovation when enforcing devices to use USB-C cables, while being so innovation stopping on their devices.
I guess innovation is only supposed to be good if it’s coming from Apple Inc.
I’d love to wake up one morning and have the news be “Apple now allows Push Api & Notifications Api”
I think, historically at least, part of the reason has been battery life. If you use Safari on your Mac, you’ll see significantly better battery life than if you use Chrome, and on mobile devices battery life is often more important. I can see Apple not wanting people blaming them for poor battery life, when in fact it’s just due to Chrome being inefficient.