Electric sheep, PWAs, and Apple's iOS 17.4
Mar 2024I remember well my first days with the original iPhone. It was not yet available in Australia, so myself and a fellow tech-obsessed compatriot imported 10 of them in to the country, distributing them amongst friends in Sydney, certainly not smuggling a few in to New Caledonia and finally keeping one each for ourselves.
Nobody had seen a touch screen before. The Nokia N95 was the absolute king of the camera phone playground, sporting a 5 megapixel camera and Carl Zeiss optics, GPS, satisfying slidey keyboard, and 3G connectivity. It was my last candy bar phone.
Spec for spec, the iPhone could not compete with Nokia's offering. It had a terrible camera and it didn't even have 3G. Yet it still felt like a device from the future, able to summon forth dazzling applications such as Calculator with the mere jab of a digit.
The simplicity of the interface and the groundbreaking introduction of touch (finger touch, not lame stylus touch) immediately awed me, like it did everyone else. Of course I rode the train around Sydney poking and caressing my iPhone as my fellow commuters tried desperately to avert their eyes. Oh how I checked Stocks, perused the Weather, examined the Clock and, of course, surfed with Safari.
Feast your eyes on the beauty:
Looking at this, the UI has remained remarkably unchanged until now. That is either testament to Apple's design prowess, or to their stubbornness. I would say that it is a little of both. And stubbornness brings me to the point of this post.
iOS 17.4 and the App Store's unwanted siblings
As I write this, iOS 17.4 has been released in to the wild. For most of the world, this is an unassuming release - there is a mushroom emoji now.
For those of us in the EU (as long as you don't dare to step outside the EU for longer than 30 days), it is a huge release. Apple has, with a strong stench of malicious compliance and a pugnacious press release, installed side doors to their walled garden that will enable alternate app stores, default browsers other than Safari, as well as alternate browser engines.
The vast majority of users will not notice these changes, especially as Apple will do their utmost to hide those side doors within the parameters of the EU's DMA ruling. It is likely that you will have to enter through the gift shop, turn left to the craft store, lick the frozen lamppost and speak the forbidden words in order to discover app stores that let you do all of the nasty things you really want to do with your phone, like download Fortnite.
And maybe that is fine. The App Store is essentially a good idea for the majority of iOS users. It offers a collection of vetted applications that meet Apple's sometimes-vague definition of acceptable, and it is part of the reason why iOS ecosystem of apps generally feels more cohesive and higher quality than competitors. App developers pay an extremely high price for entry to Apple's pleasure parlour, but Apple feels the exposure and the infrastructure they provide is worth the buy in.
The problem has been that until now, there is no other choice. If I want to wander in to the wilderness without a compass and only a sachet of Milo and a vegemite sandwich for sustenance, Apple will appear from behind a bush, put its arm around my shoulder and guide me away from the wall of the glass dome that hermetically seals us in its garden of Steven.
There are plenty of stories to be found of developers spending months, years, lifetimes building iOS applications only to have them rejected upon submission to the App Store. And those developers have little recourse for appeal.
Alternate app stores (as opposed to the App Store) will provide a refuge for those rejected applications, and a marketplace for cyberpunks and tinkerers. For the average user, things should ideally remain unchanged - the simplicity and guardrails of iOS is why it is so widely loved.
For iOS users, the internet is Safari, just as for Windows users the internet was Internet Explorer.
Dreaming of Progressive Web Applications
What was often difficult for people to understand about the design was that there was nothing else beyond URLs, HTTP and HTML. There was no central computer "controlling" the Web, no single network on which these protocols worked, not even an organisation anywhere that "ran" the Web. The Web was not a physical "thing" that existed in a certain "place". It was a "space" in which information could exist. — Tim Berners-Lee
When I read Apple's decision to break Progressive Web Apps on iOS in response to DMA's requirements, I was pissed. I made a ffhnnnn sound from my nose. That's how you know it's serious. Breaking PWAs would mean that they would no longer have access to (limited) native APIs or have offline capabilities — they would simply be shortcuts to websites.
Apple has been anti-PWA and anti-Web almost since the very beginning (though it was not Jobs' original vision), as the open Web offered the only true alternative to their App Store for accessing interacting applications on the iPhone. Their war on the web has been so well-executed and so comprehensive that the average consumer does not even know what a PWA is.
Of course, they should not need to know. PWAs could have been distributed via the App Store just as native apps are, and most users would not notice a difference. Instead, Apple has buried the installation process in to the overloaded share dialog, under an action reading Add to Home Screen.
PWAs never reached their potential, and my personal belief is that Apple is largely culpable for this. By discouraging the installation of PWAs on their devices, they discouraged development of them, and their focus on native applications and their App Store has led frontend developers to decry Safari as the new Internet Explorer.
Apple's decision to break PWAs was justified by the fact that they have "very low adoption". Of course they have low adoption, given that nobody knows what they are. Thankfully, because of the synchronous ffhnnnn of many tens of engineers around the world, Apple decided not to disable PWAs on iOS after all..
Whilst WebKit has made tremendous bounds forward over the past few years, imagine for a moment if Apple had focused on the Web from the beginning. Apple are, notably, still lagging behind on implementation of the View Transitions API, which is one of the Web APIs that enables a more "native-like" application experience in the browser. Perhaps the lag is by design.
It is difficult for a PWA to approach a native feel today, but there is no real technical reason that the majority of applications you and I use today could not be built as web applications and distributed on the open web.
Browser Engines on iOS
The other big thing — at least for me — in the iOS 17.4 release was the admission of alternate browser engines in to the iOS ecosystem. Most probably don't realise that when they download Chrome or Firefox on their iPhone, they are just getting WebKit wrapped with Google/Firefox's UI and syncing features. iOS 17.4 will bring Blink, Gecko, and others to the platform.
This is a blessing and a curse for web engineers. It remains to be seen how browser engines are distributed — if they are included with browsers downloaded from the App Store, this will be a Good Thing for the Web, as it will generate competition for Safari/WebKit, and may lead to them implementing features that other browser engines offer. It will also mean that we will have more browsers to test against (or pretend that we test against) when building web applications.
It will be an interesting year for Apple and iOS. Will Apple turn their sourness on DMA around to the benefit of everyone, opening up the platform outside the EU as well? Or will they continue to do the bare minimum to satisfy the EU regulators?