On iOS there isn't always a choice to not build something native. For example, I can't install Navidrome as a PWA because Apple doesn't properly support audio playback for PWAs. I ended up writing a client that suited my listening habits.
To read ePubs, however, I was able to write a PWA leveraging epub.js because no native APIs were required.