As I've gone deeper into the looking at mobile app development and progressive web apps, I'm getting more annoyed with the iOS side of things. In terms of PWA's, it's pretty clear that Apple is not interested in supporting anything that isn't coming through their app store.
I looked for a hot moment at Xamarin for cross-platform development for iOS and Android, and honestly, I'm not feeling it. I remember now that Xamarin as a XAML-based platform, using the MVVM pattern, kind of sucks. I know that Microsoft didn't yet own Xamarin back in the day, but XML as the thing that drives all the things in the early part of the decade isn't great. (I know that HTML is technically XML, but it's way simpler and easier to work with.) In messing with that, even getting Xcode installed on my old Mac was a pain, as it's necessary to compile an iOS app. I'm definitely not going to learn Swift to start working with iOS.
But the PWA story, that's not ideal either. What I've found so far is that Chrome/Edge are all-in on supporting PWA's as a concept, on Android and even Windows. Firefox is good-ish, but Safari is dreadful. It lends some credence to the old Steve Jobs thing where he said, "The Web is the app." A part of me wishes that he would have stuck to that. Developers put out some early open source style and touch frameworks that made it possible for web apps to look like native iPhone apps. Since then, a combination of standards have made it possible to do amazing things in the browser, again Safari not withstanding.
Relative to my music locker project, obviously I'm biased to the things I have, which is Android on the phone. I've been using it lately on my phone, and it is indistinguishable from using a native app. Because Chrome on Android even supports the media metadata API (as well as Edge, even though it reportedly does not), my app even puts the current track data and play/pause and skip functionality on the lock screen. It doesn't work on iOS. Worse, there's a quirk where iOS won't even allow and HTML audio element to play a track without direct human intervention. Lame.
Service workers and the cache API though allow me to save music metadata, the album covers and even the music itself using just the browser. It is effectively as good as native, at least for Android (and even Windows and desktop Mac). I've really enjoyed working on it so far, and relieved that I don't need to build something native. The first use case was the desktop browser, where I sit all day during the day, and using the same thing for my phone is a huge win. I'm frustrated that it doesn't work on iOS as well, but given the fact that I don't primarily use that OS for anything, I'm not sure that I care. It's an open source project. If someone else is passionate about it, they can do a pull request. 🙂