A few weeks ago, I Tweeted how web developers should appreciate WebKit/Safari as it’s really the only browser that can keep “Chromium’s dominance in check”. In hindsight and as is the case with many Tweets, my wording could have been clearer. What I meant by “in check” here was that Safari on iOS is really the only browser that prevents Chromium from unilaterally dictating web standards. Not surprisingly some people took umbrage with this sentiment, but not in a way that I expected. I expected pushback that Safari was a laggard in standards adoption, an argument that maybe had more merit a few years ago. Instead, I saw an argument about how Apple bans all competition from iOS and deliberately cripples Safari to hold the web back. While I get the argument that Safari benefits from default status in iOS, the notion that Apple is deliberately making Safari worse is absolute nonsense. Honestly, I thought the conflation of iOS being a closed platform with the merits of Safari were a bit of a reach until I privately discussed the topic with John Gruber, who quickly and smartly pointed out that it was really about progressive web apps (PWAs).
Progressive web apps are “write once” web applications written an HTML, JavaScript, and CSS that can be “installed” on any mobile or desktop computer via the browser. They are an alternative to “native” applications that are written for a specific platform using that platform’s languages and frameworks. As far as I can tell, the biggest boosters behind progressive web apps are Google and more recently Microsoft.
Progressive web apps are an obvious fit for Google, a web company with many popular web services and a web based OS. But why Microsoft? At first glance, Microsoft seems like an unlikely bedfellow for progressive web apps. Why would the maker of Office make it easier for its customers to use something like Google Docs? What I believe is that Microsoft realized they couldn’t stop Google Docs or progressive web apps given the popularity of Chrome. Chrome is not just a browser. It’s also an alternative platform that, unlike Java and Flash before it, is beloved. Web-based developers love its features and tools. IT departments love not having to install and troubleshoot software that runs through a browser. Users love not having to update their software. So long as Chrome is ubiquitous, Google is an existential threat to Microsoft. So what is Microsoft doing? To paint a picture, here’s an incomplete timeline of events that I’ve noticed over the past few years.
- April, 2014 – Microsoft releases Typescript, a superset of JavaScript that adds optional static typing.
- April, 2016 – Microsoft releases Visual Studio Code as a free, platfrom agnostic, source-code editor built on Electron, a popular framework for building apps using JavaScript.
- August, 2016 – Microsoft releases Windows Subsystem for Linux, making it much easier to run Linux within Windows 10
- June, 2018 – Microsoft acquires Github.
- January, 2020 – Microsoft replaces Edge’s proprietary browser engine with Chromium.
- March, 2020 – Microsoft owned Github acquires NPM, a very popular package manager for JavaScript-based apps.
- November, 2020 – Microsoft releases WebView2, that promises to bridge web apps, including progressive web apps, with the capabilities of native apps.
- March, 2021 – Microsoft starts auto installing WebView2
- June, 2021 – The official Twitter client for Windows becomes a WebView2-based PWA.
- June, 2021 – Microsoft migrates it’s Teams app from Electron to WebView2.
By going all in on JavaScript-based cross platform development, Microsoft has clearly decided to become Google before Google becomes Microsoft1.
So why doesn’t Apple want to support progressive web apps? People assume it’s just because progressive web apps would hurt App Store revenue. While I am sure that’s certainly a factor, I suspect the App Store is the least of Apple’s concerns. Like Microsoft, I suspect Apple sees progressive web apps as an existential threat. Unlike Microsoft however, Apple can’t address this threat by completely embracing progressive web apps. At the end of the day, Microsoft can become Google because they are both software and services companies. Their bottom lines go up when their stuff gets installed on more devices and the cost of supporting those devices goes down. By comparison, Apple is a hardware company. Apple makes money selling premium devices by marrying premium hardware with best-in-class user experiences. Progressive web apps would invariably dilute both.
“Write once” solutions necessarily prioritize consistency across platforms, which invariably leads to lowest common denominator software designed to support lowest common denominator hardware. Not only does this handicap the advantages of premium hardware, it also creates a barrier to releasing competitive hardware features. A feature like Touch ID only works when software APIs can be immediately updated to support new hardware capabilities. Apple could not unilaterally release something like Touch ID in a world where it doesn’t have direct control over its APIs. Progressive web apps are an existential threat to Apple, not because they could be an end around to the App Store, but because they could lead to a loss of platform control. Apple wouldn’t be able to justify $1000 phones when most of the software works just as poorly as it does on $300 phones.
All that said, I think Apple should consider supporting progressive web apps.
Part of my argument on Twitter was that Apple is a company that, like any company, acts in its own interest. Up until recently, I think not supporting progressive web apps was in Apple’s interest for all of the reasons I listed above, but the situation has changed. Apple has been facing increased scrutiny over its App Store. Regulators are increasingly pushing to force Apple to allow alternative payment processors and even to allow apps from sources other than the App Store.2 To reiterate, Apple’s nightmare scenario is not losing the App Store exclusivity, it’s losing control of its platforms. In my mind, the quickest way that happens is as follows:
- Regulators force Apple to allow apps to be installed outside of the App Store.
- Other large companies such as Microsoft, Google and Epic use this as an opportunity, not just to install apps, but also to install runtimes for their own app platforms.
- Apple can no longer easily push changes to its own frameworks as doing so means going through these competing runtimes.
Apple loses on two levels in this scenario. Not only could native iOS apps be install from anywhere, some of those apps would invariably be runtimes for competing platforms that Apple has zero control over. Chromium progressive web apps already exist and could easily be the first, if not the biggest one of these competing runtimes.
Embracing progressive web apps in Safari might be able to kill two birds with one stone. Regulation-wise, Apple could point to PWA support as a viable “open” and “standard” alternative to its closed App Store. Control-wise, Apple could still have a heavy hand in how progressive web apps work on its platforms. Safari-based progressive web apps could be limited or extended in ways the best serve Apple and its customers. Apple could further use the inherent limitations of progressive web apps to distinguish native experiences only available in the App Store.
Apple’s choice is obvious when the only options on iOS currently are progressive web apps or no progressive web apps. I would think that choice would be equally obvious if and when those options became Chromium progressive web apps or Safari progressive web apps, because while Chromium being able to unilaterally dictate web standards would be bad, it being able to unilaterally dictate app standards on iOS would be much worse.
-
Microsoft’s current pivot toward JavaScript and the web is eerily reminiscent to the one kicked off by Bill Gates in the 1990s. This may sound crazy, but I might be a little worried if I were Google. ↩︎
-
I think it goes without saying that Apple’s hubris with its App Store has certainly made matters worse for the company in that I don’t think we’d see this kind of heavy handed regulation being discussed in some alternate reality where Apple still had good developer relations. ↩︎