I'm an anonymous solo dev shipping iOS apps with Claude Code. My first app (rojiura) got rejected 3 times in a row. After shipping 4 apps and accumulating 8 total rejections, I extracted the recurring patterns into a single shell script that runs in the pre-submit hook.
The Kit ($9.80, lifetime updates)
komugi0427.gumroad.com/l/yijypn
5 files inside:
1. ios-pre-submit-gate.sh — 8 automated checks
Runs before deploy, exits 1 if any of these fail:
-
Info.plistUsageDescription keys that don't have corresponding code - Android-only
Referencesaccidentally left in iOS plist - Support URL liveness check
- Personal name leak (
Yura,大塚etc. in any file) - Tracking SDK declared but
requestTrackingAuthorizationnot called - iPad Air (M3) simulator boot test (Apple's actual review device)
-
CFBundleVersionmonotonic increment - Code signing identity vs provisioning profile mismatch
Auto-detects Capacitor / Expo / Native projects.
2. asc-cancel-and-submit.mjs — ASC API rescue
Apple's docs don't make this obvious: when a review is rejected, you cannot DELETE the old appStoreVersionSubmission. You have to PATCH canceled=true first, then create a new reviewSubmission (different endpoint), add an item linking the version, then PATCH submitted=true. 4 API calls in sequence.
I've packaged it as a single script that takes --version-id and handles the entire rescue flow.
3. reviewer-notes-template.md — 7-section template
Template I now paste into every app's review notes:
- Test user credentials
- Feature walkthrough
- Third-party content sources
- Data collection summary
- Special permissions justification
- Expected reviewer experience
- Known issues + workarounds
4. LP.md + README.md — Setup and usage
5. INCIDENT_LOG.md — Full post-mortem of all 8 rejections
What got rejected, what the reviewer wrote, what I tried, what eventually worked.
Proof It Works
On Palette (sibling app) the gate caught 3 of the 5 rejection reasons before re-submission. After integrating, 0 new rejections on the same patterns.
What I'm Selling
$9.80 one-time, lifetime updates. Includes a 30-min Zoom setup help for buyers — I'll actually run the gate on your repo with you, not just hand you scripts.
Honest Disclosure
I'm anonymous, 88 X followers, current sales: 0. This is the first wider distribution attempt. Monthly numbers (revenue, cost, install) published transparently at mint.komugi-ai.jp.
Looking For
Feedback on what should go in v2. Currently considering:
- Apple Intelligence opt-in checker
- Privacy Manifest v2 validation
- App Tracking Transparency edge cases (re-prompt timing)
- ASO meta validation (subtitle / keywords)
What rejection patterns have you been bitten by? Drop a comment.
Top comments (0)