rn-store-skills 1.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +47 -6
  2. package/package.json +5 -9
  3. package/skills/rn-store-compliance/SKILL.md +66 -61
  4. package/skills/rn-store-compliance/references/all-apps.md +90 -0
  5. package/skills/rn-store-compliance/references/app-types/ai.md +40 -0
  6. package/skills/rn-store-compliance/references/app-types/crypto-finance.md +42 -0
  7. package/skills/rn-store-compliance/references/app-types/games.md +38 -0
  8. package/skills/rn-store-compliance/references/app-types/health-fitness.md +39 -0
  9. package/skills/rn-store-compliance/references/app-types/kids.md +40 -0
  10. package/skills/rn-store-compliance/references/app-types/social.md +41 -0
  11. package/skills/rn-store-compliance/references/app-types/vpn.md +38 -0
  12. package/skills/rn-store-compliance/references/features/macos.md +67 -0
  13. package/skills/rn-store-compliance/references/features/subscriptions.md +54 -0
  14. package/skills/rn-store-compliance/references/features/ugc.md +57 -0
  15. package/skills/rn-store-compliance/references/{apple-guidelines.md → guidelines/apple.md} +56 -0
  16. package/skills/rn-store-compliance/references/pre-submission.md +97 -0
  17. package/skills/rn-store-compliance/references/react-native.md +221 -0
  18. package/skills/rn-store-compliance/references/rules/design.md +97 -0
  19. package/skills/rn-store-compliance/references/rules/entitlements.md +114 -0
  20. package/skills/rn-store-compliance/references/rules/metadata.md +153 -0
  21. package/skills/rn-store-compliance/references/rules/performance.md +231 -0
  22. package/skills/rn-store-compliance/references/rules/permissions.md +196 -0
  23. package/skills/rn-store-compliance/references/rules/privacy.md +119 -0
  24. package/skills/rn-store-compliance/references/rules/subscriptions.md +126 -0
  25. package/skills/rn-store-compliance/references/pre-submission-checklist.md +0 -116
  26. package/skills/rn-store-compliance/references/react-native-patterns.md +0 -377
  27. /package/skills/rn-store-compliance/references/{google-play-guidelines.md → guidelines/google-play.md} +0 -0
  28. /package/skills/rn-store-compliance/references/{handling-rejections.md → rejections.md} +0 -0
package/README.md CHANGED
@@ -11,6 +11,8 @@ Every time you add a feature, fix a bug, or change configuration in a React Nati
11
11
  - **Apple App Store Review Guidelines** — privacy, payments, permissions, design, metadata, and more
12
12
  - **Google Play Store Policies** — target SDK, billing, data safety, content policies, and more
13
13
  - **Common React Native rejection patterns** — Expo Go submissions, missing JS bundles, Hermes crashes, WebView-heavy apps, permission overuse
14
+ - **20+ specific rejection rules** — with detection patterns, fix steps, and example rejection messages
15
+ - **10 app-type checklists** — social, kids, health, games, AI, crypto, VPN, macOS, subscriptions, UGC
14
16
 
15
17
  About 40% of app submissions get rejected on the first try. This skill helps you avoid that.
16
18
 
@@ -19,7 +21,7 @@ About 40% of app submissions get rejected on the first try. This skill helps you
19
21
  ### Via skills CLI (recommended)
20
22
 
21
23
  ```bash
22
- npx skills add johnad/rn-store-skills
24
+ npx skills add JohnAdib/rn-store-skills
23
25
  ```
24
26
 
25
27
  ### Via skillpm
@@ -55,11 +57,33 @@ cp -r skills/rn-store-compliance .windsurf/skills/
55
57
  skills/rn-store-compliance/
56
58
  ├── SKILL.md ← main hub (loaded on trigger)
57
59
  └── references/
58
- ├── apple-guidelines.md ← Apple App Store Review Guidelines (1.x–5.x)
59
- ├── google-play-guidelines.md Google Play Store policies
60
- ├── react-native-patterns.md RN-specific checks, 10 rejection patterns, AI rules
61
- ├── pre-submission-checklist.md both-store + platform-specific checklists
62
- └── handling-rejections.md how to respond to and appeal rejections
60
+ ├── guidelines/
61
+ ├── apple.md Apple App Store Review Guidelines (1.x–5.x)
62
+ │ └── google-play.md Google Play Store policies
63
+ ├── rules/ detection fix → example rejection
64
+ │ ├── metadata.md trademarks, competitors, China, previews
65
+ │ ├── subscriptions.md ← ToS/PP links, misleading pricing, IAP
66
+ │ ├── privacy.md ← unnecessary data, privacy manifest
67
+ │ ├── design.md ← SIWA violations, minimum functionality
68
+ │ ├── entitlements.md ← unused entitlements, background modes
69
+ │ ├── performance.md ← crashes, Hermes, bundle size, ANR
70
+ │ └── permissions.md ← over-requesting, vague rationale, timing
71
+ ├── app-types/ ← compliance by app category
72
+ │ ├── social.md ← social / messaging / community
73
+ │ ├── kids.md ← Kids Category (COPPA, parental gates)
74
+ │ ├── health-fitness.md ← health / fitness / medical
75
+ │ ├── games.md ← games / gambling / loot boxes
76
+ │ ├── ai.md ← AI / generative AI / China DST
77
+ │ ├── crypto-finance.md ← crypto / finance / trading
78
+ │ └── vpn.md ← VPN / networking
79
+ ├── features/ ← compliance by feature
80
+ │ ├── subscriptions.md ← IAP, subscriptions, restore purchases
81
+ │ ├── ugc.md ← user-generated content, moderation
82
+ │ └── macos.md ← macOS / Mac App Store
83
+ ├── all-apps.md ← universal checklist (every app)
84
+ ├── react-native.md ← RN/Expo-specific patterns
85
+ ├── pre-submission.md ← both-store submission checklist
86
+ └── rejections.md ← how to respond to and appeal rejections
63
87
  ```
64
88
 
65
89
  The SKILL.md is a lightweight navigation hub. Claude loads only the reference files relevant to the current task, keeping context efficient.
@@ -72,6 +96,7 @@ The SKILL.md is a lightweight navigation hub. Claude loads only the reference fi
72
96
  - Business (IAP, subscriptions, reader apps)
73
97
  - Design (quality, copycats, minimum functionality, Sign in with Apple)
74
98
  - Legal (privacy, ATT, PrivacyInfo.xcprivacy, nutrition labels)
99
+ - Complete guideline quick-index (50+ guidelines)
75
100
 
76
101
  ### Google Play Store
77
102
  - Content policies (restricted content, deceptive behavior, ads)
@@ -80,6 +105,18 @@ The SKILL.md is a lightweight navigation hub. Claude loads only the reference fi
80
105
  - Closed testing requirements
81
106
  - Account deletion requirements
82
107
 
108
+ ### Rejection Rules
109
+ - 20+ specific rules with grep/code detection patterns
110
+ - React Native-specific detection commands
111
+ - Step-by-step fix instructions
112
+ - Real example rejection messages from Apple and Google
113
+
114
+ ### App-Type Checklists
115
+ - 7 app-type checklists (social, kids, health, games, AI, crypto, VPN)
116
+ - 3 feature checklists (subscriptions, UGC, macOS)
117
+ - Both Apple and Google requirements in each
118
+ - React Native library recommendations
119
+
83
120
  ### React Native Specific
84
121
  - Permission handling (Info.plist / AndroidManifest.xml) with code examples
85
122
  - Payment integration (react-native-iap, RevenueCat)
@@ -103,6 +140,10 @@ Works with any AI coding agent that supports the Agent Skills format:
103
140
 
104
141
  The `docs/` folder contains research notes, official source links, changelog, and improvement backlog. See [docs/README.md](docs/README.md) for the structure.
105
142
 
143
+ ## Related Projects
144
+
145
+ Inspired by [app-store-preflight-skills](https://github.com/truongduy2611/app-store-preflight-skills) by [@truongduy2611](https://github.com/truongduy2611) — an iOS/macOS App Store preflight checker. We expanded to both stores with React Native detection patterns, app-type checklists, and feature-specific compliance guides.
146
+
106
147
  ## Contributing
107
148
 
108
149
  PRs welcome! If you know of a store guideline or rejection pattern we're missing, please open an issue or PR. See [docs/ideas/backlog.md](docs/ideas/backlog.md) for planned improvements.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-store-skills",
3
- "version": "1.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "React Native App Store & Google Play compliance skill for AI coding agents. Checks every code change against Apple and Google store guidelines to prevent rejections.",
5
5
  "keywords": [
6
6
  "agent-skill",
@@ -19,11 +19,11 @@
19
19
  "windsurf",
20
20
  "ai-agent"
21
21
  ],
22
- "author": "johnad <johnad@justzapp.com>",
22
+ "author": "John Adib <Mr.John.Adib@gmail.com> (https://MrAdib.com)",
23
23
  "license": "MIT",
24
24
  "repository": {
25
25
  "type": "git",
26
- "url": "https://github.com/johnad/rn-store-skills"
26
+ "url": "https://github.com/JohnAdib/rn-store-skills"
27
27
  },
28
28
  "homepage": "https://www.npmjs.com/package/rn-store-skills",
29
29
  "files": [
@@ -32,11 +32,7 @@
32
32
  "LICENSE"
33
33
  ],
34
34
  "scripts": {
35
- "publish:npm": "npm publish --access public",
36
- "prepublishOnly": "node scripts/validate.js",
37
- "pack:check": "npm pack --dry-run",
38
- "version:patch": "npm version patch && npm run publish:npm",
39
- "version:minor": "npm version minor && npm run publish:npm",
40
- "version:major": "npm version major && npm run publish:npm"
35
+ "validate": "node scripts/validate.js",
36
+ "prepublishOnly": "node scripts/validate.js"
41
37
  }
42
38
  }
@@ -13,8 +13,8 @@ description: >
13
13
  App Tracking Transparency, IDFA, permissions, app signing, release build, or app bundle.
14
14
  license: MIT
15
15
  metadata:
16
- author: johnad
17
- version: "1.0.0"
16
+ author: JohnAdib
17
+ version: "2.0.0"
18
18
  tags:
19
19
  - react-native
20
20
  - expo
@@ -32,92 +32,97 @@ Apple App Store and Google Play Store guidelines. Your job is to catch issues th
32
32
  rejections **before** they reach app review.
33
33
 
34
34
  About 40% of app submissions get rejected on the first attempt. Most rejections come from
35
- a small set of repeated mistakes wrong permission usage, missing privacy declarations,
36
- broken payment flows, or metadata issues. This skill helps you avoid all of them.
35
+ a small set of repeated mistakes. This skill helps you avoid all of them.
37
36
 
38
37
  ## How to Use This Skill
39
38
 
40
39
  When a developer asks you to add or modify any feature in a React Native app:
41
40
 
42
41
  1. **Build the feature** as requested
43
- 2. **Run the compliance check** against the change — consult the relevant reference files below
44
- 3. **Flag any violations** with the specific guideline reference number and a concrete fix
42
+ 2. **Run the compliance check** — consult the relevant reference files below
43
+ 3. **Flag any violations** with the specific guideline number and a concrete fix
45
44
  4. **Summarize** what passed and what needs attention
46
45
 
47
- If a change touches multiple areas (e.g., adding a subscription screen involves payments,
48
- UI, and privacy), check all relevant reference files.
49
-
50
46
  ## Reference Files
51
47
 
52
- This skill uses progressive loading. Only read the reference files relevant to the current
53
- task — don't load everything at once.
48
+ This skill uses progressive loading. Only read what's relevant don't load everything.
54
49
 
55
- ### Apple App Store Guidelines
50
+ ### Step 1: Always Load
56
51
 
57
- Refer to [references/apple-guidelines.md](references/apple-guidelines.md) for the complete
58
- Apple App Store Review Guidelines covering:
59
- - Safety (1.x)objectionable content, kids, health apps
60
- - Performance (2.x) completeness, metadata, SDK requirements
61
- - Business (3.x) — IAP, subscriptions, reader apps
62
- - Design (4.x) — quality, copycats, minimum functionality, Sign in with Apple
63
- - Legal (5.x) — privacy, ATT, PrivacyInfo.xcprivacy, nutrition labels
52
+ | File | Purpose |
53
+ |------|---------|
54
+ | `references/all-apps.md` | Universal checklist every app, both stores |
55
+ | `references/react-native.md` | RN/Expo-specific patterns and checks |
64
56
 
65
- Read this file when the change involves any iOS-specific feature, Apple services integration,
66
- or when preparing for App Store submission.
57
+ ### Step 2: Load by App Type
67
58
 
68
- ### Google Play Store Guidelines
59
+ Determine the app type and load the matching checklist:
69
60
 
70
- Refer to [references/google-play-guidelines.md](references/google-play-guidelines.md) for
71
- the complete Google Play Store policies covering:
72
- - Content policies restricted content, deceptive behavior, ads
73
- - Technical requirements target SDK, AAB, 64-bit, billing library, foreground services
74
- - Store listing & metadata screenshots, data safety, content rating
75
- - Closed testing requirements
61
+ | App Type | File |
62
+ |----------|------|
63
+ | Social / messaging / community | `references/app-types/social.md` |
64
+ | Kids Category | `references/app-types/kids.md` |
65
+ | Health / fitness / medical | `references/app-types/health-fitness.md` |
66
+ | Games / gambling | `references/app-types/games.md` |
67
+ | AI / generative AI | `references/app-types/ai.md` |
68
+ | Crypto / finance / trading | `references/app-types/crypto-finance.md` |
69
+ | VPN / networking | `references/app-types/vpn.md` |
76
70
 
77
- Read this file when the change involves any Android-specific feature, Google services
78
- integration, or when preparing for Play Store submission.
71
+ ### Step 3: Load by Feature
79
72
 
80
- ### React Native Specific Patterns
73
+ If the app uses these features, load the matching checklist:
81
74
 
82
- Refer to [references/react-native-patterns.md](references/react-native-patterns.md) for
83
- RN-specific compliance issues covering:
84
- - Apple-specific RN checks (Info.plist, ATS, Sign in with Apple, background modes)
85
- - Google-specific RN checks (AndroidManifest, ProGuard, signing, crash rates)
86
- - 10 most common React Native rejection patterns
87
- - AI/generative AI feature rules for both stores
88
- - Age rating requirements
75
+ | Feature | File |
76
+ |---------|------|
77
+ | Subscriptions / IAP / loot boxes | `references/features/subscriptions.md` |
78
+ | User-generated content | `references/features/ugc.md` |
79
+ | macOS / Mac App Store | `references/features/macos.md` |
89
80
 
90
- Read this file for every change it contains the patterns most likely to cause rejection
91
- in React Native apps specifically.
81
+ ### Step 4: Load Rules for Specific Issues
92
82
 
93
- ### Pre-Submission Checklist
83
+ When you need detection patterns, fix steps, and example rejection messages:
94
84
 
95
- Refer to [references/pre-submission-checklist.md](references/pre-submission-checklist.md)
96
- for the complete pre-submission verification checklist. This covers both-store checks,
97
- Apple-specific checks, and Google Play-specific checks.
85
+ | Category | File |
86
+ |----------|------|
87
+ | Metadata violations | `references/rules/metadata.md` |
88
+ | Subscription/payment issues | `references/rules/subscriptions.md` |
89
+ | Privacy violations | `references/rules/privacy.md` |
90
+ | Design rejections | `references/rules/design.md` |
91
+ | Entitlement/capability issues | `references/rules/entitlements.md` |
92
+ | Crashes / performance | `references/rules/performance.md` |
93
+ | Permission problems | `references/rules/permissions.md` |
98
94
 
99
- Read this file when the developer is preparing a release build or submitting to either store.
95
+ ### Step 5: Submission & Rejection
100
96
 
101
- ### Handling Rejections
97
+ | Task | File |
98
+ |------|------|
99
+ | Pre-submission verification | `references/pre-submission.md` |
100
+ | Got a rejection / need to appeal | `references/rejections.md` |
102
101
 
103
- Refer to [references/handling-rejections.md](references/handling-rejections.md) for guidance
104
- on responding to App Store and Play Store rejections, including appeal processes.
102
+ ### Full Store Guidelines
105
103
 
106
- Read this file when a developer reports a rejection or asks how to respond to one.
104
+ | Store | File |
105
+ |-------|------|
106
+ | Apple App Store Review Guidelines | `references/guidelines/apple.md` |
107
+ | Google Play Store Policies | `references/guidelines/google-play.md` |
107
108
 
108
109
  ## Quick Decision Guide
109
110
 
110
- Use this to decide which reference files to read for common tasks:
111
-
112
111
  | Task | Files to Read |
113
112
  |------|--------------|
114
- | Adding a new feature | `react-native-patterns.md` + relevant store guide |
115
- | Implementing payments/subscriptions | `apple-guidelines.md` (section 3) + `google-play-guidelines.md` (billing) |
116
- | Adding permissions (camera, location, etc.) | `react-native-patterns.md` (permissions section) |
117
- | Adding push notifications | `react-native-patterns.md` + both store guides |
118
- | Adding user-generated content | `apple-guidelines.md` (section 1.1) + `google-play-guidelines.md` (content) |
119
- | Privacy/data collection changes | `apple-guidelines.md` (section 5.1) + `google-play-guidelines.md` (privacy) |
120
- | Preparing for submission | `pre-submission-checklist.md` |
121
- | Got a rejection | `handling-rejections.md` |
122
- | Adding AI features | `react-native-patterns.md` (AI section) |
123
- | Upgrading React Native version | `react-native-patterns.md` (all sections) |
113
+ | Adding a new feature | `all-apps.md` + `react-native.md` + relevant app-type |
114
+ | Implementing payments/subscriptions | `features/subscriptions.md` + `rules/subscriptions.md` |
115
+ | Adding permissions (camera, location, etc.) | `rules/permissions.md` + `react-native.md` |
116
+ | Adding push notifications | `react-native.md` (push section) |
117
+ | Adding user-generated content | `features/ugc.md` + `app-types/social.md` |
118
+ | Privacy/data collection changes | `rules/privacy.md` + `guidelines/apple.md` (5.x) |
119
+ | Preparing for submission | `pre-submission.md` + `all-apps.md` |
120
+ | Got a rejection | `rejections.md` + matching `rules/*.md` |
121
+ | Adding AI features | `app-types/ai.md` + `rules/metadata.md` (China) |
122
+ | Building a kids app | `app-types/kids.md` |
123
+ | Building a health/medical app | `app-types/health-fitness.md` |
124
+ | Building a game | `app-types/games.md` + `features/subscriptions.md` |
125
+ | Crypto/finance app | `app-types/crypto-finance.md` |
126
+ | VPN app | `app-types/vpn.md` |
127
+ | macOS app | `features/macos.md` + `rules/entitlements.md` |
128
+ | Upgrading React Native | `react-native.md` + `rules/performance.md` |
@@ -0,0 +1,90 @@
1
+ # Universal Checklist — Every App, Both Stores
2
+
3
+ Master checklist loaded for every app regardless of type or category.
4
+
5
+ ---
6
+
7
+ ## Pre-Submission Essentials
8
+
9
+ - [ ] App is final, complete, and tested on real devices
10
+ - [ ] No placeholder/Lorem ipsum content anywhere
11
+ - [ ] No beta/test/preview/demo labels in UI
12
+ - [ ] Backend services live during review
13
+ - [ ] Demo account provided if login required (pre-populated with data)
14
+ - [ ] IAP items findable and functional
15
+ - [ ] Review notes describe non-obvious features
16
+
17
+ ## Metadata
18
+
19
+ - [ ] App name ≤ 30 chars, no trademark stuffing
20
+ - [ ] No pricing info or other app names in metadata
21
+ - [ ] No competitor platform names (no "Android" on Apple, no "iOS" on Google)
22
+ - [ ] Screenshots show actual app in use (current build)
23
+ - [ ] Category accurately reflects primary function
24
+ - [ ] What's New describes actual changes
25
+ - [ ] No unverifiable superlative claims ("best", "#1")
26
+
27
+ ## Privacy & Data
28
+
29
+ - [ ] Privacy policy linked in store listing AND accessible in-app
30
+ - [ ] Privacy policy accurately describes ALL data collection (including SDKs)
31
+ - [ ] Consent obtained before collecting personal data
32
+ - [ ] Only request data relevant to core functionality
33
+ - [ ] Account deletion available if account creation offered
34
+ - [ ] Third-party SDK data collection declared
35
+
36
+ ## Apple-Specific
37
+
38
+ - [ ] Sign in with Apple if any third-party login offered
39
+ - [ ] Don't re-ask name/email after SIWA
40
+ - [ ] App Tracking Transparency prompt if tracking users
41
+ - [ ] PrivacyInfo.xcprivacy present with Required Reason API declarations
42
+ - [ ] Privacy Nutrition Labels accurate in App Store Connect
43
+ - [ ] Uses iOS 26 SDK or later (as of April 2026)
44
+ - [ ] App preview videos: screen captures only (no device frames)
45
+ - [ ] No Apple device images in app icon
46
+ - [ ] Info.plist permission descriptions are specific
47
+
48
+ ## Google-Specific
49
+
50
+ - [ ] Targets Android 15 (API 35) or later
51
+ - [ ] Published as AAB (not APK)
52
+ - [ ] Data Safety section matches privacy policy
53
+ - [ ] Closed testing completed (12+ testers, 14 days) for new apps
54
+ - [ ] POST_NOTIFICATIONS runtime permission handled (Android 13+)
55
+ - [ ] 16 KB page size compatibility for native libraries
56
+
57
+ ## Design & UX
58
+
59
+ - [ ] Not a copycat of another app
60
+ - [ ] Provides meaningful functionality beyond a website
61
+ - [ ] No pixelated or stretched images
62
+ - [ ] Handles dark mode without breaking
63
+ - [ ] Text readable with sufficient contrast
64
+
65
+ ## Business
66
+
67
+ - [ ] Digital content uses platform IAP
68
+ - [ ] Not forcing ratings/reviews
69
+ - [ ] Support URL with working contact method
70
+ - [ ] Developer identity accurate and verifiable
71
+
72
+ ## Build Verification
73
+
74
+ - [ ] Release build tested on real device (not simulator)
75
+ - [ ] All deep links tested from cold start, background, and external apps
76
+ - [ ] Offline behavior: shows clear state, doesn't crash
77
+ - [ ] Memory usage acceptable on low-end devices
78
+ - [ ] App size under 200MB
79
+ - [ ] Certificate/signing valid and not expired
80
+ - [ ] Version number incremented above current live version
81
+
82
+ ## Related Rules
83
+
84
+ - See `rules/metadata.md` for metadata rejection patterns
85
+ - See `rules/privacy.md` for privacy rejection patterns
86
+ - See `rules/design.md` for design rejection patterns
87
+ - See `rules/performance.md` for crash/performance patterns
88
+ - See `rules/permissions.md` for permission patterns
89
+ - See `rules/subscriptions.md` if app has subscriptions/IAP
90
+ - See `rules/entitlements.md` for entitlement/capability issues
@@ -0,0 +1,40 @@
1
+ # AI / Generative AI Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] China distribution: remove all references to ChatGPT, OpenAI, GPT, Gemini, Claude, Anthropic, Midjourney, DALL-E (DST Guideline 5)
6
+ - [ ] China distribution: suppress AI functionality entirely or obtain MIIT generative AI license (DST Guideline 5)
7
+ - [ ] No false or misleading claims about AI capabilities (Guideline 1.4)
8
+ - [ ] Medical AI features must include disclaimers that AI is not a substitute for professional advice (Guideline 1.4.1)
9
+ - [ ] All AI features documented in App Review notes — explain what the AI does and how (Review Submission)
10
+ - [ ] Do not use AI brand names (GPT, ChatGPT, Gemini, etc.) in your app name unless you are the brand owner (Guideline 2.3.7)
11
+ - [ ] Content moderation required for all AI-generated output — filter harmful/illegal content (Guideline 1.2)
12
+ - [ ] Disclose AI data processing in privacy policy — what inputs are processed, where, and by whom (Guideline 5.1.1)
13
+ - [ ] Obtain user consent before processing user inputs through AI services (Guideline 5.1.1)
14
+ - [ ] AI features, credits, and token packs sold via IAP (Guideline 3.1.1)
15
+
16
+ ## Google Play
17
+
18
+ - [ ] AI-generated content must not violate content policies — same rules as human-created content (Content Policy)
19
+ - [ ] Realistic AI images/video/audio of real people require provenance signals: watermarks or metadata (AI Content Policy)
20
+ - [ ] Disclose AI usage prominently in store description if AI is a core feature (Store Listing Policy)
21
+ - [ ] AI decisions affecting users may trigger regulatory requirements (transparency, appeal rights) (AI Policy)
22
+ - [ ] No AI for deceptive content — deepfakes for fraud, impersonation, or misinformation prohibited (Deceptive Behavior Policy)
23
+
24
+ ## React Native Notes
25
+
26
+ - API key security: NEVER embed AI service keys in the JS bundle — they are trivially extractable via `react-native-decompiler` or Hermes bytecode inspection
27
+ - Pattern: proxy all AI calls through your backend; backend holds the API key
28
+ - `react-native-dotenv` does NOT protect keys — env vars are baked into the bundle at build time
29
+ - Content moderation wrapper: run AI responses through a moderation endpoint (OpenAI Moderation API, Perspective API) before displaying to user
30
+ - Consent modal: present before first AI interaction — explain what data is sent, to which service, and retention policy
31
+ - For China builds: use build flavors or runtime config to disable AI features — `Platform.constants` or a feature flag service
32
+ - IAP for AI credits: use consumable IAP via `react-native-iap` — track credit balance server-side, not client-side
33
+ - Expo Config Plugins can conditionally include/exclude AI-related native modules per build variant
34
+
35
+ ## Related Rules
36
+
37
+ - [rules/api-key-security.md](../rules/api-key-security.md)
38
+ - [rules/in-app-purchases.md](../rules/in-app-purchases.md)
39
+ - [rules/privacy-policy.md](../rules/privacy-policy.md)
40
+ - [rules/china-distribution.md](../rules/china-distribution.md)
@@ -0,0 +1,42 @@
1
+ # Crypto / Finance / Trading Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] Organization enrollment required — individual developer accounts will be rejected (Guideline 3.1.3)
6
+ - [ ] No on-device crypto mining — cloud mining display only is permitted (Guideline 3.1.5(b))
7
+ - [ ] Crypto exchanges must hold valid licenses in every jurisdiction served (Guideline 3.1.5(a))
8
+ - [ ] ICOs, futures, and securities trading: from established financial institutions only (Guideline 3.1.5(a))
9
+ - [ ] No offering cryptocurrency as reward for completing tasks (Guideline 3.1.5(b))
10
+ - [ ] No binary options trading apps (Guideline 3.2)
11
+ - [ ] CFD and FOREX apps must be properly licensed in served jurisdictions (Guideline 3.2)
12
+ - [ ] Loan apps: APR must not exceed 36%, repayment period > 60 days, terms clearly disclosed (Guideline 3.2)
13
+ - [ ] Banking and financial services: legal entity enrollment required (Guideline 3.2)
14
+ - [ ] NFTs purchased via IAP if they unlock content/features; external purchase links not permitted (except US) (Guideline 3.1.1)
15
+ - [ ] NFT browsing/viewing permitted without IAP, but no external purchase buttons (except US) (Guideline 3.1.1)
16
+
17
+ ## Google Play
18
+
19
+ - [ ] Financial services apps must comply with local regulations in every jurisdiction served (Financial Services Policy)
20
+ - [ ] Crypto apps require proper licenses and registrations (Financial Services Policy)
21
+ - [ ] No deceptive financial claims — no guaranteed returns or misleading profit projections (Financial Services Policy)
22
+ - [ ] Loan apps: APR must be disclosed upfront, no predatory terms or hidden fees (Personal Loans Policy)
23
+ - [ ] Trading apps: risk disclaimers required and visible before first trade (Financial Services Policy)
24
+ - [ ] Content rating must reflect financial complexity and risk exposure (Content Rating Policy)
25
+
26
+ ## React Native Notes
27
+
28
+ - Organization account ($99/yr Apple, $25 Google) required before development begins — cannot switch from individual to org mid-review
29
+ - Apple organization enrollment requires D-U-N-S number — apply early, takes 5-30 business days
30
+ - Financial data security: use `react-native-encrypted-storage` for sensitive data, never `AsyncStorage`
31
+ - SSL pinning: implement via `react-native-ssl-pinning` or `TrustKit` native module — financial apps are high-value targets for MITM
32
+ - Jailbreak/root detection: `react-native-jail-monkey` or `freeRASP` — financial apps should warn or restrict on compromised devices
33
+ - Biometric auth: `react-native-biometrics` or `expo-local-authentication` for transaction confirmation
34
+ - For NFT display: render metadata and images only — do not embed wallet connection or purchase flows in iOS builds (except US)
35
+ - WebView restrictions: Apple rejects financial apps that are just WebView wrappers around a web trading platform
36
+
37
+ ## Related Rules
38
+
39
+ - [rules/organization-account.md](../rules/organization-account.md)
40
+ - [rules/in-app-purchases.md](../rules/in-app-purchases.md)
41
+ - [rules/data-encryption.md](../rules/data-encryption.md)
42
+ - [rules/financial-services.md](../rules/financial-services.md)
@@ -0,0 +1,38 @@
1
+ # Games / Gambling Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] All in-game currency, items, and content purchased via IAP — no external payment links (Guideline 3.1.1)
6
+ - [ ] Loot boxes and gacha mechanics must disclose odds before purchase (Guideline 3.1.1)
7
+ - [ ] IAP currencies must not expire (Guideline 3.1.1)
8
+ - [ ] Restore Purchases mechanism required for non-consumable IAP and subscriptions (Guideline 3.1.1)
9
+ - [ ] Game enemies must not target a specific race, culture, government, or real entity (Guideline 5.3)
10
+ - [ ] Gambling and betting apps must hold valid licenses in every jurisdiction served (Guideline 5.3.3)
11
+ - [ ] Lottery apps permitted only from the lottery organization itself (Guideline 5.3.3)
12
+ - [ ] Age rating must honestly reflect violence, language, and mature content (Guideline 5.3)
13
+
14
+ ## Google Play
15
+
16
+ - [ ] Real-money gambling requires valid gambling license per jurisdiction (Real-Money Gambling Policy)
17
+ - [ ] Geo-restrictions enforced — block users in unlicensed jurisdictions (Real-Money Gambling Policy)
18
+ - [ ] Loot box odds must be disclosed before purchase (Monetization Policy)
19
+ - [ ] Contests and sweepstakes require published official rules (Contests Policy)
20
+ - [ ] No content encouraging dangerous bets or challenges (Gambling Policy)
21
+ - [ ] Game ads must be appropriate for the declared content rating (Ad Policy)
22
+
23
+ ## React Native Notes
24
+
25
+ - `react-native-iap` (v12+) for cross-platform IAP — handles consumables, non-consumables, and subscriptions
26
+ - `expo-in-app-purchases` deprecated — use `react-native-iap` or `react-native-purchases` (RevenueCat) instead
27
+ - Loot box odds UI: render odds table in a modal before the purchase button becomes active — Apple reviewers verify this flow
28
+ - Restore Purchases: must be a visible button (not buried in settings) — common rejection reason
29
+ - For gacha/loot mechanics: log all odds server-side for audit compliance
30
+ - `react-native-purchases` (RevenueCat) simplifies receipt validation, entitlement management, and cross-platform subscription state
31
+ - Gambling apps: cannot use Expo Go or development builds in production — Apple requires native binary review
32
+ - Age gating: implement at app launch for gambling apps — cannot rely on store age restrictions alone
33
+
34
+ ## Related Rules
35
+
36
+ - [rules/in-app-purchases.md](../rules/in-app-purchases.md)
37
+ - [rules/subscriptions.md](../rules/subscriptions.md)
38
+ - [rules/age-rating.md](../rules/age-rating.md)
@@ -0,0 +1,39 @@
1
+ # Health / Fitness / Medical Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] Medical apps must disclose data sources and methodology for accuracy claims (Guideline 1.4.1)
6
+ - [ ] Cannot claim sensor-only diagnostics — no x-ray, blood pressure, glucose, or SpO2 from phone sensors alone (Guideline 1.4.1)
7
+ - [ ] Include reminders for users to consult a doctor — do not replace professional medical advice (Guideline 1.4.1)
8
+ - [ ] Drug dosage databases sourced only from approved entities (FDA, EMA, etc.) (Guideline 1.4.1)
9
+ - [ ] HealthKit data must not be used for advertising, marketing, or data mining (Guideline 5.1.3)
10
+ - [ ] Must not write false or fabricated data to HealthKit (Guideline 5.1.3)
11
+ - [ ] Must not store personal health data in iCloud — use on-device or encrypted server storage (Guideline 5.1.3)
12
+ - [ ] Health research apps require informed consent and ethics board (IRB) approval (Guideline 5.1.3)
13
+ - [ ] Must be a legal entity (not individual developer) for regulated medical fields (Guideline 1.4.1)
14
+
15
+ ## Google Play
16
+
17
+ - [ ] Health claims must be evidence-based with citations (Health Policy)
18
+ - [ ] Medical apps require proper disclaimers visible before use (Health Policy)
19
+ - [ ] Health Connect integration follows data sharing rules — request only necessary data types (Health Connect Policy)
20
+ - [ ] No selling health data to third parties (Health Policy)
21
+ - [ ] Health data must be encrypted in transit and at rest (Health Policy)
22
+ - [ ] Content rating reflects health-related content accurately (Content Rating Policy)
23
+
24
+ ## React Native Notes
25
+
26
+ - `react-native-health` for HealthKit (iOS) — request only the data types you actually need; over-requesting triggers review flags
27
+ - `react-native-health-connect` for Health Connect (Android) — requires declaring permissions in `AndroidManifest.xml`
28
+ - `expo-health` (Expo SDK 50+) for cross-platform HealthKit/Health Connect access
29
+ - HealthKit entitlement must be added in Xcode — cannot be configured purely through RN config
30
+ - Health data storage: never persist raw health data in AsyncStorage or MMKV — use encrypted storage (`react-native-encrypted-storage`)
31
+ - For research apps: implement consent flow with `react-native-informed-consent` pattern — capture signature, date, version
32
+ - Apple requires HealthKit usage description strings even if you only read (not write) data
33
+ - Organization account required for medical apps on both stores
34
+
35
+ ## Related Rules
36
+
37
+ - [rules/healthkit.md](../rules/healthkit.md)
38
+ - [rules/privacy-policy.md](../rules/privacy-policy.md)
39
+ - [rules/data-encryption.md](../rules/data-encryption.md)
@@ -0,0 +1,40 @@
1
+ # Kids Category Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] No external links without parental gate (Guideline 1.3)
6
+ - [ ] No purchasing opportunities without parental gate (Guideline 1.3)
7
+ - [ ] No third-party advertising of any kind (Guideline 1.3)
8
+ - [ ] No third-party analytics except those that do not collect IDFA, PII, or location (Guideline 1.3)
9
+ - [ ] COPPA and GDPR-K compliance verified (Guideline 5.1.4)
10
+ - [ ] No sending PII or device info to third parties (Guideline 5.1.4)
11
+ - [ ] Privacy policy (COPPA/GDPR compliant) accessible in-app and on App Store listing (Guideline 5.1.4)
12
+ - [ ] "For Kids" / "For Children" metadata reserved — only use if enrolled in Kids Category (Guideline 1.3)
13
+ - [ ] No ads in app extensions, widgets, iMessage apps, keyboards, or watchOS components (Guideline 1.3)
14
+
15
+ ## Google Play
16
+
17
+ - [ ] Enrolled in Designed for Families program (Families Policy)
18
+ - [ ] Ads served only through Google Play certified ad networks (Families Policy)
19
+ - [ ] No personalized or interest-based advertising to children (Families Policy)
20
+ - [ ] No social features without parental controls (Families Policy)
21
+ - [ ] No behavioral tracking of children (Families Policy)
22
+ - [ ] Login not required unless it provides clear value to the child (Families Policy)
23
+ - [ ] All content appropriate for the declared age range (Families Policy)
24
+ - [ ] Target age group declared accurately in store listing (Families Policy)
25
+
26
+ ## React Native Notes
27
+
28
+ - Parental gate implementation: use a math problem or multi-step gesture — Apple rejects simple "Are you over 13?" confirmations
29
+ - COPPA-compliant analytics alternatives: Firebase with analytics collection disabled for kids sessions, or self-hosted analytics with no PII
30
+ - Remove or gate all `Linking.openURL()` calls behind parental verification
31
+ - Strip all ad SDKs from kids builds — even dormant SDK code triggers rejection
32
+ - `react-native-age-gate` pattern: render different component trees based on verified age context
33
+ - Expo: disable `expo-tracking-transparency` entirely for kids apps — the prompt itself implies tracking
34
+ - Test with a clean device — reviewers check for any network calls to ad/analytics endpoints
35
+
36
+ ## Related Rules
37
+
38
+ - [rules/kids-category.md](../rules/kids-category.md)
39
+ - [rules/privacy-policy.md](../rules/privacy-policy.md)
40
+ - [rules/coppa-gdpr.md](../rules/coppa-gdpr.md)
@@ -0,0 +1,41 @@
1
+ # Social / Messaging / Community Compliance
2
+
3
+ ## Apple
4
+
5
+ - [ ] Content moderation system to filter objectionable material (Guideline 1.2)
6
+ - [ ] Report mechanism accessible from within content with timely responses (Guideline 1.2)
7
+ - [ ] Block abusive users functionality (Guideline 1.2)
8
+ - [ ] Published support contact visible in-app (Guideline 1.2)
9
+ - [ ] Sign in with Apple required if any third-party login offered (Guideline 4.8)
10
+ - [ ] Do not re-ask name/email after SIWA — use provided identity token (Guideline 4.8)
11
+ - [ ] Account deletion offered if account creation exists (Guideline 5.1.1)
12
+ - [ ] Allow access without social login if social is not core feature (Guideline 5.1.1)
13
+ - [ ] Privacy policy accessible in-app and on App Store listing (Guideline 5.1.1)
14
+
15
+ ## Google Play
16
+
17
+ - [ ] Content moderation system with both automated and human review (UGC Policy)
18
+ - [ ] User reporting accessible from within the content itself (UGC Policy)
19
+ - [ ] Terms of service explicitly prohibiting objectionable content (UGC Policy)
20
+ - [ ] Block and mute users functionality (UGC Policy)
21
+ - [ ] DMCA/takedown process documented and operational (UGC Policy)
22
+ - [ ] Remove illegal content within 24 hours of report (UGC Policy)
23
+ - [ ] Account deletion available in-app (Data Deletion Policy)
24
+ - [ ] Data Safety section accurate and complete (Data Safety Policy)
25
+
26
+ ## React Native Notes
27
+
28
+ - `expo-apple-authentication` for SIWA — handles identity token, name, email scoping
29
+ - `react-native-apple-authentication` as alternative for bare workflow
30
+ - Content moderation: integrate server-side (Perspective API, OpenAI moderation, AWS Rekognition) — never do client-only filtering
31
+ - Report UI pattern: contextual menu on content items (long-press or three-dot menu) leading to report flow
32
+ - Block/mute: maintain server-side block list, filter in API responses — do not rely on client-side filtering alone
33
+ - Account deletion must actually delete data server-side, not just disable the account
34
+ - `@invertase/react-native-apple-authentication` supports credential revocation listening
35
+
36
+ ## Related Rules
37
+
38
+ - [rules/sign-in-with-apple.md](../rules/sign-in-with-apple.md)
39
+ - [rules/account-deletion.md](../rules/account-deletion.md)
40
+ - [rules/privacy-policy.md](../rules/privacy-policy.md)
41
+ - [rules/user-generated-content.md](../rules/user-generated-content.md)