2 min read

Apple Rejected My App Because a Reviewer Typed a GitHub URL Into a Login Field

I have been building on the App Store since 2018. Eight years in, I can still be surprised by how little thought goes into an app review.

This week Apple rejected my tvOS app, Lunarr TV. I provided working demo credentials (a live server URL at https://lunarr.sayem.eu.org and an API key) in the App Review Information section of my submission. I then waited four days for a human to look at the app and had to request an expedited review just to get a decision. When the decision finally came, the reviewer told me they typed a URL I never gave them, hit an error, and rejected the build under Guideline 2.1(a) (App Completeness).

Here is the URL they typed:

https://github.com/lunarr-app/lunarr-go

That is the GitHub repository for the open-source server the app connects to. It is a page of source code. Not a server. Not a URL to log into. Any human who has shipped software in the last decade knows what a GitHub URL is. It is not a login page. It is not something to paste into a "Server URL" field. And yet they reported "an error was displayed after we entered the following server."

The app did exactly the right thing

Lunarr is a client for the open-source Lunarr media server. It has no content of its own. Give it a valid server URL and pairing code and it works. Give it a GitHub page or any other random URL, and it correctly fails to connect. That is not a bug. That is the software working.

The reviewer did not read the App Review Information, looked at the app description, spotted a link to the project's repo, pasted it into the "Server URL" field, and called the expected failure a bug.

This is a depressingly normal review experience

I wrote the server URL and API key right into the submission notes and they used a URL from the listing instead. The reviewer hit a network error on a GitHub page and concluded the entire app had a stability bug, instead of pausing one second to think "maybe I typed the wrong URL."

I do not understand how people get this job. You work in app review. You evaluate apps all day. Your entire job is understanding what an app does and whether it works. You could not tell a source code repository from a server that hosts the app's data. You typed the URL of a GitHub page into a login field. Why are you reviewing apps if you do not understand the basics of how they work?

And a human still signed off on it. The generic boilerplate reproduction steps ("uninstall and reinstall", "check networking") suggest the check was performed with roughly the diligence of a checkbox being ticked. Days of my time, an expedite request, and a resubmit, all to correct an error that one attentive reviewer would never have made in the first place.

One wrong URL in a login field became my problem. That is backwards. The reviewer's mistake, not mine.

The worst part

The app could not have been easier to review. The login details were in the submission. The flow is: enter URL, tap pair, approve. It works. The thing that got rejected was not the app. It was whatever URL a reviewer grabbed off a page about someone else's software.

If you are an app developer reading this, keep your notes explicit, keep your listing unambiguous, and brace for the day a reviewer pastes your repository URL into a login field and blames you for it.