The commonest form of a Guideline 2.3.8 (Accurate Metadata) rejection in our own submissions was not keyword stuffing. It was two names that do not match: the one on the store page, and the one under the icon on the home screen after install. Each was valid on its own, the build was green, and they still failed a human review. After aligning to one canonical spelling, it passed.
Why you cannot see it
The same name lives in many places that do not check each other: the store name per language, the display-name key in each localization, the app's own about screen, copy in the app, even the display names of in-app purchases. The build is green for each one because each one is fine alone. Nothing compares "the identity the page promises" with "the identity after install." Only review does that join, and it can surface weeks after submission.
Two details make it worse:
- By language. English matches and Chinese drifts; it only shows when the device language happens to be the drifted one. A check done in one language is blind to this.
- A one-word difference. We found two surfaces whose names differed by one word of near-synonyms. When people proofread, the brain reads both as the same word.
What fixed it, in order
- Choose one canonical spelling, punctuation, spaces and capitals included. Everything else depends on it.
- List every place the name lives: the display name in each localization, the store name field per language, the site, in-app strings, purchase display names. Use grep, not memory; the first grep always misses something.
- Propagate from the source to every surface. Changing one side so it "looks like" the other can align you to something that was itself a guess.
- Diff both ways before submitting. Every user-visible surface must equal the canonical value, and a search for the old spelling in the build output must find nothing. The comparison must be exact; fuzzy matching is how the one-word difference slipped through.
Order matters: writing the check before fixing the source freezes today's drift as the baseline.
One-minute check
Read each localized display name out of the build (the InfoPlist strings in each .lproj), and compare it character by character with that language's store name. Punctuation and spaces count, in every language you sell in. It takes a minute; if you skip it, the person who runs it is a reviewer a few weeks later.
These notes are from Obelisk Club's own submissions. Apple's wording changes; check the current App Review Guidelines and your own message.