Apple guideline 4.3 and Google Play's Repetitive Content policy target apps that dilute store quality without adding value — commodity utilities (tip calculators, flashlights, unit converters) with no differentiator, and near-duplicate submissions from the same developer. Beyond rejection, being flagged as spam can result in removal of existing apps from the same developer account. The store algorithms also deprioritize apps from accounts with spam history, reducing organic discoverability even after policy issues are resolved.
High because spam and near-duplicate flags attach to the developer account, not just the single submission, and can suppress discoverability or accelerate future rejections across the entire account.
Identify the single sharpest differentiator your app offers over the top three free alternatives in the same category — if you cannot name one, build one before submitting. Make that differentiator front-and-center in the app name, first screen, and store description.
For second-version apps, update the existing listing rather than creating a new one:
# Correct: update version in existing app.json
# app.json
{ "expo": { "version": "2.0.0", "ios": { "buildNumber": "20" } } }
# Wrong: creating a new app with bundleIdentifier com.example.myapp2
Commodity utilities in crowded categories need a design system distinction, a workflow integration, or a community feature — cosmetic reskins do not satisfy the differentiation requirement.
ID: app-store-policy-compliance.app-quality.no-spam-duplicate
Severity: high
What to look for: Count all relevant instances and enumerate each. Before evaluating, extract and quote any relevant configuration or UI text found. Examine the app's core concept and feature set. Look for signs of minimal differentiation: (1) A calculator, flashlight, QR code scanner, tip calculator, unit converter, or other commodity utility that provides identical functionality to hundreds of existing free apps with no differentiation; (2) An app that appears to be the same app as another published app from the same developer (check bundleIdentifier domain — does it look like com.example.appname2?); (3) A template-generated app with minimal customization (default icons, generic screen names like HomeScreen, Screen1, boilerplate copy). In app.json, look for expo.name values like "My App", "React Native App", "App", or other generic names. Check if the app's description field in store metadata meaningfully differentiates the app's value proposition from existing apps. Apple guideline 4.3 and Google Play's Repetitive Content policy prohibit spam and near-identical apps.
Pass criteria: The app has a distinctive concept, name, and feature set that sets it apart from commodity apps in its category. At least 1 implementation must be verified. Or it is a commodity utility with a clear, specific differentiator (design, workflow, integration, community). A partial or placeholder implementation does not count as pass.
Fail criteria: App is a commodity utility (tip calculator, flashlight, QR scanner) with no differentiation from free apps; app appears to be a near-identical copy of another app from the same developer; app name is generic ("My App", "App 2"); app is clearly template-generated with minimal customization.
Skip (N/A) when: Never — originality must always be evaluated.
Detail on fail: "App is a tip calculator with no differentiating features — identical in scope to hundreds of existing free apps" or "App name 'My Budget App 2' and bundle ID 'com.example.budgetapp2' suggest a duplicate of a prior submission"
Remediation: Apple and Google both reject apps that don't provide unique value.
Review the configuration in src/ or app/ directory for implementation patterns.