Today, one can build amazing stuff for the browser. And, in my very humble opinion, the vast majority of apps should've been WebApps — except for maybe Uber, Google Drive, and games.
I worked in the journalism business, and, in my country, the early 10s were filled with media outlets spending so much of the little money they had to build mobile apps.
I was the sore thumb that rejected such trend.
I knew very well that the quality of most of these apps would be questionable at best. And of course these companies won't be investing regularly in updating their mobile fronts.
And that's exactly what happened: they're stuck with apps that are barely maintained, most of which looking like ancient artifacts from a bygone era. Because that's what they are.
I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such. But why Uber? Uber has (or maybe had) a mobile site that works fine for requesting rides and basically everything the app can do. I don't see what value Uber being a native app adds for the user. The same goes for most mobile games; they tend to have simple graphics that the browser is perfectly capable of rendering with great performance, and they tend to reinvent all common UI components so losing access to native system buttons and such wouldn't make a difference. PWAs should also provide plenty of storage for local save files and other game data. The exception of course being games that really push the system to its limits. I don't expect, say, Death Stranding or the RE4 remake to work well without direct access to native graphics acceleration, and they're too large to load as a single webpage. I will reiterate though that this is not the case for most mobile apps, even extremely profitable F2P ones that would benefit greatly from an extra 30% revenue. Why then do they not target the web? My gut feel is that it's because mobile users are trained to look in the app store for apps and games, not the web, while desktop users expect apps to be available in the browser with the exception of some professional tools and high-end games. That is to say, it's largely a cultural problem. Of course, Apple's lackluster support or PWAs doesn't help.
F2P mobile games need to be able to send you notification spam, because they're based around habituation and addiction. You couldn't do that in MobileSafari until very recently[0].
[0] Supposedly. I pinned Google Fi to my homescreen on my iPad, it asked for notification permissions, I see a notification count badge on it's app icon, but it still doesn't actually notify me when I get a text message or call.
I used it for years, but it didn't seem to work right on a new phone, with some UI elements not visible or off-screen, so I went back to the app.
Some of these (increased caching and remote notifications) you can get on iOS if you install a web app as a Home Screen icon, but as just a website Uber might not get their minimum bar of functionality for widespread use. So far, I haven't seen any large companies have installed web apps as their go-to-market strategy.
All it takes is for network connectivity to be a little bit spotty (admittedly, Uber made it work a little bit better these days).
In the past, I've been more than once frustrated to rage from the fact that Uber couldn't just grab my A-GPS position, ping for address and send a short packet to order a car, but it had to download potentially megabytes of promo html before it let me actually do anything useful.
Avoiding it with PWA is afaik even harder (currently looking exactly into making PWA because I don't want to deal with iOS).
That's a circular dependency though. You want that stuff because you want to use Drive with native apps and not web apps. But Drive is a first class backend (actually even more featureful, frankly) to web apps too. Basically the native Drive client is for native/legacy interop, not a barrier to a PWA future.
It's funny because the very first thing that Steve Jobs pushed when the first iPhone came out was PWA's, essentially, and not an App Store, which didn't exist yet... and the same API's are still available in Webkit I believe
Holding the web back is entirely intentional and makes strategic sense from Apple's point of view. They're well aware that a majority of apps would work perfectly fine as web apps -- but that also removes Apple from the equation. Only allowing Safari on iOS and intentionally gimping it solves the problem.
I mean, I can't even blame them. Can't lose out on that sweet 30% cut, y'know?
I'm only disappointed that legislation took this long to catch up to their shenanigans, and only in the EU.
Most of that frustration comes down to tooling and more specifically TypeScript. I'm not sure how to succinctly express my pain here but I have found generally that I wrestle with the type system in TypeScript far more than native offerings.
> I just wish Web wasn't such a frustrating development experience
It's got to be better than building to target two totally different platforms (and even more once you factor in tablets, Windows desktop/Linux/macOS) and then jumping through hoops to get your app packaged, reviewed, and updated consistently onto the target devices. > Most of that frustration comes down to tooling and more specifically TypeScript
I think that a lot of folks get frustrated with TS because they are coming at it from the wrong perspective. Instead of thinking about it like a static type system, think about it like "JavaScript with shape definitions". Give this a shot:https://chrlschn.dev/blog/2023/09/typescript-is-not-a-progra...
Years ago I tried to up my game and learn to use grunt and babble and other build tools. However, I found the process extremely complex, only to end up with finicky systems that made me even more stressful, not less.
I decided to ditch all that PoS and do things the easy (and logical) way. Never looked back.
Most dynamically typed languages are adding type systems right now, and they all face the choice between rewriting/wrapping the whole ecosystem or build a very complex and ultimately unergonomic type system.
I have to say, having recently gone back to doing some web dev work (doing some dashboards with lots of D3 visualisations), I was pleasantly surprised to see how better things have gotten. working with CSS is better (with stuff like grid, flex, nested selectors), and JS is also much much better (import maps, fetch API).
I'd say for developing cross-platform apps it's a pretty good deal.
I think that despite that, they did a decently good job. A few years ago, I created a voice-only social app: people can easily record and send voice memos.
I built it using fairly new tech at the time: the web audio api and native web components. (I refuse to touch react-style frameworks with a 20-foot pole.) It was 99% compatible with all major web browsers from the get-go, even with its fairly advanced "tech."
The only thing that wasn't cross-platform was the audio files themselves. I had to make a deep-dive into the world of encodings and codecs so that I can offer users audio files in the formats that work on their machines.
Obviously, there are areas where cross-platform-ity (??) is abysmal, but things will probably continue to evolve for the best ― hopefully.
And yes, PWAs with their offline capabilities are just awesome!
On the one hand I love this. I'm glad PWAs are helping drive people who wants and expect a certain thing towards the web.
I am also however super sad that PWAs removed so much greatness of the web. Most don't launch in the browser. None have visible url bars. They just added a new mode so PWAs can have some kind of tabs. They don't integrate with bookmarks, or extensions. They don't have forward/back. I like the web a lot, and I feel like PWAs are a major step backwards for me.
What's really scary to me js that new permissions are being added which are PWA only. I no longer can have a web like experience; I am forced to have an app like experience, without any of the affordances I get with a user agent/browser at my back. I feel so undermined here.
...but when I see how petulantly defiant Apple's responses to other regulations which threaten their lock-in strategies have been, I'm not optimistic.
Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.
Invest your time into foundational pieces of the technology stack instead.
But everywhere I look, IOS, mac, android, windows on the phone, tablet, tv, cars its all apps. Be it under the guise of security, features or whatever, all of the UI is driven from apps. Some do a better job than others, but sucky or not you're forced to go the app route.
At my day job in mobile game development (for a small studio inside a large company), we have to fight Apple constantly -- not only on tech issues but on policies and approvals, too. But offering a mobile game without a way to run it on iOS would be unthinkable, so we comply.
In many ways, Microsoft's original strategy for the PC was the exact opposite. It catered to developers and provided copious documentation, examples, and tooling for devs. The companies behind those devs were, themselves, motivated to make software for MS and, in turn, to promote and sell it. The tidal wave of individual developers making Windows software (think back to the shelves at computer stores) is what created the desktop OS that still rules the roost.
This is such a disingenuous argument that ignores the huge pile of incentives at play. Here is an equally disingenuous argument: anyone who sells or gives away any software to anyone in the US is taking an active part in the US military industrial complex.
Microsoft on the other hand is a typical SKU-mover, their business relies on selling 'parts' of someone else's workflow, but later on realised the only way to have a consistent experience is to also start making the hardware. Later on, they tacked on services, but because they kept the "spray the market with SKUs" business strategy it mostly just became 'more', rather than better integrated products for people. It's still "move as much stuff", even if it's not well-integrated. Heck, sometimes it is less-integrated because it enables moving more stuff.
At the end of the day, most large tech multinationals end up manufacturing a lot of stuff over the various layers (hardware, software, firmware, entire devices, individual components etc), but that no longer describes what the company actually "is". (just like it doesn't really describe much to group them together as "commercial money makers", it isn't very specific or useful)
apple has a history of denying apps for monopolistic reasons & collusion price fixing : https://apple.fandom.com/wiki/Criticism_of_Apple#Restriction...
> t's the same way that apple leans hard on their suppliers but at the end of the day it has led to creating a healthy and wealthy ecosystem
yes, like using child labour and working environments that require suicide nets: https://apple.fandom.com/wiki/Criticism_of_Apple#Student_and...
If a business doesn't depend on the mobile experience, then they are still able to offer their services without offering a native app. People on mobile can still access the service through a mobile browser--perhaps not the ideal experience on mobile, but it is still an option. And I think that is the author's point: If there isn't a necessity or dependency on the mobile platform, don't build for it.
In the presence of a cultish relationship, I think a persistent sense of puzzlement is reasonable.
I got the sense that Apple’s designers wanted to make an IDE that was visually pretty and minimalistic, not one that was low-friction for the developers. But IDE’s aren’t supposed to be minimalistic, they should be allowed to be as customizable and cluttered as each individual developer would like, according to the needs of what they trying to build.
Imagine a physical garage workstation. Whereas Visual Studio would let me make my workspace as cluttered and customizable as I would want, Apple would insist that I put each tool back in the box before grabbing the next one. This is what I mean about panel jockeying.
I’m curious if other developers feel the same way, of if my analogy makes sense.
I've been in the JetBrains ecosystem for over a decade now and while there are faults, I've never felt that JetBrains wasn't designing their IDEs to work how I wanted them to work.
But what really turned me away from making native apps for Apple platforms is the combination of bugs and lack of documentation.
SwiftUI was just not fit for purpose when I last used it a year ago. But even more mature libraries are often barely documented. It's hard to know what's obsolete.
The advantages of native apps for my work are small to begin with (from a user point for view). It's mostly about more reliable local storage.
If productivity is so much lower than making web apps it's impossible to justify the cost and the extra risk putting myself at the mercy of some oligopolist overlord.
Xcode doesn’t bother me at all while Android Studio, which is built around the vaunted IntelliJ, is constantly getting on my nerves. Visual Studio (the IDE, not the editor) is similarly frustrating and has odd restrictions to boot (I can’t use italics in syntax highlighting? Why??).
This goes for editors too. I find VS Code mildly irritating in ways that Sublime Text and TextMate aren’t.
It's like a heavy IDE of yore, which means the more you comply with it, the more you'll enjoy it—but that also leaves a feeling that you're not really in control.
It's definitely worse than it could be if Apple cared enough to make it half as snappy as vscode feels. The shitty support for vim keybindings alone makes me furious (e.g you can't redo most actions like "c" or "r")
Finally, I'm not sure if you were using SwiftUI back then or if you were fighting with storyboards in UIKit. The latter is an ATROCIOUS experience I wouldn't wish upon my worst enemy. SwiftUI in comparison feels like the future, even if it's still in its early days and some stuff needs to be ironed out
This is why I abandoned storyboards and XIBs in iOS development 7-8 years ago. UIKit is actually a pretty decent code-only experience, particularly since the addition of anchor-based autolayout constraint building.
It was actually a major point of frustration that it’s not practical to go code-only with Android Framework on Android and WinUI/Windows App SDK on Windows, both of which are heavily invested in XML layout and resource files. Jetpack Compose thankfully fixes this on Android at least.
Then we had to set up payments, because for some reason you need to pay money to have an Apple developer account. Whatever, in the budget of an entire city of 60.000 people, that's not even going to show up anywhere, right? Well... Since it's a foreign subscription and since Apple has no way of doing this as a B2B purchase that can be easily registered with our local tax agency, it had to go under yearly reviews. It was also only possible to pay with a credit card which again tied it to something the organisation would need an actual person to renew and since organisational credit cards are tied to people, and since people change jobs, and since you need to be in actual human contact with Apple to change owners... well you can imagine how much fun that was.
This was some years ago, so maybe things have changed, but out of any of our 300+ enterprise IT solutions that I ever worked with, Apple was the only one that was this horrible. To be fair, I'm a developer, I'm not sure how I ended up with the task and maybe these things are simply more common in the operations side of IT than I know.
This is probably worse today, they're all the time throwing more roadblocks to avoid people to publish apps in their "ecosystem", except if you're a large US company that can easily handle the paperwork.
From a North American perspective, the only thing I can think of that has changed is Google now requiring DUNS numbers for business accounts (while Apple has required them for a very long time, for business accounts).
It's as random as ever, it might work straight away or you are unlucky and hit some of the random bug in this process and it'll fail for a long time
With the whole App ecosystem, you only have 2 choices and you are at their mercy. Literally.
I personally would never build an entire business around an "app". Never. I may have an app as a small supplement if at all and that too if my audience really demands it. I hate products that force an app on me when I am on a mobile device. No Thanks. Heck, bring back the whole m.website.com thing but I prefer to avoid the whole app ecosystem.
And if it's the two I'm thinking of, one of them is a customer-service black hole with a ban hammer, so overnight one could find oneself in the "beg the front page of HN for help" camp for any reason or no reason
I say prayers that the new sideloading thing for the EU will inspire similar calls here in the US, but also I'm super cognizant that such a thing would require a sufficient mass of folks who know or care what "walled garden" or "sideloading" mean :(
Where on macOS a highly capable, polished app can be easily be developed with a list of dependencies and sub-dependencies that can be counted on a single hand (and with a little effort, none at all), the equivalent web app has many tens or hundreds because of all the feature gaps needing filling in.
For example, I don’t see why browsers can’t furnish basic list and table views that are capable of efficiently recycling their cells without any (or extremely minimal) JavaScript. It’s not unusual to need to be able to scroll through hundreds or thousands of items without causing the device to chug or run out of memory, and that’s handled nicely out of the box in AppKit, UIKit, SwiftUI, Android Framework, Compose, and probably even Flutter (haven’t checked) but in the browser you’re either pulling in a library or writing custom code for this very basic capability.
And that doesn’t even get into the package management and general tooling situation, where the same fundamental problems doggedly persist even as solutions come and go.
The nice thing about the Web is that there usually is a library/framework that fits your needs (Electron, for example). For Apple, often there is no good library. Also SwiftUI is so buggy. React just works, and is conceptually simpler (folks, two-way data binding is a bad idea). Apple has this whole idea of making everything simpler for you, but are often making everything more cumbersome and difficult for you.
Do you have examples? I’ve not often run into this in my projects. These days there’s Swift packages for most things, and in the worst case I’ll have to write a simple wrapper around some C or C++ library.
SwiftUI is still green yes, which is why I’ve stuck to UIKit for anything moderately complex.
The web was built with documents in mind, so that the html files already has all the data needed for display. The tables are already populated with all the data needed and in the correct order from the server. There is no need for recycling cells and rows. And all of that is snappy because we're talking about KBs of data for thousands of rows.
The problem isn’t the size of the transmitted data but the strain the resulting page puts on the browser engine due to the huge number of DOM nodes.
Together with WebAssembly (& alternatives like Flutter) the bare-bonedness shouldn't be a problem anymore.
It evolved into one, and the platform has improved for app development with things like modules, but it is still part of an ecosystem that expects the developer to bring the app framework. Custom Elements tried to solve this, but React came and solved the same problem in a more ergonomic way. So now, we're in the same place: apps are built with open source stacks like React where you have to bring your own toolkit because the browser doesn't make assumptions about which one you're using.
The web is a lot like Linux: it evolved as thousands of developers try thousands of different ways of doing things. Some of those things are great and become de facto standards, but it's an ecosystem you can't manage top-down.
If you've ever worked at Google, there's a famous internal deck about how decentralized ecosystems evolve like an amorphous slime mold. It's written in the context of Google product management, but it applies to things like Linux, and the web too.
Javascript.
With proper competition, OS makers work hard to attract developers - think of Ballmer's "developers developers developers" clip from back in the day - as they recognise that developers add value to their platforms and help sway consumers. The trouble these days is there is no meaningful competition. No matter what Apple's rules are, developers are obliged to provide something for iPhone, and Apple can rest assured there is negligible chance of a third mobile platform gaining traction.
Apple know this and through their strict policies have imposed a cruel reversal of the situation: they claim they are doing developers a favour by deigning to allow them to access all of Apple's iPhone customers, and tax all their revenue for the service they ostensibly provide, even though developers do a lot to make iPhones worth having. It's an abuse of their market position and there's not much anyone can do about it - except as the blog says, publish to the web instead. It's not perfect but it's the only meaningful alternative to regulation, which Apple are obviously going to use every trick in the book to wriggle out of, because why willingly shut off billions of revenue from taxing app developers? Hopefully the web can gain traction as a way to avoid abusive app publishing rules.
The web runs on everything, and there are so many great APIs that can be used to make immersive/next gen applications like WebXR. But someone making some WebXR app and charging for it on their own site wouldn't make money for Apple, so Apple never promotes these web apps.
Long term... the web never dies. Companies come in and extract their profit and then die. But the web never dies.
Sure, buddy… They don’t care about you unless you develop for their platform. And who can blame? The above is a terribly expensive and timely investment.
It's crazy how much easier development on Windows is. And Microsoft's is almost all cross-platform. None of those things you mentioned allow you to work in a platform agnostic manner. Whereas Windows supports their own stuff like DirectX but still allows direct running of Vulkan, OpenGL, etc.
If you want to develop for Apple's devices, you have to sacrifice your future career options with any other tech stack/vendor by investing your limited time into skills that are only relevant in the Apple ecosystem.
Then you have to hope that it's still financially viable to do software dev in Apple's world for the next few decades - which given their demonstrated behavior of scraping back more and more of the pie for themselves and their shareholders, seems like a risky bet.
But the fact that he got in to work on a music app is illuminating. The Apple audio APIs are an absolute mess. Media Player, AVPlayer, Core Audio, AVFoundation, AVAudioEngine… it's like competing teams dating all the way back to NeXT kept writing their own libs and somehow they all persisted through the iPhone era.
I spent about three months of the COVID lockdown trying to make a Shoutcast/Icecast player, it was excruciating.
And you know the reason why it's macOS only? because the Apple App store reviewer rejected it heh.
They've made it practically impossible to write native cross platform code that runs on IOS, and they've everything they can (within political limits) to prevent web apps from being able to compete with native apps.
Specially for applications where the DB is a platform on its own.
For me, that's part of the problem. I'm sure Swift is a nice enough language based on what I've seen. But I'm not going to invest a substantial amount of time learning a language that is realistically only ever going to be useful to target one platform by a single company.
Personally if I were working on mobile stuff, I'd be looking at .NET MAUI.
I'm not an Apple user and when I have to do anything I don't know on Mac, the way to find it is always with the question "what's the simplest way to do it".
Except xcode. I always have to google or gpt to find what I want.
The whole thing takes 13GB to download where resuming fails, has an undocumented config format which doesn't work with git properly and is more sluggish than an Electron app.
The app upload process itself is so broken that even Apple had to release a third party tool to bypass it.
I refuse to believe they are using this thing internally, they must have some kind of special internal process to make this mess sort of work.
I could say similar things about appstoreconnect where even reordering app images is broken with a race condition if you click too quickly and you have to reload the page.
I don't know you, but even if you had a highly successful app on the appstore, I (an internet stranger) would care more about you being hit by a bus than the Apple corporation would, or any of the MBAs over there that you worship.
Any relationship you think you have with Apple is completely in your head. They take advantage of people like you all the time. Developing for Apple is an abusive relationship, and that's always a difficult thing to come to terms with.
I know this comment is probably just going to annoy you and result in a long, ranty, defensive, passive aggressive response. I don't care. I still love you more than Tim Cook/Steve Jobs does/would, my fellow dev.
Yeah okay, I guess you worship google if you support webapps too?
If I had my way, I would not have to install any apps on my iPhone or iPads but platform limitations make this a requirement. I noticed that on Safari, the X/Twitter web app is not playing videos, even after I turned off Lockdown Mode for X. Is this Apple's fault for a platform inconsistency or X trying to force users to install their app? I would like to know.
I specialize in deep learning and LLMs, but I have also always enjoyed web development. What holds me back is how complex the tooling is. That said, someone I know has been writing a lot about ClojureScript + Dart so maybe I will give that a try. I would like to find a simple stack for web apps that I could learn in a few days and that was well supported. Any suggestions?
Ignore people who write about finding the perfect stack. The perfect stack does not exist and it is not requisite for shipping great software that real users value.
Much of web development consists of knowing the browser well, and web.dev is a great resource for that. Beyond that just go and learn React + TypeScript, the new react.dev is great. While React is not perfect it’s such a good paradigm for creating UI that even Apple copied it when they created SwiftUI. Grab yourself Vite and get coding.
The number one thing that I would recommend is to really go and study those resources. Start from page one of the docs and work your way through. There’s not much that you’re going to learn in a few days though, frontend work is hard for a good reason.
Do you actually have any evidence to back up this claim? I’m assuming the real reason is because the average Apple user has a higher income than the average non-Apple user.
But yeah, there is no morality here, it’s just business.
Not that I entirely disagree, but that doesn't seem to be consistent with the complaint from app developers that they are unable or barely able to cover their development cost from app store sales.
Of course during this entire time span, Xcode remained a garbage IDE. That's probably the main hindrance for devs and would-be devs. Swift can be navigated, Xcode is a black hole of doom.
Any time I’ve ever had to do anything with build configs or something relating to project metadata rather than just writing code, I’ve just been winging it based on some average of StackOverflow advice, weighted towards recency cause it all seems to change every few years.
I have no idea if this stuff is all documented anywhere; if it is I haven’t been able to find it.
Honestly, having “enjoyed” decades of different systems, from the days of 8” floppies onwards, developers today are spoilt rotten, and still find things to complain about. Grumble, mumble, kids today, get off my lawn etc etc
"The Cult of Mac"
https://www.goodreads.com/en/book/show/1341309
Those are the developers and users Apple cares about.
I don’t feel like Apple cares about my business in the slightest. Macs have become increasingly locked down in both software and hardware, and the level of control Apple wants over what end users can do with their hardware feels more onerous than ever. When that book came out, being a Mac user felt like being part of a fun community of oddballs (I was one of like 5 or 10 in my school of 600), which is absolutely nothing like today.
That's what happened to me too. In my youth I grew up with a Macintosh, and it was a lovely machine, a marvel of design and technology. You could tell the creators were inspired, intelligent, artistic. They cared about the user, the person using the computer - which included programmers.
As the years went on, it seems Apple got consumed by a different kind of people, it gradually bacame another soul-less corporation with profit as its main motivation. They still make good(-looking) products, but riddled with user-hostile design and dark patterns. The iPhone is not a computer in the full sense of the term, it's an appliance where the user is just a consumer.
Eventually I gave up and switched to Linux, which I had been using off and on the entire time. It's not an artistic computing experience, but there is a fundamental respect for the user. The web is similar, despite the on-going enshittification, it feels like the original spirit has managed to live on and even thrive.
Google is an example where I never grieved much because I understood the dynamics ... With Apple I didn’t understand the dynamics.
The point where I disgustedly gave up was when I found out that while I was jumping all these kafkaesque hoops, instead you could just go to Apple's own web music player, type MusicKit.getInstance().developerToken in your browser console, and you’ll get an unrestricted root token for free!
Eventually, this is what getting-to-usable-tech looks like. I think it gets withheld from the narrative because1) people wrongly heap damnation on wrong roads and
2) some folks who missed some particular wrong road will demean those who ran into it.
And there's this...
This realisation has made me happier since I now know my place. I can like their products without wanting to develop for them.
...which neatly defuses some (pointless) stigma tied to helpful errors & failure. I think it makes healthy thinking more approachable.And here I thought it was just me. I really like Dolby Atmos in their airpods, and it seems that it only works with Apple Music. But Apple Music just doesn't click with me.
It feels very much like it’s still the same old app built for the time when any music you’d be playing was locally downloaded, but with streaming haphazardly retrofitted.
It’s pretty sluggish even with a flawless connection, but if you’re somewhere spotty like on a train it becomes basically unusable. Even for stuff you have downloaded for offline playback, it seems like it will try to stream it instead if there is any network connection at all, regardless of how bad it is.
Is that really true? If Apple is abandoned by large developers (let's say of Adobe, Microsoft calibre), does it not harm their sales or revenue?
It certainly isn't universally true. For young or new platforms, like the transition to ARM a few years ago, or the Vision Pro today, Apple needs developer adoption to be successful.
Of course, it's existing success on other platforms almost ensures a certain degree of developer engagement with their new products.
Apple's recent malevolent compliance with the EU anti-monopoly rulings, show that Apple at least cares a lot about the money these developers have to pay Apple (fees etc).
There's a few, actually. WebXR is supported by Safari but coverage is supposedly really weak: https://www.roadtovr.com/apple-vision-pro-webxr-support-safa...
There's also OpenXR for native applications, which the Vision Pro does not cover. That's where the closed-platform "innovation" is happening, supposedly.
By analogy, if we answered this way about mobile phones, it'd be like someone asking 'how should I do mobile development?' and someone else responding 'good luck, you have to pick between Windows phone and Blackberry and Palm and iPhone and ...'
In 2024, that's easy: you develop for iPhone and Android, and if you have to pick one, make it iPhone. Simple.
Similarly, for JS, you pick React Native. It's dominant and the alternatives are like infinitesimals - so small you can ignore them.
"What about..." Again, you're thinking of the options that lost. It's 2024, React Native won. So you just use React Native. It's not complicated.
The web has the best tooling out of any platform because it's the biggest platform. It also has the best documentation... because it's the biggest platform.
I don't know what your point is, that web development is hard or complicated? Writing web apps are way easier than writing iOS apps.
It’s still too low-level. We shouldn’t be writing div over and over with different interacting class properties. Something like SvelteKit’s level of frontend/backend integration feels 5 years too late.
Ultimately it seems like the web ecosystem gets trapped in local maxima (“put JS in everything!”) and really seems to avoid actually creating useful, productivity-enhancing primitives. And that comes from loving the trinity of web tech so much you cannot imagine life without them.
I've been a web developer before (all the way back to and before the ExtJS days) and while I _can_ do it I really prefer not to. The web does not have "the best tooling out of any platform" or "the best documentation... because it's the biggest platform". The tooling tends to be all over the place (until Visual Studio Code takes over the planet... :/) and frameworks like React or Vue hide a lot of complexity that you have to dig into if something goes blooey. This is not to mention the page bloat or security holes you get when you include some handful of analytics "libraries".
I would guess the long and capricious review cycle stops a lot of junk submissions, not the $100. If my mental model is correct any such junk app would easily make back the $100 in spammy ads on every click
>Let's consider a different context. Even if there were no apps in my phone, I would still buy an iPhone. For myself likely, but most certainly for her.
I have been thinking about this since COVID. I recently posted [1] on Apps required for setting up a new Mac. Apart from BitTorrent client, VSCode, a Video player and related library, 99% of time I am inside a Browser. i.e We are very very close to a point where a Web Browser is all we need. Especially for consumption devices similar to iPad.
This also means having a platform other than Google, Microsoft or Apple is more feasible than ever. Unfortunately Facebook or Amazon doesn't seems to be interested. I dont see any other companies to have this appetite. Ideally something similar to Mozilla or WikiPedia would be better. But both are too small right now to try something of this size.
What if we created an App Store that was solely focused on getting users to “install” using a bookmark.
And convinced top app players to forgo the App Store and advertise “get a 10% discount if you install our app with App Store X, the alternative App Store.”
If it were in their financial/competitive interest for PWAs to be amazing on iOS, they would be.
Unfortunately for us this would circumvent their 30% app tax, so they'll be dying on this hill.
Sure, some high end games. But they're more an exception. What other app are you thinking of?
On a recent project I was working on, I noticed that having a long list of items in an overflow: scroll container would still allow the root page to scroll as far down as the items theoretically would. You could just scroll far past the actual HTML root tag because somewhere on the page I had a long scrollable list.
The catch? I only noticed this on Safari.... and Chrome. Firefox is the only browser that doesn't shit the bed on that page.
I just find it amusing that the most annoying problem I've experienced recently with web dev was not because of Safari's "princessness" (it was doing the exact same thing as Chrome), but just because browser engines have become complex enough to be eldritch gods we just have to pray to and hope.
Finally, parity with the desktop.
I know what you're saying, there is undoubtedly a complexity angle too, not all of it is malice. But after a while, one starts noticing the pattern (or maybe it is just me) that Safari has a holier-than-thou attitude towards standards. Their way of standardization is - I'll just go ahead and do something my own way, and then rest will just follow suit because I have so much market share.
Which isn't, as you say, far from Chrome's actions in theory. But in practice, the feeling I've been getting recently is that more Chrome is happy to accommodate. Safari seems to (intentionally or culturally) drag its feet a lot more in picking up stuff that has been ratified.
Still naive, eh ? I would be extremely wary of following in Google's footsteps : the use Chrome(ium) and their web apps as a trojan horse to wrestle control of general computing from the OS and native apps.
And it typically results in a worse user experience, because you lose performance by running in an emulator (and/or the extra, always somewhat leaky, layers of abstraction complicate the developer's job), and the browser's interface gets in the way.
So no, please do NOT write code for the web (except if your program is extremely basic and you don't think it will ever get more complex), write code for Linix (or other libre software/hardware, and excepting the likes of Android) - Librem 5 and PinePhone are particularly in need of your help, since they have quite the task ahead of them, going against Google, Apple, and Huawei.
Some would argue that we should keep pumping browsers with native-like APIs to escape the "big bad App Store" while in reality this merely increases the foothold of Big G and their cousin Meta.
The issue is not how much Apple cares about developers (they do, because developers make Apple's ecosystem but this is a business relationship, not a friendship). In my view, the root cause is that the "happy path" of creating an app mandates choosing an ecosystem. For everything from tools to where you'd store your data and how you'd send push notifications - you have to choose which one of the MFAANGs you will support or else.
Web apps can be used by many devices, mobile or desktop, iOS, macOS, iPadOS, Android, Windows, and Linux.
If web dominance changes I'm still left with an application that works everywhere.
How is that comparable to native applications that only work in the latest versions of a single OS?
The only reason web apps didn't dominate yet is because Apple can't force them to pay 30% of their revenue plus $100/year per developer license so Apple goes out of their way to nerf web app functionality.
Safari is historically lagging behind in implementing functionality to enable web apps.
That's the faulty assumption in my view. It doesn't work everywhere - even on the web, you're bound to whatever the dominant browser thinks is right for you.
Some random examples from recent months - 3rd party cookies (putting aside the fact that they were enschitified for ads), Google suddenly decides to turn them off and they're gone. Ad blockers don't make it as an extension (so extensions are not, in fact, a solid substitute for apps). See AMP - you don't even get the choice if your website will be transformed into whatever Big G thought was an "optimised experience". What's to stop them from forcing you to enable "privacy-focused topics" or Web Bluetooth to sign into your Gmail account? Let's not even begin to discuss Search - all from your browser company.
You see, browsers have become much more than simply web agents. Your app's documents and hypermedia are technically downloadable "everywhere". However, just like on an App Store device, if and how users can discover your web content and how they experience it is entirely locked inside the walled garden of your Chrome-like browser vendor.
PS: Since before the browser Interop initiatives (now more than 3 years ago), Safari has been leading the race when it comes to accepted standards.
On Android, I can do that with web apps, because Android for the time being has "web server" apps that let you run a local Apache server. So if your application files are stored locally on phone storage, you can use the app entirely offline.
Anything similar on iOS?
I refuse to pay a company so that I can contribute value to their ecosystem.
The way that Apple cares for developers in aggregate is by keeping the ecosystem vibrant. This means giving developers what they need, but not necessarily what they want. It means that when it comes down to what developers want vs. what users (like the author's mom) need, users win.
$99/year is nothing in terms of development costs, but even that token amount will generally keep out the Apple fanboys who just want to download iOS developer releases and should not be let into the developer party.
You don't move from Google for this bug because there's an easy workaround: F5 (aka refresh the page)
they really want keep you inside their ecosystem. so they can control you as much as they can.
* they want you to pay the apps submission fee.
* they want your user payment subs processed within the ecosystem
* they want easily track everything.
they keep doing this hyprocysy to the web eco. while they really know: almost the problem in native can be solve under the web browser stack.
We bet on the open Web since 2011. We believe Wordpress had huge success for Web 1.0, but for Web 2.0 everything is proprietary. Mastodon is an exception, but it doesn’t go far enough.
This is our vision:
http://laweekly.com/restoring-healthy-communities/
Anyway, use it! Let’s opt out and wrest the power from Big Tech!
1. Friend gave me his old iPhone. I'm already happy with my current Android phone, so decided I would turn into a Retro emulation machine. I went to install Retroarch only to find that the steps for installing Retroarch on iOS is convoluted, doesn't allow auto update of cores, must be sideloaded with AltStore unless you have a jail broken phone, and apps installed with AltStore expire after 7 days if you don't pay $100/year to Apple for a developer account. I gave up and the phone is collecting dust in a drawer now.
2. Mom has an iPhone with 512GB storage that she filled with photos and videos. She's not keen on the iCloud pricing. No worries, I'll just back up her photos on her 2TB laptop I bought her a while back. Simple right? Just transferring files from one device to another just 2 inches away with a USB cord. Nope. iPhone won't give me access to those photos from her PC because it's Windows. Let me try the Windows photo backup tool... failed, crashes, and iPhone disconnects. OK someone told me I can backup photos using iTunes, lets get that started. Oh wait, Apple encrypts the files in some proprietary format when I back them up. Let me just use what iCloud storage she has, back them up in batches and... oh she has the free tier, 5GB. That will take ages and its damn ridiculous that I have to rely on a cloud middleman to transfer files to a device sitting literally next to the iPhone. OK my last resort, I'll install Syncthing... oh... no Syncthing for iOS.
What ended up working was a $5 app on the AppStore called Moebius that is just a wrapper around an outdated Syncthing. The most frustrating experience were the amount of people online whose solutions were "just pay for iCloud bro!” The entire reason I'm doing this is to NOT do that.
Anyway, after those two experiences, I swore off Apple products. Not for me, and apparently not for normal people like my mom either.
2. I see that Photos on iOS has an "Export Unmodified Original" on the share sheet that send the picture to Files. So you could probably connect to SMB share and export that way.
I agree that Apple products are not for you. But Apple has always specify a Right Way (tm) to use their products. You either like it or not. Anything else will be an hack.
Even if you do pay for iCloud you have essentially no way to know what's going on apart from owning a Mac or using iTunes.
There's not even a basic progress bar on the iPhone of what's being backed up there or not.
If only their documentation wasn't so often lacking though.
I will give it to you though - the ecosystem is complex. It takes a while to figure out what works for oneself and what is just chaff. And there is a lot of needless complexity.
Anyways, my point here is - do try to give the web another try. Maybe it'll click, and you'll start having fun writing code knowing that you can send a link to anyone and they'll be able to enjoy what you've created irrespective of what device they're on, and instantly.
I originally bought a MacBook after years of using Linux desktops because I wanted a stable POSIX compliant OS (with a complete nix user land) AND a nice desktop environment that "just worked". And that's what I got.
I have about 30 years of development and sysadmin experience on nix systems, so, I feel a bit neutered on Windows. No doubt Windows guys feel the same way in *nix environments.
Unfortunately the "year of the Linux Desktop" still seems years away. Yes, Linux as a Desktop Environment is feasible (and I do use it often), but, it's still an inconsistent pain in the ass.
I’m sure they left shortly after finding out all they’ll actually be doing is putting fields in structs and waiting on CI/CD to see if it worked.
I also could've forwarded the piece to non-developers.
I successfully did a fancy production-grade app, despite Apple, but after I told one of the non-developer co-founders how I'd been cursing to myself about Apple (e.g., buggy libraries and tools, bad/incomplete docs, poor API in some places, flaky developer-facing aspects of App Store, authoritarian and Kafkaesque processes around App Store), I got the impression he didn't understand. I'm guessing he assumed it was much like Apple consumer quality and vibe, as I would've, and a superficial look at a developer marketing page or demo video would also make it appear like that.
There's no mention of Firefox or other browsers (except Safari because he hates it) so my conclusion is that 'for the web' means 'for Chrome'.
So it's not 'write code for the web because Apple hates you', it's 'write code for Google'. Doesn't look like such a good idea to me.
I think this is true at the same time that it's also true that they currently create some of the highest quality, almost perfectly fully integrated computing products in the world.
I have a real love/hate relationship with this company. I'm deep in their ecosystem, I don't really want to have to leave it, but I still see the arrogance bleed through and it pisses me off every time I notice it.
What this article describes - a seemingly widely perceived arrogance and disdain towards developers - isn't purely developer focused in my view - though I think they get the brunt of it. I think this is symptomatic of a wider issue. A cultural thing which is as deeply embedded in Apple as is their high attention to detail, technical excellence and sense of design.
I wonder if it came from Jobs himself - who, a bit like Musk, was by many accounts a bit of an asshole to those around him, but was also an extremely talented visionary, with that rare ability to pull together talented multi-disciplinary teams to help synthesise beautifully designed and - often - thoughtful products. (The current trend is against also thinking about Musk like this but I do think he and Jobs have a lot in common).
The high quality output of the company is either in spite of or dependent upon the slightly morally compromised and contradictory means of producing that output. I'm not sure which.
I often feel like I'm in a bit of an abusive relationship with Apple. I can't quite put my finger on it. They make wonderful things, which I often really really love using, but then in another moment they seem to manage to gaslight me in some way - making me feel utterly stupid for continuing to give them my money. Sometimes I think their products are literally unmatched and I focus on the fact that their attention to quality and innovation pulls the whole industry forwards, other times I just think I'm in their predatory ecosystem simply because they're the best of a bad bunch.
I think the thing the most annoys me with Apple is the disparity between the "perfect" public image they try extremely hard to portray - more than any other tech company - and the very obvious contradictory behaviour that can often be revealed just by scratching the surface.
//rant
VR currently suffers from a chicken & egg problem. There isn't a ton of investment in software & hardware because the user base is relatively small and vice versa. Once that changes, other hardware manufacturers will follow.
On the other hand, if your goal is to make complex interactive apps, or if you do not want to to launch apps yourself and instead want to be more employable by midsized or large companies, pick up React.
The App Store gets a developer’s apps in front of a huge audience and significantly simplifies distribution and billing and so forth. People complain the cut is high to use the App Store which is probably valid.
It also capture a lot of things that I share. Especially post Steve Jobs' Apple.
>With Apple I didn’t understand the dynamics.
The dynamics is very simple. Once you understand one thing. As a developer, the user using your App are not your user, they are Apple's user. Apple is granting you access to their user base. Another way to think about it is the App Store, Apple is sharing 70% you earned from Apple's user to you. Rather than Apple taking 30% from you. The first one implies Apple think that 100% ( or vast majority ) of those value belongs to Apple in the first place. While the second is Apple's tax on your value you created.
That is to say Apple treat its developer as an extension of their own. And ultimately only to serve Apple's user ( or Apple's interest ). This is not just on software but also on hardware. As anyone in supply chains working with Apple would understand this.
>Apple’s own music player was, and still is, unusably bad....... think it is because the people who're making these apps were never around in the Justin Frankel era of Winamp.
I have been stating this since the dawn of Apple Music. If anyone remember, when Tim Cook launch Apple Music. It was all about the magical "Next Song". That is the modern day speak of AI knowing what the next song should be. That was the pitch from Jimmy Iovine on Beats Music, from a guy who thinks they have some of the best sound quality in the headphone market. Luckily the original "taste" of Apple's speaker quality didn't get diluted by this acquisition. Many thanks to those ex- B&W engineers. But iTunes was basically swallowed by Apple Music, or Beats. For some time Apple Music doesn't even have a loop for listening to the same song repeatedly. They want you to listen to the "Next Song". It was a platform primarily designed for New Music Discovery. Hence the Design is centred around Radio and curated playlist. Rather than "letting what user want which is to curate their own music library in iTunes". Quote from an NBC interview with Steve Jobs in 2006. ( Full Interviews on the Internet are all dead for some strange reason. ) And then every version of Apple Music they added back some pieces of iTunes function. But the design remains the same as it was in 1.0. It was first and foremost designed for New Music Discovery. Or to quote Jimmy Iovine, 2016 that the intention for the service is to become a "cultural platform", and Apple wants the service to be a "one-stop shop for pop culture". It you watch Apple closely and think where some of these culture changes came. That is probably the start of it.
>Which brings me to the third thread of this story, how all this made me reevalute my relationship with companies.
The bulk of many of these conversion is that we are comparing Steve Job's Apple against Tim Cook's Apple. Those of us who were there before the iPhone. And the two are a very different company. Modern day Apple is very much profit driven development model. From Product segmentation, service strategy to operational efficiency.
The Final Quote :
"If you were a product person at IBM or Xerox, so you make a better copier or computer. So what? When you have monopoly market share, the company's not any more successful.
So the people that can make the company more successful are sales and marketing people, and they end up running the companies. And the product people get driven out of the decision making forums, and the companies forget what it means to make great products. The product sensibility and the product genius that brought them to that monopolistic position gets rotted out by people running these companies that have no conception of a good product versus a bad product. They have no conception of the craftsmanship that's required to take a good idea and turn it into a good product. And they really have no feeling in their hearts, usually, about wanting to really help the customers.
So that's what happened at Xerox, that the people at Xerox PARC used to call the people that ran Xerox tonerheads. And they just had these tonerheads would come out to Xerox PARC and they just had no clue about what they were seeing." - Steve Jobs
Thank you! I'm so happy that what I wrote other have found beautiful to read :)
The intolerable part for me is that after you've spent years investing in learning their (non-portable outside of Apple) languages and APIs, they can reject anything you build for mobile for any reason, and you ultimately have zero recourse.
In other areas of software you could take the skills you've learned to your next job/project - but as Apple is moving more towards declarative frameworks where you aren't supposed to think about what's going on under the hood (I.e. SwitfUI), the amount of actual deep, transferable software engineering skills you gain from working with these frameworks approaches zero.
The investment just doesn't feel worth it to me, when there are so many other things I could be learning to advance my career.
My point is, Apple has a long history of wanting to keep it's ecosystem closed, which is a huge problem for both large companies and even more so for small publishers and indie developers. It is one of the many reasons I've hated Apple with a passion for as long as I can remember.
Meanwhile I am working on an app with several friends/former co-workers and we opted for Flutter. Since I am the only one who has any experience with smartphones in general, this seemed to be the best candidate. For one, I know Dart more or less - I'm by no means expert in either Flutter or Dart but I can navigate myself with ease and documentation is fairly good. Which is enough to be fairly productive. Also Dart is an OK language overall - at least you know what to expect from it, unlike js or ts.
Having said all that, I won't lie, I have this fear in the back of my mind that at some point Apple will try to lock flutter out of their ecosystem and be like "Tough luck, rewrite it in Swift, deal with it". Which does sound like a very Apple thing to do, even if you are the most die-hard Apple fan.
The situation is bad, there's no way to sugarcoat it. But I'd argue that even with everything I just said, the web is in a worse state. If we roll the tape back to when I wasn't even a teenager, I learned basic HTML by simply looking at Yahoo!'s source. Yes, there weren't fancy animations or shiny colors and whatnot but it was simple enough to get it going. These days, it's an absolute nightmare. A simple "hello world" page adds an ungodly amount of node_modules to your drive, long, slow and convoluted build systems, horrible setup processes and horrible development experience. On the subject of the app we are making, having a few microservices, a few databases, a set of docker images, a docker compose setup for development and kubernetes with ingress for deployment is a lot of work as it is. We can get it up to speed in a matter of a few hours since we have a total of 25-30 years of experience between the 3 of us. But if we have to add web to the equation(which personally I would not mind, considering I'm more likely to use a computer rather than a phone), it would be a catastrophe. We'd need to rope in at least 3 other people to work on that and keep in mind that this is a project for our spare time and we are investing our private time and money. The web is simply not feasible.
In the early 2010's when I was coming out of uni, I would have preferred to work with web out of the two options - you had to endure Apple's products which I wouldn't have wanted to spend money on and you had to endure Java for Android. No way I would want to deal with either of those. But these days, I'd do anything to avoid the web, simply because the web is an absolute mess - I'm far more willing to risk shooting myself in the foot than having to deal with it.