No profanity, violence, or explicit content violations
Why it matters
App Store Review Guideline 1.1 (apple-review-guidelines-content) and Google Play's Developer Content Policy (google-play-developer-content-policy) both enumerate content that results in immediate rejection: profanity, graphic violence, sexually explicit content, and hateful speech. Beyond binary-level rejection, content violations discovered post-publication trigger app removal and can result in developer account suspension — losing access to all published apps, not just the offending one. Misleading marketing claims ("100% free" for a subscribed app) are explicitly called out under Guideline 3.1 as deceptive pricing and trigger a separate rejection track. Hardcoded strings in error messages, debug dialogs, and placeholder copy are the most common sources of unintended policy violations in vibe-coded apps.
Severity rationale
Medium because content policy violations cause post-publication removal and developer account suspension, while misleading claims in store descriptions trigger a separate deceptive pricing rejection track.
Remediation
Search all user-visible string literals for policy-violating content and misleading claims before submitting. Scan source files first:
# Check for common profanity patterns in source
grep -rn --include='*.ts' --include='*.tsx' \
-E '(fuck|shit|damn|ass\b|crap)' src/
# Check for misleading pricing claims in store metadata
grep -rn 'free\|no cost\|zero cost' src/ store-metadata/
Replace any profanity in error messages, debug copy, and default strings with neutral language. If the app has a subscription or IAP, ensure no marketing copy claims the app is "free" without qualifying it ("Free to download" with "Premium features from $X/mo" is compliant; "Free app" for a paywalled core feature is not). For user-generated content features, implement a server-side moderation layer before content reaches other users.
Detection
- ID:
content-policy-violation-free - Severity:
medium - What to look for: Review app copy, in-app text, and marketing materials for content policy violations. Check for: excessive profanity, graphic violence, sexually explicit content, hateful speech, misleading claims. This is a best-effort check — obvious violations should be caught by human review, but some may slip through AI code inspection. Look at hardcoded strings, default dialog text, error messages, and any user-visible content.
- Pass criteria: Enumerate all hardcoded user-visible strings in source files. No more than 0 content policy violations should be found in app source code or hardcoded strings. App description in store listing is appropriate and does not violate policies. Report even on pass: "Scanned X source files containing Y hardcoded strings, found 0 policy violations."
- Fail criteria: Profanity, violence, explicit sexual content, or hateful speech found in app text or store description. Misleading claims detected (e.g., "100% free" but requires in-app purchases).
- Skip (N/A) when: Never — content policy compliance is required.
- Detail on fail:
"Profanity detected in error message at src/screens/LoginScreen.tsx"or"App description claims 'Free app' but requires subscription payment for core features" - Remediation: App stores have strict content policies. Ensure compliance:
- Search all source files for profanity and inappropriate strings:
grep -rn "damn\|hell\|crap\|ass\b" src/ --include="*.tsx" --include="*.ts" - Remove profanity from error messages, default copy, and UI
- Ensure marketing claims are honest (don't claim "free" if requiring purchase)
- If the app has user-generated content, implement moderation
- Test the app in various contexts — what appears harmless in development may violate policy in context
- Review store guidelines:
- Search all source files for profanity and inappropriate strings:
External references
- external · apple-review-guidelines-content — App Store Review Guidelines — Safety
- external · google-play-developer-content-policy — Google Play Developer Content Policy
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-store-readiness·automated