rn-store-skills 1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MrAdib
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,112 @@
1
+ # rn-store-skills
2
+
3
+ React Native App Store & Google Play compliance skill for AI coding agents.
4
+
5
+ Catches store rejection issues **before** you submit — in every chat where you write or modify React Native code.
6
+
7
+ ## What it does
8
+
9
+ Every time you add a feature, fix a bug, or change configuration in a React Native / Expo app, this skill automatically checks your changes against:
10
+
11
+ - **Apple App Store Review Guidelines** — privacy, payments, permissions, design, metadata, and more
12
+ - **Google Play Store Policies** — target SDK, billing, data safety, content policies, and more
13
+ - **Common React Native rejection patterns** — Expo Go submissions, missing JS bundles, Hermes crashes, WebView-heavy apps, permission overuse
14
+
15
+ About 40% of app submissions get rejected on the first try. This skill helps you avoid that.
16
+
17
+ ## Install
18
+
19
+ ### Via skills CLI (recommended)
20
+
21
+ ```bash
22
+ npx skills add johnad/rn-store-skills
23
+ ```
24
+
25
+ ### Via skillpm
26
+
27
+ ```bash
28
+ npx skillpm add rn-store-skills
29
+ ```
30
+
31
+ ### Manual (Claude web / claude.ai)
32
+
33
+ 1. Download or zip the `skills/rn-store-compliance/` folder
34
+ 2. Go to [claude.ai/customize/skills](https://claude.ai/customize/skills)
35
+ 3. Upload the zip — it contains one SKILL.md + reference files that Claude loads on-demand
36
+
37
+ ### Manual (any agent)
38
+
39
+ Copy `skills/rn-store-compliance/` into your project's skills directory:
40
+
41
+ ```bash
42
+ # Claude Code
43
+ cp -r skills/rn-store-compliance .claude/skills/
44
+
45
+ # Cursor
46
+ cp -r skills/rn-store-compliance .cursor/skills/
47
+
48
+ # Windsurf
49
+ cp -r skills/rn-store-compliance .windsurf/skills/
50
+ ```
51
+
52
+ ## Skill Structure
53
+
54
+ ```
55
+ skills/rn-store-compliance/
56
+ ├── SKILL.md ← main hub (loaded on trigger)
57
+ └── 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
63
+ ```
64
+
65
+ The SKILL.md is a lightweight navigation hub. Claude loads only the reference files relevant to the current task, keeping context efficient.
66
+
67
+ ## Coverage
68
+
69
+ ### Apple App Store
70
+ - Safety (objectionable content, kids, health apps)
71
+ - Performance (completeness, metadata accuracy, SDK requirements)
72
+ - Business (IAP, subscriptions, reader apps)
73
+ - Design (quality, copycats, minimum functionality, Sign in with Apple)
74
+ - Legal (privacy, ATT, PrivacyInfo.xcprivacy, nutrition labels)
75
+
76
+ ### Google Play Store
77
+ - Content policies (restricted content, deceptive behavior, ads)
78
+ - Technical requirements (target SDK, AAB, 64-bit, billing library, foreground services)
79
+ - Store listing (screenshots, data safety, content rating)
80
+ - Closed testing requirements
81
+ - Account deletion requirements
82
+
83
+ ### React Native Specific
84
+ - Permission handling (Info.plist / AndroidManifest.xml) with code examples
85
+ - Payment integration (react-native-iap, RevenueCat)
86
+ - Build configuration (ProGuard, Hermes, signing, EAS Build)
87
+ - 10 most common RN rejection patterns with fixes
88
+ - AI/generative AI feature rules for both stores
89
+ - Age rating requirements
90
+
91
+ ## Compatibility
92
+
93
+ Works with any AI coding agent that supports the Agent Skills format:
94
+
95
+ - Claude Code / Claude.ai
96
+ - Cursor
97
+ - Windsurf
98
+ - Cline
99
+ - GitHub Copilot (via skills)
100
+ - Any agent supporting skills directories
101
+
102
+ ## Research & Docs
103
+
104
+ The `docs/` folder contains research notes, official source links, changelog, and improvement backlog. See [docs/README.md](docs/README.md) for the structure.
105
+
106
+ ## Contributing
107
+
108
+ 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.
109
+
110
+ ## License
111
+
112
+ MIT
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "rn-store-skills",
3
+ "version": "1.0.0",
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
+ "keywords": [
6
+ "agent-skill",
7
+ "react-native",
8
+ "expo",
9
+ "app-store",
10
+ "google-play",
11
+ "compliance",
12
+ "mobile",
13
+ "ios",
14
+ "android",
15
+ "store-guidelines",
16
+ "app-review",
17
+ "claude",
18
+ "cursor",
19
+ "windsurf",
20
+ "ai-agent"
21
+ ],
22
+ "author": "johnad <johnad@justzapp.com>",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/johnad/rn-store-skills"
27
+ },
28
+ "homepage": "https://www.npmjs.com/package/rn-store-skills",
29
+ "files": [
30
+ "skills",
31
+ "README.md",
32
+ "LICENSE"
33
+ ],
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"
41
+ }
42
+ }
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: rn-store-compliance
3
+ description: >
4
+ React Native app store compliance checker for Apple App Store and Google Play Store.
5
+ Use this skill whenever someone is building, modifying, or reviewing a React Native (or Expo)
6
+ app that will be published to the Apple App Store or Google Play Store. This includes adding
7
+ features, fixing bugs, implementing payments, handling permissions, adding push notifications,
8
+ integrating ads, setting up analytics, handling user data, creating onboarding flows, or any
9
+ code change — even small ones. The skill ensures every change is verified against current
10
+ Apple and Google store guidelines before shipping, preventing rejections. Trigger on any
11
+ mention of: React Native, Expo, iOS, Android, App Store, Google Play, mobile app, TestFlight,
12
+ app review, app submission, store rejection, in-app purchase, push notification, privacy policy,
13
+ App Tracking Transparency, IDFA, permissions, app signing, release build, or app bundle.
14
+ license: MIT
15
+ metadata:
16
+ author: johnad
17
+ version: "1.0.0"
18
+ tags:
19
+ - react-native
20
+ - expo
21
+ - app-store
22
+ - google-play
23
+ - compliance
24
+ - mobile
25
+ ---
26
+
27
+ # React Native Store Compliance Skill
28
+
29
+ You are a React Native store compliance advisor. Every code change, feature addition, or
30
+ configuration update in a React Native / Expo project should be checked against both
31
+ Apple App Store and Google Play Store guidelines. Your job is to catch issues that cause
32
+ rejections **before** they reach app review.
33
+
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.
37
+
38
+ ## How to Use This Skill
39
+
40
+ When a developer asks you to add or modify any feature in a React Native app:
41
+
42
+ 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
45
+ 4. **Summarize** what passed and what needs attention
46
+
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
+ ## Reference Files
51
+
52
+ This skill uses progressive loading. Only read the reference files relevant to the current
53
+ task — don't load everything at once.
54
+
55
+ ### Apple App Store Guidelines
56
+
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
64
+
65
+ Read this file when the change involves any iOS-specific feature, Apple services integration,
66
+ or when preparing for App Store submission.
67
+
68
+ ### Google Play Store Guidelines
69
+
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
76
+
77
+ Read this file when the change involves any Android-specific feature, Google services
78
+ integration, or when preparing for Play Store submission.
79
+
80
+ ### React Native Specific Patterns
81
+
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
89
+
90
+ Read this file for every change — it contains the patterns most likely to cause rejection
91
+ in React Native apps specifically.
92
+
93
+ ### Pre-Submission Checklist
94
+
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.
98
+
99
+ Read this file when the developer is preparing a release build or submitting to either store.
100
+
101
+ ### Handling Rejections
102
+
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.
105
+
106
+ Read this file when a developer reports a rejection or asks how to respond to one.
107
+
108
+ ## Quick Decision Guide
109
+
110
+ Use this to decide which reference files to read for common tasks:
111
+
112
+ | Task | Files to Read |
113
+ |------|--------------|
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) |
@@ -0,0 +1,306 @@
1
+ # Apple App Store Review Guidelines
2
+
3
+ Complete reference for Apple App Store Review Guidelines relevant to React Native apps.
4
+ Guideline numbers match Apple's official numbering at https://developer.apple.com/app-store/review/guidelines/
5
+
6
+ ---
7
+
8
+ ## 1. Safety (Guidelines 1.x)
9
+
10
+ ### 1.1 Objectionable Content
11
+
12
+ Apps with user-generated content (UGC) must include all three:
13
+ - Content filtering or moderation (automated or manual)
14
+ - A reporting mechanism for offensive content
15
+ - The ability to block abusive users
16
+
17
+ If the app has any social features — comments, profiles, chat, photo/video sharing, forums —
18
+ all three are required. Missing even one will cause rejection.
19
+
20
+ Apps must not include content that is offensive, insensitive, upsetting, intended to disgust,
21
+ in exceptionally poor taste, or simply creepy. This includes content targeting specific
22
+ nationalities, ethnicities, or other groups.
23
+
24
+ ### 1.2 User Safety
25
+
26
+ Apps must not encourage dangerous behavior. Specifically:
27
+ - Health/fitness apps must include disclaimers that they are not a substitute for medical advice
28
+ - Apps that encourage excessive consumption of alcohol, drug use, or risky physical activities
29
+ will be rejected
30
+ - Emergency service apps must include real emergency contact information
31
+
32
+ ### 1.3 Kids Category
33
+
34
+ If targeting children under 13:
35
+ - No third-party analytics or advertising SDKs that aren't certified for children
36
+ - Must comply with COPPA (Children's Online Privacy Protection Act)
37
+ - No links out of the app without a parental gate
38
+ - No login requirement unless it provides clear value to the child
39
+ - No behavioral advertising
40
+ - Data collection must be minimal and clearly disclosed to parents
41
+ - Must not include links to external websites, social media, or purchasing opportunities
42
+ without age verification
43
+
44
+ ### 1.4 Physical Harm
45
+
46
+ - Medical apps must clearly disclaim they are not FDA-approved (unless they actually are)
47
+ - Don't provide dosage calculators without proper disclaimers
48
+ - Apps that could present a physical safety risk (e.g., using the phone while driving) must
49
+ include appropriate warnings
50
+ - SOS/emergency features must connect to actual emergency services
51
+
52
+ ### 1.5 Developer Information
53
+
54
+ - The developer name and contact info must be accurate and visible in the app and on the
55
+ store listing
56
+ - A valid support URL is required
57
+ - Apps must have a working contact mechanism (email, support form, etc.)
58
+
59
+ ---
60
+
61
+ ## 2. Performance (Guidelines 2.x)
62
+
63
+ ### 2.1 App Completeness
64
+
65
+ The app must be a finished product:
66
+ - No placeholder content ("Lorem ipsum", stock images used as real content)
67
+ - No broken links or buttons that do nothing
68
+ - No "coming soon" sections or empty features
69
+ - TestFlight/beta labels must be removed from all UI text and assets
70
+ - The app must not crash on launch or during any core user flows
71
+ - All features shown in screenshots must be functional
72
+ - Demo/test accounts must be provided to App Review if login is required
73
+
74
+ ### 2.2 Beta Testing
75
+
76
+ - Don't reference "beta", "test", "preview", or "demo" in the App Store version
77
+ - Don't include TestFlight-specific UI or references
78
+ - The App Store version must be the final, production-ready build
79
+
80
+ ### 2.3 Accurate Metadata
81
+
82
+ - Screenshots must reflect the actual app experience on the device size shown
83
+ - Don't show features that don't exist in the current version
84
+ - The app description must match actual functionality — no aspirational language
85
+ - Don't include competitor names or irrelevant keywords in metadata
86
+ - App name must not include generic terms like "best" or pricing info
87
+ - Category selection must accurately reflect the app's primary function
88
+ - What's New text should describe actual changes in this version
89
+
90
+ ### 2.4 Hardware Compatibility
91
+
92
+ - If the app requires specific hardware (camera, GPS, ARKit, NFC), handle gracefully when
93
+ hardware is unavailable — show a clear message, don't crash
94
+ - Use `UIRequiredDeviceCapabilities` in Info.plist to prevent installation on incompatible devices
95
+ - Test on devices without the required hardware to verify graceful degradation
96
+ - iPad apps must support both orientations unless there's a compelling reason not to
97
+
98
+ ### 2.5 Software Requirements
99
+
100
+ - Target the current or previous iOS SDK
101
+ - **As of April 2026, submissions must use iOS 26 SDK or later**
102
+ - Use a React Native CLI or Expo SDK version that supports the required minimum
103
+ - Don't use deprecated APIs without fallbacks
104
+ - Support the latest two major iOS versions at minimum
105
+
106
+ ---
107
+
108
+ ## 3. Business (Guidelines 3.x)
109
+
110
+ ### 3.1.1 In-App Purchase (IAP)
111
+
112
+ **The most common rejection reason in this category.**
113
+
114
+ All digital goods and services MUST use Apple IAP:
115
+ - Subscriptions to digital content
116
+ - Premium features or feature unlocks
117
+ - Virtual currency, in-game items, loot boxes
118
+ - One-time purchases for digital content (e.g., additional filters, themes)
119
+
120
+ Physical goods and real-world services CAN use external payment:
121
+ - Physical merchandise (Stripe, etc.)
122
+ - Ride-sharing, food delivery, hotel bookings
123
+ - Real-world event tickets
124
+ - Person-to-person payments (e.g., Venmo-style)
125
+
126
+ **Never** link to an external website for purchasing digital content. Even mentioning that
127
+ content can be purchased elsewhere has caused rejections.
128
+
129
+ React Native implementation:
130
+ - `react-native-iap` — most popular, wraps StoreKit
131
+ - `expo-in-app-purchases` — Expo's built-in module
132
+ - RevenueCat — managed service, handles receipt validation
133
+
134
+ ### 3.1.2 Subscriptions
135
+
136
+ Must clearly show:
137
+ - The price in the user's local currency
138
+ - The subscription duration (weekly, monthly, yearly)
139
+ - What happens when the subscription ends (access revoked, downgraded, etc.)
140
+ - Free trial details: when billing starts, how to cancel before being charged
141
+
142
+ Required elements on subscription screens:
143
+ - Link to Apple's subscription management page (`https://apps.apple.com/account/subscriptions`)
144
+ - Terms of Service link
145
+ - Privacy Policy link
146
+ - Clear disclosure of auto-renewal
147
+
148
+ Free trials must:
149
+ - Disclose the price that will be charged after the trial
150
+ - Make cancellation instructions clear
151
+ - Not auto-subscribe without explicit user consent
152
+
153
+ ### 3.1.3 Reader Apps
154
+
155
+ Reader apps (Netflix, Spotify, Kindle-style) may:
156
+ - Link to their website for account creation
157
+ - Allow users to access previously purchased content
158
+
159
+ Reader apps must NOT:
160
+ - Include in-app purchase buttons for content
161
+ - Link directly to a purchase page on their website (allowed only for account creation)
162
+
163
+ ### 3.2 Other Business Model Issues
164
+
165
+ - Don't create an app that is essentially a website wrapped in a WebView with no native
166
+ functionality — it must provide value beyond the mobile website
167
+ - Free apps cannot lock all content behind a paywall on first launch without offering a
168
+ meaningful free experience
169
+ - Don't artificially inflate download size or ratings
170
+ - Bait-and-switch tactics (free download but everything locked) will be rejected
171
+ - Multi-app developers: don't create apps that primarily exist to cross-promote other apps
172
+
173
+ ---
174
+
175
+ ## 4. Design (Guidelines 4.x)
176
+
177
+ ### 4.0 Design Quality
178
+
179
+ The app must feel native and polished:
180
+ - Use proper safe area insets (`SafeAreaView` in React Native)
181
+ - Support Dynamic Type where possible (text should scale with system settings)
182
+ - Handle dark mode if the system supports it (at least don't break in dark mode)
183
+ - Use system UI conventions (swipe to go back, pull to refresh where expected)
184
+ - No pixelated or stretched images
185
+ - Consistent visual language throughout the app
186
+ - Text must be readable — sufficient contrast, appropriate font sizes
187
+
188
+ ### 4.1 Copycats
189
+
190
+ - Don't clone another app's UI or functionality — bring your own design
191
+ - Don't use another company's trademarks, branding, or trade dress without written permission
192
+ - Don't mimic Apple's built-in apps in a confusing way
193
+
194
+ ### 4.2 Minimum Functionality
195
+
196
+ The app must do something useful:
197
+ - Single-feature apps are fine if the feature is substantive and well-executed
198
+ - WebView-only apps will be rejected unless they add meaningful native features on top
199
+ - Apps that are primarily marketing material for a company will be rejected
200
+ - Calculator/flashlight/tip-calculator style apps are generally rejected unless they offer
201
+ something significantly unique
202
+
203
+ ### 4.3 Spam
204
+
205
+ - Don't submit multiple apps that are essentially the same with different themes, data sets,
206
+ or minor variations (template apps)
207
+ - Don't duplicate built-in iOS functionality without significant added value
208
+ - Don't submit an app that is a repackaged version of another developer's app
209
+
210
+ ### 4.5 Apple Sites and Services
211
+
212
+ If using Apple services, follow each service's specific guidelines:
213
+ - **Sign in with Apple**: REQUIRED if you offer any third-party social login (Google, Facebook,
214
+ Twitter, etc.). Must be offered as a login option alongside other providers. Must use the
215
+ Apple-provided UI button style.
216
+ - **Apple Maps**: Use MapKit for maps functionality on iOS
217
+ - **HealthKit**: Must explain data usage clearly, can't use health data for advertising
218
+ - **HomeKit**: Must support user-initiated control
219
+ - **SiriKit / App Intents**: Follow the specific interaction patterns
220
+
221
+ ### 4.7 HTML5 Games/Apps
222
+
223
+ - Apps that are just HTML5/web content in a native wrapper will be rejected
224
+ - There must be meaningful native functionality beyond the WebView
225
+ - Performance must be comparable to native apps
226
+
227
+ ---
228
+
229
+ ## 5. Legal (Guidelines 5.x)
230
+
231
+ ### 5.1 Privacy
232
+
233
+ Apps must include a privacy policy:
234
+ - The privacy policy link must work and be accessible from within the app AND on the store listing
235
+ - Must be in plain language, not just legal boilerplate
236
+ - Must accurately describe what data is collected, how it's used, and who it's shared with
237
+ - Must request user permission before collecting personal data
238
+ - Must not collect data unrelated to the app's core functionality
239
+
240
+ #### App Tracking Transparency (ATT)
241
+
242
+ If using IDFA or tracking users across apps/websites owned by other companies:
243
+ - Must show the ATT prompt before any tracking occurs
244
+ - Use `react-native-tracking-transparency` or `expo-tracking-transparency`
245
+ - Don't gate app functionality on the user accepting tracking
246
+ - Don't incentivize users to allow tracking ("allow tracking for bonus coins")
247
+ - The ATT purpose string must clearly explain what data is collected and how it's used
248
+
249
+ #### PrivacyInfo.xcprivacy
250
+
251
+ Required manifest file declaring all privacy-related API usage:
252
+ - Must declare reasons for accessing APIs: UserDefaults, file timestamp APIs, disk space APIs,
253
+ system boot time, active keyboard APIs, user defaults
254
+ - React Native apps should audit ALL native modules (including transitive dependencies) for
255
+ API usage that requires declaration
256
+ - Common React Native libraries that need declarations: AsyncStorage, RNFS, react-native-device-info
257
+ - Xcode will warn about missing declarations during build
258
+
259
+ #### Privacy Nutrition Labels
260
+
261
+ Must accurately declare all data collection in App Store Connect:
262
+ - This includes data collected by ALL third-party SDKs, not just your own code
263
+ - Common React Native SDKs to audit:
264
+ - Firebase (Analytics, Crashlytics, Remote Config) — collects device ID, crash data, usage data
265
+ - Sentry — collects crash data, device info
266
+ - Amplitude / Mixpanel / Segment — collects usage analytics, device info
267
+ - Facebook SDK — collects device ID, usage data, potentially advertising data
268
+ - Google Sign-In — collects email, name, profile picture
269
+ - OneSignal / FCM — collects device tokens, notification interaction data
270
+ - Under-declaring will cause rejection; over-declaring is safer than under-declaring
271
+
272
+ ### 5.1.2 Data Use and Sharing
273
+
274
+ - Data collected for one purpose can't be repurposed without consent
275
+ - Don't share user data with data brokers
276
+ - Third-party SDKs that share data must be disclosed
277
+ - Financial and health data have additional restrictions on sharing
278
+
279
+ ### 5.2 Intellectual Property
280
+
281
+ - Don't use copyrighted content (music, images, text) without proper licensing
282
+ - Don't include Apple's proprietary icons, UI elements, or trademarks
283
+ - Open source license compliance — if using GPL libraries, your distribution must comply
284
+
285
+ ### 5.3 Gaming, Gambling, Lotteries
286
+
287
+ - Real-money gambling requires specific licenses per jurisdiction
288
+ - Must implement geo-restrictions for gambling features
289
+ - Loot boxes and gacha mechanics must disclose odds of each item/tier
290
+ - Contests and sweepstakes must have official rules and eligibility requirements
291
+
292
+ ### 5.4 VPN Apps
293
+
294
+ - Must use `NEVPNManager` API
295
+ - Can't harvest or sell user data
296
+ - Must clearly explain what data is routed through the VPN
297
+ - VPN profile installation must be user-initiated
298
+
299
+ ### 5.6 Developer Code of Conduct
300
+
301
+ - Don't manipulate ratings or reviews (incentivized reviews, review farms)
302
+ - Don't use misleading marketing or fake social proof
303
+ - Respond to App Review communications within 14 days
304
+ - Don't attempt to deceive the review process (hidden features, different behavior during review)
305
+ - Use `SKStoreReviewController` for requesting reviews — don't build custom review prompts
306
+ that redirect to the App Store