DEV Community

ミント
ミント

Posted on

Built a $9.80 iOS App Store Rejection Defense Kit After 8 Rejections

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.plist UsageDescription keys that don't have corresponding code
  • Android-only References accidentally left in iOS plist
  • Support URL liveness check
  • Personal name leak (Yura, 大塚 etc. in any file)
  • Tracking SDK declared but requestTrackingAuthorization not called
  • iPad Air (M3) simulator boot test (Apple's actual review device)
  • CFBundleVersion monotonic 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)