Apple guideline 7.3, Apple guideline 3.1.1 (loot box odds), Google Play's Real-Money Gambling policy, and COPPA §312.5 (child protection) all apply simultaneously to gambling apps — and failures in any one are grounds for immediate rejection. Age verification gaps are the most common failure: a casino screen accessible without a date-of-birth gate will be caught by automated review tools in both stores. Loot boxes linked to real-money purchases without disclosed odds are a specific named violation in Apple's 3.1.1, and sweepstakes without posted official rules violate US law in 48 states independently of store policy.
High because gambling policy violations are a permanent ban risk for the developer account, and operating real-money gambling without the specific Apple entitlement or Google Play program approval means the app cannot legally run in either store regardless of code quality.
Gate all gambling content behind a verified age check that runs before any gambling content is rendered — not after:
// src/screens/CasinoEntry.tsx
function CasinoEntryGate({ children }: { children: React.ReactNode }) {
const { ageVerified } = useAgeVerification();
if (!ageVerified) return <AgeVerificationScreen />;
return <>{children}</>;
}
Add geolocation checks that block gambling features in unlicensed jurisdictions using expo-location or an IP geolocation API. Disclose loot box odds on or immediately adjacent to the purchase button — not in a linked document. Apply for Apple's Gambling entitlement and Google Play's Real-Money Gambling program before submission — these require a licensed operator account and cannot be bypassed.
ID: app-store-policy-compliance.regulated-industries.gambling-compliance
Severity: high
What to look for: Count all relevant instances and enumerate each. If gambling signals are detected (real-money betting, casino mechanics, sweepstakes, loot boxes tied to real-money purchases), examine: (1) Age verification — Is there an age gate before any gambling content? Look for "18+", "21+", "age verification", "date of birth" entry screens. The gate must be present before the user can see any gambling content — not after. (2) Geolocation restrictions — Does the app check the user's location and restrict gambling features in jurisdictions where it is not licensed? Look for geolocation API calls (expo-location, CLLocationManager, FusedLocationProviderClient) in the gambling flow, or IP geolocation API calls (ipapi.co, ipstack.com, MaxMind GeoIP). (3) Licensing evidence — Search for regulatory licensing disclosure copy: "licensed by the [State] Gaming Commission", "licensed in [jurisdiction]", regulatory license numbers. Apple requires that gambling apps be from licensed operators. (4) Loot box disclosure — If the app has loot boxes (randomized reward purchases), look for disclosure of item odds. Apple's App Store guideline 3.1.1 requires that loot box odds be disclosed. Search for an odds disclosure screen or tooltip near any randomized purchase. (5) Sweepstakes rules — If the app runs sweepstakes or contests with prizes, look for an official_rules or sweepstakes_rules document or link. US law requires sweepstakes to have official rules posted.
Pass criteria: Gambling features are behind a verified age gate. At least 1 implementation must be verified. Jurisdictional restrictions are enforced. Licensing disclosures are present. Loot box odds are disclosed. Sweepstakes have posted official rules.
Fail criteria: Gambling content accessible without age verification; no geolocation restrictions in jurisdictions without a license; no licensing disclosure; loot box odds not disclosed; sweepstakes with no official rules.
Skip (N/A) when: No gambling, sweepstakes, loot boxes, or real-money prize mechanics detected. Pure skill-based games with no randomized purchases and no real-money prizes are not gambling. Virtual currency that cannot be exchanged for real money or prizes is not gambling. Skip if none of these apply.
Detail on fail: "Casino-style slot machine in src/screens/SlotsScreen.tsx is accessible without any age verification gate" or "Loot box purchase in src/screens/Shop.tsx shows no odds disclosure — item drop rates are not displayed to the user before purchase"
Remediation: Gambling policy violations are a permanent ban risk for both stores.
Review the configuration in src/ or app/ directory for implementation patterns.