App selection criteria
The last app I bought through Apple's app store was a client for my Audiobookshelf instance and this reminded me why I'd built a Navidrome client. I wanted to use the web application as a PWA, but Apple doesn't support continuous audio playback in PWAs or Safari on iOS. Audio plays, but it never advances to the next track.
I've moved my reading, audiobook and podcast activity to Audiobookshelf, but it's ebook support is rudimentary.1 I briefly opened up Xcode and started prototyping an ebook reader that would leverage Audiobookshelf's robust API and quickly realized that there was no reason to build a native app for this. It didn't require any native APIs, so why build something I intended largely for my own use only to deal with the headache of Apple's review process?
Instead, I closed Xcode, opened Cursor and scaffolded out a PWA that uses react-reader (which leverages epub.js) instead. I could iterate far quicker, have a performant and robust experience for my use case without anything between myself and any updates I want to issue. I have a reliable app that relies on authenticating against my Audiobookshelf instance, persists preferences and state using an SQLite database and none of the platform lock-in or review headaches.
PWAs, being built on web technology, offer more transparency as well. I can inspect the application, dig through network calls and see not only how it works but evaluate whether it's whether there are possible privacy concerns. This has lead me to establish new criteria for selecting applications I intend to use:
- If there’s a PWA, use it.
- If a platform-specific API is required, use a native app that respects your privacy.
- If neither are options, don’t use it.
I'm interacting with linkding, my epub reader and Mastodon as web apps saved to my home screen on iOS and have Mastodon in my dock on macOS. Audio playback requires native APIs to work reliably, so I built a Navidrome client and selected an Audiobookshelf client that respects my privacy.
In an ideal world, Apple would act in good faith and provide better support for PWAs. This world, however, is far from perfect and Apple has shown they'll only make choices like that, that benefit users, under duress.
The web platform provides an excellent experience, an open experience and one that should be preferred — when possible — over an onerous process that Apple controls.
I'll prefer openness and I will always value privacy.
I'm not surprised by this, it's not the focus of the app. ↩