Apple’s browser engine ban is holding back web app innovation
thenewstack.io
thenewstack.io
It seems to me like we haven’t changed much here, resource wise.
Then, particularly on mobile devices, many apps recreate native controls with weird quirks or defects that don’t play nicely with the native conventions. Just like in the Java world, you can get “almost perfect” but if the OS updates or a convention changes, the non-native apps are stuck reinventing the wheel to accommodate change (or they ignore it entirely).
As a developer, I love writing the same app for multiple places. As a user, I find it infuriating to deal with. While Apple is assuredly being lame by preventing other browser engines (I want Firefox, with WebRequest in blocking mode), they’re not wrong if they think that more PWAs will bring problems.
> they’re not wrong if they think that more PWAs will bring problems
Why? Webview-based apps (Cordova, Capacitor) are very common, especially in the long-tail of the App Store. PWAs and Cordova-based apps are more or less exactly the same. The only difference is:
- No 30 % for IAPs for Apple.
- No App Store rules enforcement. Hence, maybe Apple fears some brand damage if a porn PWA gets very popular.
So, the difference for the end user compared to App Store-approved Webview-based apps is non-existant. It must be a policy thing, not a technical thing.
You seem to confuse javascript with an Electron app. Electron apps are web apps, packaged with an entire Chromium build. Each Electron app runs in its own Chromium wrapper. So yes, if you run 5 Electron apps, memory usage will be high.
Javascript is just a programming language. Web apps run in 'the' browser. Any browser. So the same instance of the browser can run multiple web apps without adding the footprint of an entire new browser instance.
> Notification prompts are very unpopular. On Release, about 99% of notification prompts go unaccepted, with 48% being actively denied by the user.
https://blog.mozilla.org/futurereleases/2019/11/04/restricti...
I bought an iPhone after seeing that it had Firefox, but I should have done more research. It's not actually Firefox, just a rebranded WebKit. It doesn't support extensions.
So, after trying a few paid Safari "content blockers" and being dissatisfied, I gave the iPhone away.
How is this a different situation from the antitrust case which prevented Microsoft from bundling Internet Explorer and preventing competing browsers in Windows?
Frankly, I don’t want a fully functional Firefox or Chrome to be available on iOS, because those browsers are essentially an OS all to themselves. And iOS is bad enough on its own, I don’t want someone else to force me to allow an entire ‘nother OS that I have to have on my device.
If you want real-deal Firefox and Chrome on your handheld device, then you need Android or other Linux-based platform. And you will pay the price for choosing such a heavyweight option with such anemic processors.
Personally, I prefer to have a relatively lightweight OS that is jealously guarded, with an App Store that is much more carefully curated, on high speed and powerful processors, and which can remain relevant and fairly current for at least five years or more.
You can either have your cake, or eat it, but you cannot do both. Choose one.
So like I get you but it's not really the user's choice and never has been.
But according to the uBlock Origin developers, the available entitlements and Webextensions APIs are still insufficient to run uBlock Origin..
And I'm ok if Apple don't want to allow PWA features on Safari.
My problem with Apple is that they technically don't allow other browser engines in iOS, all non-safari browsers on iOS are Safari with a skin. That should change.
And regarding Native apps vs. Web apps (PWA), let's imagine some examples, I think is a good exercise to enrich the discussion:
----------
- The NYT app
I think that this can perfectly be PWAs in the state that PWA features are supported right now in 2021. Users can install it, add the icon to the homescreen, get push notifications, save articles to read offline, uninstall it. Pretty good. But Apple don't want that because they will not get a 30% cut for all those NYT subscriptions generated in the app.
----------
- A keyboard app
I never used a PWA that feels snappy like a native keyboard app, or in reality a PWA that have so fast and complex interactions. The latency of native is so smooth. And also, how do you integrate a PWA as a keyboard app in the OS? I don't think is possible right now. In this case I think that web apps do not compete with native, at least for now. Recently I found this Google-developed web app to compress images and is pretty good tho https://squoosh.app/
Did I miss something? Did iOS 15 add push and installabilty for PWAs?
You can install a PWA-capable web app. Try twitter.
... you have to dig into the Share menu, then "Add to home screen".
And prepare for weird bugs because PWA mode on iOS is broken in many, many ways. It introduces bugs that aren't there in Safari or Chrome on iOS (which is also Safari, basically).
I'm at a point where I actively try to prevent Safari from installing a home screen shortcut as a PWA. I "upgrade" web apps to PWA on other platforms, but Safari just gets a regular shortcut which opens in a tab. Too much problems...
Apple's browser ban is literally the only thing in the whole world making it so that publishers have to put any effort into cross-browser compatibility and graceful degradation. Having a browser that people have no choice but to make work that doesn't move at the speed of Google's CI pipeline is such a good thing for users of Not Chrome.
How exactly do you want engineers who don't have an apple computer or phone to test for safari?
Apple is the one that has consistently been either extremely behind on new functionality, or just broken implementation of existing functionality (basic auth on mobile safari comes to mind).
And again, my main issue is that there is no way to test on Safari without owning Apple hardware.
Not sure what your point is, because you're immediately saying you know there are alternatives :)
Of course, those objections could come from good or bad actors alike.
I have an old iPad, I get that Apple doesn't want to support it anymore, fair enough. But a regular user can't install a new browser (without breaking the TOS) despite the hardware still working fine, it's not fast, but it's usable.
The problem: Safari (or iOS Chrome/Firefox) is only updated alongside the main OS. And the thing doesn't support new web standards (CSS Grid and flexbox websites don't work well, and let's not get started with video/image codecs or new JS APIs).
Android (that it's far from perfect) at least allows you to install the last available browser independently of the OS version you have, even non-blink browsers.
With 3rd party engines, Apple could allow a lot of old devices still be usable despite their age. Which sounds bad in the short term for Apple, but imagine situations like a kid buying an old iPad from a pawn shop, learn how to use it, and when he gets a better budget, buy a new one with the OS he is already familiar.
For reference, until 5 months ago "TenFourFox" (a firefox fork) for the PowerPC line of Macs, was still getting updates.
Besides, alongside with other business practices, this it's Apple almost screaming "please do me an antitrust audit" with the Epic case so close. I mean, IE almost broke Microsoft in the 90s.
I get it, legacy systems are painful. But I could see the server depending on the client sending 2 variations. The modern one with new standards and heavy libraries, and a minimalist one with classic standards for old devices. It's a shame AMP didn't went for something like this, and instead went for their own weird standard https://xkcd.com/927/ .
Additionally, the author seems to be under the belief that "if only Safari supported PWAs, they'd be as good as native apps." But that's an exercise in wishful thinking. There's no evidence that that is true, nor has there ever been.
Finally, "write once, run anywhere" has been a dream since the early days of Java and applets. It's never come true, and there's nothing significantly different today about computers that makes it any likelier.
I don't know about y'all, but I have no desire to run a lowest-common-denominator webapp on my iPhone. I paid a premium price for the thing and I want a premium experience from my software.
(I'm still open to the argument that PWAs are a necessity, as opposed to merely a "nice to have," and from a developer who has a track record of publishing high-quality, irresistible apps that customers love.)
Why is write once run anywhere such a bad idea? Most high end applications are pretty declarative - "this is how the program behaves", and then you run it on a platform that someone else should worry about how it actually manages the state/how the computer does the actual computation with hardware.
Web seems like one answer to this. You can serve macOS, linux, windows, and then someone else worries about implementing the browser on those platforms. Seems like it has come true.
What about unity? You can pretty much just click a button and then you build versions for all the different platforms, there shouldn't be specific code in your unity project.
I feel there's plenty of other examples.
Hint: look up “lowest common denominator”.
Because that’s all you’ll get, you follow that model to the conclusion. You won’t be able to write anything or do anything that is not supported on every single platform. You wanna use that nifty new graphics card? Too bad it’s only available on the latest platforms. You wanna use that nifty new machine learning module? Too bad that it can’t run on anything with less than 64GB of RAM and a Tensorflow Engine.
And so on.
If airplanes could only fly as fast and as high as the slowest and lowest flying airplane, then you wouldn’t get very far.
If two wheeled vehicles could only run as fast as the slowest two wheeled vehicle, you wouldn’t get anywhere at any kind of reasonable speed.
You create the worst “tragedy of the commons” when you go for that model. And you make everyone else live with your decision.
Plenty of state of the art machine learning is hopelessly out of reach of individuals, you need racks of gpus and trivia knowledge to know how to actually train something (what random parameters after months of searching worked).
Plenty of games require better hardware, and people accept this. My m1 MacBook is not going to run the latest game at 4k, 120hz.
And boy does it set the bar.
Safari/WebKit is hopelessly behind and suffers from bugs and quirks that makes it very hard to build a decent experience using the web.
Browser choice could help raise that bar.
Regarding battery life, and to quote your own remark, one line below this:
"There's no evidence that that is true, nor has there ever been." - because no other browser was ever benchmarked / tested because there is no other browser.
Regarding security: Having one single attack surface for every single iOS user is not "good security". If Safari/WebKit has a problem, every iOS user has a problem and they can't (temp) switch to an alternative. To fix it, Apple needs to roll out an entire OS update, 15 minutes downtime, reboots and all. And users tend to postpone OS updates because of it.
Regarding privacy: You're saying Safari is better at privacy than Firefox, Brave, etc? We don't really know, do we?
Actually, Safari on iOS has privacy / security features that Chrome, Firefox and others on iOS do not because they can't access the necessary APIs. Apple is actually undermining user privacy and security here.
As for the security argument, if Safari/WebKit has a problem, it is crucial for all users to apply the security fix anyway, even if a third party browser were installed - using the third-party browser might not be sufficient to avoid exploitation.
The last two paragraphs seem to contradict themselves. On the one hand, you are questioning privacy; on the other, you admit that Safari on iOS has exclusive privacy and security features. Nevertheless, forbidding third-party browsers guards against the possibility that such vendors who initially have strong privacy policies might change their minds later.
Which is to say, Safari (and the requirement of iOS users using it) is the last thing holding back Google from complete control of the web at this point.
From what I've learned, WebKit is not engaging in discussions regarding these new features. They could have a say in shaping the web, come up with alternatives, new features, etc. Instead they dig in their heels.
If Safari needs "the requirement of iOS users using it" to hold back Chrome, it tells us people actually want to switch.
Letting Apple decide what's best for us (for reasons that have nothing to do with "what's best for us", I think is safe to assume) is not the solution for the monolith browser problem we're seeing.
I don't want Apple to ever allow non-Safari browser engines onto iOS, because I've been around long enough to know that Chrome will inevitably be the only target for webdevs. The only reason any webdevs support anything but Blink currently is iOS.
I also think that Apple should improve Safari. You and I might disagree on what it means to improve Safari, though.
If you can think of how to avoid the first problem, I welcome your suggestions, but so far the only answer I ever see is, "that won't happen," almost always from people who never ran the NCSA Mosaic browser or used gopher.
So let's advocate for Apple to make Safari better--assuming we can agree on what that means--but never by insisting that they allow a Blink-based browser onto iOS.
P.S. CSS issues, yes! Push notifications and a few other PWA-specific issues, please no.
Sounds almost like an argument against 3rd party apps on Apple's platform overall. Browsers are just one specific type of 3rd party app.
Besides, you should be able to keep using Safari and the impact will be exactly zero :)