GDPR on Mobile
Instructions
GDPR is mostly a product / process problem, but the mobile app is where most user-facing obligations land (notice, consent, export, deletion).
1. Lawful Basis, Per Purpose
Never treat "consent" as the default. Map each processing purpose to one of:
| Basis |
Example on mobile |
| Contract |
Order processing, account management, the thing the user actually signed up for. |
| Legitimate interest |
Fraud prevention, security logging, basic aggregate usage analytics (documented LIA required). |
| Legal obligation |
Tax record retention, lawful intercept requirements. |
| Consent |
Personalized ads, cross-device tracking, optional marketing comms. |
| Vital interest |
Rare; emergency contact features, some health apps. |
| Public task |
Rare outside government / public services. |
Maintain a short Record of Processing Activities (RoPA): for each field, a purpose + basis + retention + recipients. Your DPO / legal team will ask for this.
2. Data Subject Rights — What to Build
Ship these flows; don't gate them behind emailing support:
- Access (Art. 15) — export the user's data in a portable format.
- Rectification (Art. 16) — edit profile / corrections.
- Erasure / "right to be forgotten" (Art. 17) — account deletion.
- Restriction (Art. 18) — pause processing without deleting.
- Portability (Art. 20) — machine-readable export (JSON, CSV).
- Objection (Art. 21) — opt out of legitimate-interest processing.
- Automated decisions (Art. 22) — if you make them, provide a human-review path.
3. Export / DSAR Path
// Flow (any platform):
// 1. User taps Settings → Privacy → Download My Data.
// 2. Client posts /me/export; server enqueues a job.
// 3. Job gathers from all systems (primary DB, analytics, backups in scope, logs).
// 4. Server uploads a signed, time-limited URL; notifies the app.
// 5. User downloads a password-protected ZIP with JSON / CSV / attachments.
Implementation notes:
- Include all systems of record — analytics, support ticket, CRM, push tokens.
- 30-day regulatory window; target under 7 days operationally.
- Re-authenticate the user (password + MFA) before starting the export — DSARs are a phishing target.
4. Deletion Path
// Account deletion must be reachable in the app (Apple / Play require this as of 2022 / 2024).
// 1. Confirm identity and intent (password + "type my email" pattern).
// 2. Kick off async deletion job.
// 3. Immediately: invalidate tokens, sign the user out on all devices.
// 4. Within SLA: scrub PII from primary stores; anonymize analytics; delete backups per policy.
// 5. Retain only what a legal basis requires (tax records, fraud prevention), documented.
// 6. Email confirmation when deletion completes.
Hard requirements:
- App Store Guideline 5.1.1(v) and Play Data Safety both require in-app deletion.
- The path cannot be deeper than Settings → Account → Delete Account.
- "Deactivate" is not deletion; keep them as separate flows.
5. Data Retention
Per category, document the shortest defensible retention:
- Session & auth logs: 90 days unless under investigation.
- Analytics events: 14 months at Google Analytics' default; shorter is usually better.
- Crash reports: 90 days.
- Support tickets: 2–3 years after last interaction.
Run a scheduled job that enforces retention; don't rely on manual cleanups.
6. International Data Transfers
- After Schrems II, transfers outside the EEA need a valid mechanism (SCCs, adequacy decision).
- For US vendors, check Data Privacy Framework status at the point of each transfer — it has been litigated before.
- Document subprocessors and transfer mechanisms in your privacy policy.
7. Mobile-Specific Notices
- Show the privacy notice before first data collection, not buried in Settings.
- Material changes require active notice on next launch.
- iOS Privacy Nutrition Labels and Privacy Manifests (
PrivacyInfo.xcprivacy) must match your real processing — mismatches are an App Store reject and a GDPR Art. 13 problem.
- Android Play Data Safety form must match the in-app disclosures.
8. Breach Notification
- 72-hour clock to the supervisory authority starts on awareness, not confirmation.
- Have an in-app path to notify affected users where required (Art. 34).
- Pre-write the runbook: who decides, who drafts, who presses send.
9. Vendor / SDK Management
Every SDK that handles personal data = a data processor.
- Sign a DPA (Data Processing Addendum) before integration, not after.
- Disable SDK features you don't use (many default to maximum collection).
- Review annually; SDKs change scope silently.
Checklist
1---2name: gdpr-mobile3description: GDPR on mobile — lawful basis per processing purpose, Data Subject Access Requests (DSAR), and deletion workflows. Use when shipping in the EEA / UK or any GDPR-aligned jurisdiction.4---56# GDPR on Mobile78## Instructions910GDPR is mostly a product / process problem, but the mobile app is where most user-facing obligations land (notice, consent, export, deletion).1112### 1. Lawful Basis, Per Purpose1314Never treat "consent" as the default. Map each processing purpose to one of:1516| Basis | Example on mobile |17| ----- | ----------------- |18| Contract | Order processing, account management, the thing the user actually signed up for. |19| Legitimate interest | Fraud prevention, security logging, basic aggregate usage analytics (documented LIA required). |20| Legal obligation | Tax record retention, lawful intercept requirements. |21| Consent | Personalized ads, cross-device tracking, optional marketing comms. |22| Vital interest | Rare; emergency contact features, some health apps. |23| Public task | Rare outside government / public services. |2425Maintain a short **Record of Processing Activities** (RoPA): for each field, a purpose + basis + retention + recipients. Your DPO / legal team will ask for this.2627### 2. Data Subject Rights — What to Build2829Ship these flows; don't gate them behind emailing support:3031- **Access (Art. 15)** — export the user's data in a portable format.32- **Rectification (Art. 16)** — edit profile / corrections.33- **Erasure / "right to be forgotten" (Art. 17)** — account deletion.34- **Restriction (Art. 18)** — pause processing without deleting.35- **Portability (Art. 20)** — machine-readable export (JSON, CSV).36- **Objection (Art. 21)** — opt out of legitimate-interest processing.37- **Automated decisions (Art. 22)** — if you make them, provide a human-review path.3839### 3. Export / DSAR Path4041```kotlin42// Flow (any platform):43// 1. User taps Settings → Privacy → Download My Data.44// 2. Client posts /me/export; server enqueues a job.45// 3. Job gathers from all systems (primary DB, analytics, backups in scope, logs).46// 4. Server uploads a signed, time-limited URL; notifies the app.47// 5. User downloads a password-protected ZIP with JSON / CSV / attachments.48```4950Implementation notes:5152- Include **all** systems of record — analytics, support ticket, CRM, push tokens.53- 30-day regulatory window; target under 7 days operationally.54- Re-authenticate the user (password + MFA) before starting the export — DSARs are a phishing target.5556### 4. Deletion Path5758```kotlin59// Account deletion must be reachable in the app (Apple / Play require this as of 2022 / 2024).60// 1. Confirm identity and intent (password + "type my email" pattern).61// 2. Kick off async deletion job.62// 3. Immediately: invalidate tokens, sign the user out on all devices.63// 4. Within SLA: scrub PII from primary stores; anonymize analytics; delete backups per policy.64// 5. Retain only what a legal basis requires (tax records, fraud prevention), documented.65// 6. Email confirmation when deletion completes.66```6768Hard requirements:6970- **App Store Guideline 5.1.1(v)** and **Play Data Safety** both require in-app deletion.71- The path cannot be deeper than Settings → Account → Delete Account.72- "Deactivate" is not deletion; keep them as separate flows.7374### 5. Data Retention7576Per category, document the shortest defensible retention:7778- Session & auth logs: 90 days unless under investigation.79- Analytics events: 14 months at Google Analytics' default; shorter is usually better.80- Crash reports: 90 days.81- Support tickets: 2–3 years after last interaction.8283Run a scheduled job that enforces retention; don't rely on manual cleanups.8485### 6. International Data Transfers8687- After Schrems II, transfers outside the EEA need a valid mechanism (SCCs, adequacy decision).88- For US vendors, check Data Privacy Framework status at the point of each transfer — it has been litigated before.89- Document subprocessors and transfer mechanisms in your privacy policy.9091### 7. Mobile-Specific Notices9293- Show the privacy notice **before** first data collection, not buried in Settings.94- Material changes require active notice on next launch.95- iOS **Privacy Nutrition Labels** and **Privacy Manifests** (`PrivacyInfo.xcprivacy`) must match your real processing — mismatches are an App Store reject and a GDPR Art. 13 problem.96- Android Play **Data Safety** form must match the in-app disclosures.9798### 8. Breach Notification99100- 72-hour clock to the supervisory authority starts on awareness, not confirmation.101- Have an in-app path to notify affected users where required (Art. 34).102- Pre-write the runbook: who decides, who drafts, who presses send.103104### 9. Vendor / SDK Management105106Every SDK that handles personal data = a data processor.107108- Sign a DPA (Data Processing Addendum) before integration, not after.109- Disable SDK features you don't use (many default to maximum collection).110- Review annually; SDKs change scope silently.111112## Checklist113114- [ ] A RoPA exists mapping each field to purpose, basis, retention, recipients.115- [ ] Each processing purpose has a lawful basis (not defaulted to consent).116- [ ] In-app account deletion is reachable within Settings → Account.117- [ ] In-app data export produces a complete, authenticated, machine-readable archive.118- [ ] A retention job enforces documented retention per data category.119- [ ] Subprocessors and international transfer mechanisms are listed in the privacy policy.120- [ ] iOS Privacy Manifest and Play Data Safety match the real processing.121- [ ] A breach notification runbook exists and has been rehearsed.122- [ ] Every SDK handling personal data has a signed DPA.