Hangar went live on the first submission.

That sentence still feels slightly unreal, because my first App Store app did not. Speech Route — a Fiverr contract, a MacBook I had just bought, an App Store Connect account that was empty when I opened it — was rejected at least eight times. Almost none of those rejections were about the code.

I submitted Hangar expecting a fight. Review came back approved. It's live as Hangar: Deploy Control.

What Hangar is

Hangar exists because I did not want to open a laptop.

It's a developer tool I built for myself to trigger webhooks from an iPhone: Vercel deployments, GitHub Actions, and other commands I normally wouldn't want to open a laptop for. One tap, a webhook, no browser.

That is the product. The App Store still has to explain it in a subtitle and a first screenshot. The store job is separate from the webhook job, and I had to do both.

The difference wasn't that Hangar is simpler

I don't want to sell this as a personality trait, or as Apple going easy on a small utility.

The difference I can actually point to is who owned the submission. On Speech Route, the client sent a privacy policy as an HTML file. The app record wasn't filled in. Subscription products existed in a half-finished state, so StoreKit returned nothing and Guideline 2.1 read the paywall as an incomplete app. The paywall you couldn't close was 3.1.2. The file that wasn't a URL was 5.1.1. I learned those numbers by failing them.

On Hangar I was the client. I owned the listing. The hosted privacy policy, the bundle ID, the screenshots — those were mine to finish before I pressed submit, not someone else's attachments to chase. I ran the Speech Route list first, on purpose, while the binary was still on my machine.

What I refused to send until it was done

I treated the Speech Route list as a gate, not as notes to deal with after review.

The privacy policy was a public URL before it went in App Store Connect, and I opened it on a phone. Signing — certificate, identifier, profile, app record — matched before I treated further problems as code problems. The listing was filled in, category included. I was not going to find out in review that a field I'd left for later was the whole round trip.

I am not going to invent a cleaner story than that. I didn't discover a hidden Apple shortcut. I stopped submitting an unfinished store record and hoping the binary would carry it.

Developer Tools, not a generic utility

Category is a listing choice, and I treat it like one. Hangar is not a flashlight. It fires deploys from a phone. Developer Tools is the honest shelf.

A vague utility category would have attracted the wrong searcher. Category is which aisle people walk down. If they walk the wrong one, they see Hangar, don't understand it, and don't tap — the same way a keyword rank can bring the wrong hope.

There is also a review reason. Guideline 4.3 exists, and Apple has got sharper on saturated utilities. I mentioned that in the social media questionnaire post. Hangar should not look like a generic timer, so the category and the screenshots both say what it actually does.

I keep the same rule on my other apps. Monetra is Business — invoices and profit, not a consumer diary. Sera is Lifestyle. I keep each category aligned with its screenshots.

First-try approval is not the end of the story

Once Hangar was on the store I searched “Vercel” and found it at #21, and I thought that meant the launch was working. The downloads didn't follow. I had typed those keywords into the store myself. Ranking only bought a slot; the first screenshot is the ad. Getting through review and getting found are different jobs. I had only finished the first one.

The eight rejections on Speech Route are still the piece of work I quote from. They are why Hangar's first submission was boring, in the best way: there was nothing left for a reviewer to trip on that I already knew about. The full sequence from that first job is in the eight-rejections post.

I now budget for review as a separate piece of work, and I don't send an app until the non-code list is done. Hangar is what that looks like when it works the first time. In October, BrainHD went through on the first submission too — live within two days. Same list, different product.