Komga, Kavita and OPDS on a real iPhone: the device pass before ComicFlow 3.7
ComicFlow 3.7 reads comics straight from your own Komga, Kavita or OPDS server. Before it shipped I ran it on an iPhone against real servers on my Mac. Most of it passed. Three things didn't, and none of them was where I expected.
ComicFlow 3.7 went live on 19 October. Its one big feature is comic servers: if your comics and manga already live on a Komga, Kavita or OPDS server, the app can now browse that collection, stream a book without downloading it, or download it for offline, and keep your place in sync with the server both ways. The release post on applestan.com is the user-facing version. This is the part from the week before.
What those three names mean
If you found this by searching for one of them, you probably know already. For everyone else: Komga and Kavita are comic and manga servers you run yourself, on a computer or a NAS at home. You point them at a folder of CBZ, CBR and PDF files, and they turn it into a library with series, covers and reading progress that any device on your network can open. OPDS is an open catalog format that a lot of book servers speak, including Calibre, Codex and Stump, so an app that reads OPDS can talk to all of them.
ComicFlow doesn’t host comics or run a server. It connects to one you set up. Reading from a server is part of the Pro unlock, and you can test the connection to yours without it.
Why a real phone
Almost all of the server work was built and tested against a rig on my Mac: a Komga, a Kavita, a small OPDS server that only answers to Digest authentication, and an HTTPS one with a self-signed certificate. The unit tests and UI tests run against it, and they run in the simulator.
But the plan also had a list of things the simulator can’t show. A download that has to keep going after you lock the phone. The Local Network permission prompt, and what happens when you say no. Face ID on a single server. A server reached over Tailscale instead of the home Wi-Fi. Memory on a webtoon strip 20,000 pixels tall.
So on 17 October I put the rig on my home network, installed a Debug build on my iPhone Air, and went through the list.
All of it passed. A 330 MB book finished downloading with the phone locked, from Komga and from the Digest server, which take two different routes to stay alive in the background. Denying Local Network access showed the message it should. A long strip of three 20,000-pixel pages streamed and then read downloaded without trouble. And Komga worked at the Mac’s Tailscale address with the phone’s Wi-Fi switched off.
One gap I can’t close: the memory check ran on the Air only. I don’t have an older iPhone to run it on.
The search field that left
The first bug had nothing to do with networking. Open a server catalog that supports search, and the search field appeared, and then, as the books arrived, it slid away and was gone.
The catalog showed a bare spinner while it loaded and swapped in a scroll view once the feed came back. iOS collapses a search field when the scroll view under it is replaced, so the field you had just seen went with the old view. The fix is one scroll view that holds every state, loading included. A catalog that has no search link at all now drops the field, instead of offering a search that can’t run.
The server that stayed unlocked
You can put a single server behind Face ID. I opened mine, authenticated, went back to the server list and opened it again. No prompt.
The lock was only reapplied when the app went to the background. Going back to the list and coming straight back in skipped it. It now locks again every time the Servers tab returns to its list.
Manga that read the wrong way
The third one came a day later, from the demo server I set up for App Review: a Komga holding the same made-up comics as the App Store screenshots. I opened Paper Ronin, a manga, from its Read button on the server’s home screen, and it opened left to right.
Komga stores reading direction on the series, never on the book. ComicFlow only knew a book was right to left when it had been opened from inside its series, because that’s the only place the answer was on the page. A manga opened from the server’s home shelves (Keep Reading, On Deck, Recently Added), from a reading list or from a download had no direction to go on, so it got the default.
Now, when a streamed book first opens, ComicFlow asks Komga for its series once, waits at most three seconds for the answer, and keeps it as that series’ setting. It asks again when a download starts, so the offline copy opens right to left with no connection. A direction you’ve already picked yourself is never overwritten. I checked it on the Air against the demo server before it went into the build.
The build that existed for a link
3.7 also has an In-App Event on the App Store from 22 October, a card called “Read From Your Comic Server”. When I went to submit it, App Store Connect refused: the event needed a deep link into the app, and ComicFlow had never had a URL scheme, so there was nothing for it to open.
Build 2 was already in review. I pulled it minutes after submitting, and build 3 added comicflow://servers, which opens the Servers tab, including on a cold launch. The event and build 3 went in together on 19 October. If you’re planning an In-App Event for an app that has never needed a URL scheme, check that before you submit the build, not after.