Apple guideline 3.1.1 explicitly prohibits iOS apps from containing UI elements that link to or promote competing app stores. Google Play mirrors this restriction for Android. The violation is usually not malicious — it originates from a shared React Native or Flutter codebase where a developer adds a cross-platform promotional banner without platform-gating it. But reviewers catch it systematically: a hardcoded play.google.com link in an iOS build is a trivial pattern match that triggers rejection with minimal reviewer judgment.
Low because the fix is mechanical once found — remove or platform-gate the cross-store link — and the violation is caught immediately in review rather than causing downstream user harm.
Platform-gate all store references so each build only references its own store:
import { Platform, Linking } from 'react-native';
const STORE_URL = Platform.select({
ios: 'https://apps.apple.com/app/id[YOUR_APP_ID]',
android: 'https://play.google.com/store/apps/details?id=[YOUR_PACKAGE]',
});
// Usage
<TouchableOpacity onPress={() => Linking.openURL(STORE_URL)}>
<Text>Rate the app</Text>
</TouchableOpacity>
Search for hardcoded competitor URLs: grep -r 'play.google.com\|apps.apple.com' src/ --include="*.tsx". Any URL that references the other platform's store must be removed from native UI code. Cross-platform promotion belongs on your marketing website, not inside the native app.
ID: app-store-policy-compliance.platform-standards.no-competitor-mentions
Severity: low
What to look for: Count all relevant instances and enumerate each. Search all source files, string literals, metadata files, and bundled content for: (1) App store competitor mentions — "Google Play", "Play Store" in iOS app content (and vice versa: "App Store", "TestFlight" in Android content). Both stores prohibit promoting a competitor store within the app. Specifically: iOS apps must not say "also available on Google Play" inside the app UI. Android apps must not say "also available on the App Store" inside the app UI. (2) Store links — Search for apps.apple.com, play.google.com/store, testflight.apple.com URLs in source code. Cross-store links are prohibited inside app UI. Exception: web views loading your marketing website (which may have cross-platform links) are generally tolerated — the prohibition is on native UI elements that link to competitor stores. (3) Competitor app promotions — Search for names of specific competitor apps used in UI copy in a promotional context (e.g., "better than Competitor App!"). This is distinct from comparison in marketing materials — it's about in-app UI copy. (4) Review notes vs. app content — This check is about in-app content only. It is acceptable to mention the App Store in your App Review notes (submitting to Apple) or in server-side content not bundled with the app.
Pass criteria: No in-app UI copy mentions competing app stores. At least 1 implementation must be verified. No in-app links to competing store listings. Native UI elements reference only the store the build is submitted to.
Fail criteria: iOS app UI contains "also available on Google Play" or a link to play.google.com; Android app UI contains "also on the App Store" or a link to apps.apple.com; in-app purchase UI references a competitor store's pricing.
Skip (N/A) when: App targets only one platform and contains no cross-store references in source.
Detail on fail: "src/screens/AboutScreen.tsx contains 'Also available on Google Play — click here to download' with a hardcoded play.google.com link" or "iOS build's marketing screen contains an 'Also on Android' badge linking to the Play Store listing"
Remediation: This is a simple fix once identified.
Platform.OS === 'ios' ? <AppStoreButton /> : <PlayStoreButton />STORE_URL constant that switches based on Platform.OS is cleaner than hardcoded URLsReview the configuration in src/ or app/ directory for implementation patterns.