App Store rejection checkers compared
Start with a free option. Most projects do not need a paid one. There are free Claude Code plugins and skills that check an app against the App Store Review Guidelines, AcceptMyApp gives a free first analysis, and shipcheck's free scan shows real findings rather than a teaser.
The two honest reasons to pay are React Native and Expo depth — transitive privacy manifests in node_modules, Expo config-plugin side effects, generated-project pitfalls that a generic iOS checker has no reason to implement — and provable policy freshness, because Apple and Google change these rules continuously and a volunteer project rarely tracks that.
The other axis worth caring about is where your code goes. AcceptMyApp's code checker asks for read-only access to a GitHub repository. shipcheck runs inside the Claude Code session you already have open, against local files, and uploads nothing. For a security-conscious solo developer that is not a feature comparison, it is a gate.
shipcheck is ours. It is disclosed as such everywhere it appears on this site, including where a competitor is the better answer.
The comparison
| shipcheck (ours) | AcceptMyApp | ReviewKit | Free CC plugins | |
|---|---|---|---|---|
| Price | Free first scan · $29 one-time/app · $49/yr unlimited · $149/yr agency | $29 one-time/app · $149/yr unlimited · first analysis free | Free (3 scans/mo) · $5 one-time · $19/mo Pro · $49/mo Team | $0 |
| Where it runs | Inside your Claude Code session | Web app | Web app | Inside Claude Code |
| Code leaves your machine | No | Repo access for the code checker | Upload | No |
| Account required | No | Yes | Yes | No |
| RN / Expo specific | Yes — the whole point | General iOS | General iOS | Varies, usually not |
Transitive privacy manifests in node_modules | Yes | No | No | Usually not |
| Cites the exact guideline clause | Yes | Yes | Partially | Varies |
| Predicts reviewer wording | Yes | Partially | No | No |
| Scan caps | Unlimited rescans | Per-app | Capped by tier | Unlimited |
| Policy corpus freshness | Local cache with a diff command | Claimed, not shown | Claimed, not shown | Whatever the repo has |
| Google Play checks | Yes | Limited | Limited | Varies |
| Draft a rejection reply | Yes | No | No | No |
Who each is for
Free Claude Code plugins and skills — start here
There are genuinely free plugins and open-source skills that check a project against the App Store Review Guidelines, and they live in the same install surface as shipcheck. This is the comparison a buyer should make first, and any paid tool that pretends they do not exist is not being straight with you.
Use one if: you want a sanity check, you are shipping a native app, or your project is simple enough that the guideline-level checks cover you.
Where they run out: the RN/Expo configuration layer, and maintenance. Keeping a policy corpus current is unglamorous continuous work that volunteer projects rarely sustain, and a stale corpus is worse than none because it reads as authoritative.
AcceptMyApp — the established general-iOS option
$29 one-time per app, $149/yr for unlimited apps, first analysis free. Combines code, metadata and screenshot checking, exports markdown aimed at AI-agent workflows, and has a real Product Hunt track record.
Use it if: you ship native iOS, you want screenshot and metadata review in the same pass, and granting a repository read scope is acceptable to you.
The friction: the code checker requires granting one-time read-only access to a GitHub repository. For plenty of teams that is routine. For a solo developer with client code or an unreleased product it is a real bar, and it is the specific bar shipcheck's architecture removes.
ReviewKit — cheapest entry, subscription shape
Free tier at 3 scans a month with a basic rule engine, $5 one-time for all four scan engines, then $19/mo Pro with history and diffs and $49/mo Team with an API.
Use it if: you want scan history and diffing across submissions, or an API for a team pipeline.
The tension: $5 is a very effective anchor, and the products are not equivalent — the $5 tier is capped and shallow. The subscription tiers also reintroduce scan caps, which is the friction one-time-payment-preferring indie developers most consistently resist.
AppDrift and RejexAI — worth monitoring
Smaller and less differentiated, roughly $9.99–39.99/mo with a free token tier in AppDrift's case. Neither has visible React Native or Expo depth.
shipcheck — the RN/Expo specialist
Three things it does that the others structurally do not:
It understands the dependency tree. It reads node_modules, Podfile.lock and every PrivacyInfo.xcprivacy in the project, and intersects that with Apple's published SDK list — which is how you find that hermes, or a transitive nanopb under Firebase, is the reason for your ITMS-91061.
Nothing leaves your machine. It runs in the Claude Code session you already have open. No account, no signup, no repository grant.
It shows the corpus is current. /shipcheck:refresh re-fetches Apple and Google policy and prints a changelog of what actually changed. Every competitor claims to check against "the guidelines"; none of them shows you evidence of currency.
Where it is the wrong tool: you are shipping native Swift or Kotlin, where the RN depth buys you nothing and AcceptMyApp is a better general checker. You want a hosted dashboard with a team seat model rather than a CLI. Or you want screenshot review, which shipcheck does not do.
What none of them can do
Static analysis catches the deterministic rejections: privacy manifests, permission strings without features, background modes without a matching capability, missing account deletion, placeholder content, metadata naming other platforms, Play Data safety inconsistencies, target API level.
It cannot catch the judgement rejections. Guideline 4.2 minimum functionality is a human deciding whether your app does enough to exist. Guideline 4.3 spam is a human deciding whether it looks like forty other apps. Guideline 3.1.2 subscription disclosure has objective parts and subjective ones. Guideline 1.4.1 medical scrutiny is a human reading your claims.
Any tool implying it can guarantee approval is selling certainty that does not exist. The honest claim is narrower and still worth money: it removes the class of rejection where the message names a guideline and you spend two build cycles working out which of 800 packages caused it.
How to choose in one minute
- Native Swift or Kotlin app? → free plugin first, AcceptMyApp if you want depth and screenshots.
- React Native or Expo? → shipcheck, because the failures are transitive and configuration-shaped. Why RN is different.
- Cannot grant repository access? → shipcheck or a local free plugin. Nothing web-based will work for you.
- Need scan history across many submissions? → ReviewKit Pro.
- Agency shipping many client apps? → compare shipcheck's $149/yr agency tier against AcceptMyApp's $149/yr unlimited; they are priced identically and differ on locality and framework depth.
- Already rejected and need to reply? → shipcheck drafts a Resolution Center reply against the cited clause. Nothing else in this list does.
Questions and answers
What is the best App Store rejection checker?
It depends on your project. AcceptMyApp is the most established general iOS option at 29 dollars one-time per app. ReviewKit has the cheapest entry point. Free Claude Code plugins exist and are a legitimate first stop. shipcheck is the React Native and Expo specialist and the only one that runs entirely locally without repository access.
Is there a free App Store compliance checker?
Yes. There are free open-source Claude Code plugins and skills that check an app against the App Store Review Guidelines, and AcceptMyApp offers a free first analysis. shipcheck's first scan is free and shows real findings rather than a blurred teaser.
Do these tools need access to my code?
It varies, and this is the sharpest difference between them. AcceptMyApp's code checker asks you to grant one-time read-only access to a GitHub repository. shipcheck runs inside your own Claude Code session against local files, so nothing is uploaded anywhere.
Can a tool guarantee my app will be approved?
No, and any tool claiming so is overselling. Static checks catch deterministic configuration issues. They cannot predict judgement calls such as whether an app has enough functionality under Guideline 4.2 or reads as spam under 4.3.
Why pay when free Claude Code plugins exist?
For many projects you should not. The honest reasons to pay are React Native and Expo depth such as transitive privacy manifests in node_modules, and a maintained policy corpus that shows what changed since your last scan. If neither matters to you, use the free one.
shipcheck. “App Store rejection checkers compared.” Baker Ventures LLC, September 6, 2026. https://shipcheck.bakerventuresstudio.com/compare/app-store-rejection-checkers-compared/