Hacker News new | past | comments | ask | show | jobs | submit login
Apple’s browser engine ban is holding back web app innovation (thenewstack.io)
100 points by feross 18 days ago | hide | past | favorite | 52 comments

A decade ago, Java was derided for letting developers ship apps on multiple platforms while forgoing native controls, with a high memory and storage footprint with the JRE through the JVM. While JavaScript is not Java, it has essentially become Java: instead of shipping a JRE and Jars, it’s the entirety of Chromium, with its JS VM, and a relatively high memory and storage footprint.

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.

I agree with everything, one thing though:

> 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.

iOS 15 changed the default text color of <button> elements to blue. Thanks Apple, it is very helpful and certainly not defacing many apps and sites at all! /s

You're about a decade off. It's been over two decades! (Remember Java Swing?)

> [Javascript is] the entirety of Chromium, with its JS VM, and a relatively high memory and storage footprint.

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.

I'm guessing the author wants site to be to send notifications. Please never do that. PWA are 99.999% spam. See Firefox’s research on the topic. I hate every time I visit a new site and there’s some dumb pop up on my browser asking me to enable push notifications. Sometimes I miss click and end up having to go through the annoying process of removing them. The recent mozilla study showed that sites already try and show <<100s billion notifications to users a year, let's not add to that.

> Notification prompts are very unpopular. On Release, about 99% of notification prompts go unaccepted, with 48% being actively denied by the user.


I just want ublock origin on iOS.

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?

There are decent ad blockers available for iOS. But they have to be integrated into the OS and not the browser.

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.

Nobody is forcing you to install Firefox/Chrome - you are completely free to follow your choice. We merely don't want your opinion enforced on us and desire the freedom to install a browser of our choice.

That's not how this works though. There at least needs to be an acknowledgment that once iOS allows Blink based browsers that developers will suddenly not care at all about Safari and tell users to install Chrome if something doesn't work.

So like I get you but it's not really the user's choice and never has been.

Although they still need to be installed as an app from the app store, ios 15 now supports WebExtensions https://developer.apple.com/safari/extensions/

But according to the uBlock Origin developers, the available entitlements and Webextensions APIs are still insufficient to run uBlock Origin..

This topic has so many layers.

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/

> Users can install it, add the icon to the homescreen, get push notifications

Did I miss something? Did iOS 15 add push and installabilty for PWAs?

Push notifications are still not a thing on iOS (not for websites/-apps).

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...

Ok. Thanks. So no real changes with iOS 15

Anyone defending Safari has never had to write an app for it. It is so full of bugs I’d be amazed if someone didn’t run into problems with it. A core reason to reverse the AppleBrowserBan is so that it forces Apple to actually fund the Safari team properly. Apple has no incentive whatsoever to make Safari stable let alone add features that would let web-apps compete with native apps.

This argument makes no sense. When people want "other browser engines" on iOS what they mean is "I want Blink so I can write my websites only for Chrome and push the operational burden on browser vendors to maintain compatibility" which isn't exactly innovative.

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.

Alternative view point: other browsers on ios would actually force apple to compete and make designing for safari not a cluster fuck.

How exactly do you want engineers who don't have an apple computer or phone to test for safari?

Compete on what though? Every web developer right now has no choice but to design for Chrome as well. You just don't care because it's what you would have chosen anyway. There's no "competition" in the browser engine space. There's only posturing for market share dominance and lock-in which you can call competition if you like, but nobody is competing based on "may the browser users like best win."

Browser specs are actually pretty well communicated. Most stuff get buy in from major players in the game (e.g. Google and Mozilla). Some stuff remain specific to one browser (e.g. idle detection in Chrome).

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.

True, but if I want to test Chrome I need to install spyware on my computer. ( I'm aware of Chromium releases)

So.. you're saying you can use (pure) Chromium or Brave, Edge, etc, to test, right?

Not sure what your point is, because you're immediately saying you know there are alternatives :)

Point is that Google is not a saint for following web standards.

Compete on standards adherence? Look at how many features are either only partially supported or totally unsupported on Safari vs. other browsers: https://caniuse.com/?compare=firefox+94,chrome+97,safari+15,...

It may also mean "I don't want to pay the 30% app store tax, be subject to their review process, purchase an Apple device for development, etc."

Of course, those objections could come from good or bad actors alike.

I think we’re talking web apps, but the third complaint could still be valid.

Right, but building a web app is a way to not have to use the app store payments. But web apps' capabilities are limited, so you must build a native app and go through the app store.

Certainly, Apple's crippling of PWAs and total control of browsers on their platform is a problem, but I've seen enough to know that what (web) devs really want is Chrome (or, more accurately, a monoculture). Whether it's Chromium in a browser (Chrome, Edge, Opera) or Chromium in an app shell (Electron), your stack is never good enough unless it's Chrome. Hopefully both Apple and Google have their worst aspects reined in at approximately the same time because otherwise we're just going to move the problem to the web layer.

My main issue with this, it's how the "only one web engine" creates an unnecessary e-waste, creating artificially obsolete devices.

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.

Could this also be a critique of the ever changing web “standards”?

A little bit... but more, in the lack of backwards compatibility.

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/ .

None of the arguments about battery life, security, or privacy were contradicted in this article.

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.)

The fundamental ideas underlying the architecture may not be radically different (I mean apart from things like gpu, threading, etc), but certainly our knowledge of programming, and programming languages have changed.

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.

> Why is write once run anywhere such a bad idea?

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.

I feel that is already the situation with software?

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.

It's kind of funny because iOS is currently the “lowest common denominator” - by far - when it comes to the web.

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.

It's not a bad idea if you don't care about security, performance, native look-and-feel, or battery life. Most users care about these things. They do not care about developer productivity.

I don't see why these are orthogonal objectives. You still have to write efficient declarative code. If I say spawn 10 billion divs as part of the spec then clearly that's an issue. Funny, a lot of developers complain about things like rust and Haskell being too slow to get stuff done in. I agree, the user and those things should be the priority. Developer time should not be the main priority. But I would say the majority of developers do not even optimise for those things (php, c, every language without typing, strict memory models etc).

These factors only relate to performance. There are still native look and feel, battery life, privacy, and security issues to be addressed.

> None of the arguments about battery life, security, or privacy were contradicted in this article.

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.

Because it is an Apple-written browser, Safari is able to use privileged libraries and JIT functionality that it denies to third-party applications. (It is very difficult to verify the security and compliance of third-party applications that are allowed to perform runtime compilation of code.) This improves performance and battery life. Other browsers would not be able to have the same ability, and so it follows they would sacrifice performance and battery life.

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.

Oh wow, the comments on here really go into the opposite direction of what I was expecting. How come people fear chrome becoming the only option for browsing, but at the same time don't agree that apple should be incentivised to better safari? I mean, who if not Apple has the ressources to compete with google on the browser front.

I'm not sure why you think people can't, or don't, do both?

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.

So, the issue is that the "innovation" Safari is often accused of "holding back" is privacy-invasive features proposed by Google engineers.

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.

Which features are we talking about? Bluetooth? NFC? Contacts? Because native apps enjoy all of them, AFAIK. These same features tend to have extra protections built in that native apps do not to ensure privacy and security. The web is extremely paranoid when implementing these features.

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 built a "creative" website over the last few months. I had to jump through many hoops to get very standard css behavior to work on safari. Transform scale for example leads to text being rendered pixelated while transformZ is not 0. Firefox and Chrome don't have this bug, which has been around for years on Safari. Last time I checked, CSS was not privacy invasive.

Agreed. I've had display: flex make a component inline on random elements in a web app. No discernible reason whatsoever, just some flex elements dont appear on the screen as boxes. There's a reason web devs say Safari is the new IE.

Apple is not a web company like Google. Apple sells hardware with bundled software. Apple sucks at web, understandable so, thus competing with Google on their terms is foolish, better to compete with Google on things Apple understands, hardware.

> “battery life, security, privacy, and a stance against Chrome dominating the entire web”

Sounds almost like an argument against 3rd party apps on Apple's platform overall. Browsers are just one specific type of 3rd party app.

related: Flash still hasn't really been replaced...

I completely get the sentiment of the article, but if the point is diversifying browsers on iOS the battery life issues seem significant.

We don't really know if there's going to be a hit on battery life because we've never been able to test this (since there are no alternative browsers to test with).

Besides, you should be able to keep using Safari and the impact will be exactly zero :)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact