What gets checked
On the App Store, Apple searches three fields: the name, the subtitle and the 100-character keyword field. It doesn't search the description. So the checker looks for unused characters in those three, words repeated between them (a word counts once, wherever it appears), plurals of words already listed, and spaces after commas. Guideline 2.3.7 bars prices and words like “free” or “best” in the name and subtitle; the checker flags those too.
On Google Play, the title, short description and full description are all searched. The checker counts characters against the 30, 80 and 4,000 limits, checks the title's words come up again further down, and flags any word that makes up more than 3% of the description, which Play treats as keyword stuffing.
On both, it counts screenshots, reads the rating and the date of the last update, and looks for release notes that only say “bug fixes”.
The thresholds are our own rules of thumb from shipping our apps, not Apple's or Google's. Where a store publishes a rule, the tip says so.
Privacy
The App Store check asks Apple's public lookup API for the listing, the same data anyone can see on the App Store. Your keyword field and your Play text are scored in your browser and never leave it. Nothing is saved.
Fix it from your editor
We publish 15 apps on our own, so these checks run on every release. They began as skills for Claude Code, and each fix the checker suggests has one.
- Store Screenshots (paid): runs your real app on simulators and emulators, captions every screen, and checks each size the stores accept.
- Store Preflight (paid): catches what passes a build and fails review, before you upload.
- niche-scout (free): measures what people search for, using Apple's search API, before you spend characters on it.
- listing-accuracy (free): checks that each claim in your listing is something the app actually does.
The paid ones are also sold together as the Flutter Indie Release Pipeline. They work with Flutter, React Native and Expo apps.