
React Native vs Native (Swift/Kotlin) 2026-ban: mikor melyiket válaszd
Performance benchmarks, developer experience, ecosystem és 5 use case ajánlás. React Native vagy native — döntsd el szakmai szempontok mentén.
GDPR alapok mobilon, consent management, IDFA / GAID kezelés, analytics tools és audit checklist. A 2026-os compliance-alapok rövid összefoglalója.

Consent + adatkezelés folyamat
Bundle-mentes opt-in célonként. ATT iOS-en, runtime permission Android 13+-on. Audit-trail Postgres-ben.
Firebase / Mixpanel kikapcsolva induláskor. Consent után aktiválás, IP-anonimizáció + EU-region store.
Account-deletion, Article 15 data export, consent-revoke az app-en belül. Hard-delete 30 nap után.
App Store Privacy Nutrition Label + Google Play Data Safety form. Privacy policy URL élesben.
A GDPR 2018-ban lépett életbe, és 2026-ra a magyar piacon is alap-elvárás minden mobil app-tól. A büntetések éves árbevétel 4%-áig terjedhetnek — egy KKV-nak ez akár tönkremenetel-szintű. Ez a cikk a leggyakoribb compliance-hiányokat fedi le, kód-szintű példákkal, és a 2024-2026-os privacy-update-eket (Apple ATT, Google Privacy Sandbox) is feldolgozza.
A guide nem helyettesíti a jogi tanácsadást — egy DPIA (Data Protection Impact Assessment) vagy DPO (Data Protection Officer) konzultáció minden komplex projekt-ben kötelező. De a fejlesztői best practice-ek itt összegezve vannak.
A GDPR a személyes adatra vonatkozik — bármi, ami azonosíthat egy egyént. Mobilon ez kiterjedhet:
A GDPR Article 5 hat alapelvet ír elő. Mindegyiket explicitly meg kell tartani:
Article 12-22 alapján a user-nek joga van:
Mindegyik app-ban implementálható kell, hogy legyen. A „törlés joga" nem azt jelenti, hogy emailben kérheti — az app-ben gomb kell rá.
A consent négy követelmény: freely given, specific, informed, unambiguous. Egy „I agree to terms" checkbox nem GDPR-compliant — minden specifikus adatkezelési célhoz külön consent kell.
A 2024-es EDPB (European Data Protection Board) iránymutatás kifejezetten szigorította a „bundled consent" tilalmat. Egy single „elfogadom" gomb mindenre már nem elegendő.
NEM GDPR-compliant:
☐ Elfogadom a felhasználási feltételeket, az adatvédelmi nyilatkozatot,
az analytics-tracking-et, a marketing-emaileket és a push-notification-okat.
GDPR-compliant:
☐ Elfogadom a felhasználási feltételeket (kötelező)
☐ Elfogadom az adatvédelmi nyilatkozatot (kötelező)
☐ Engedélyezem az analytics-tracking-et (opcionális)
☐ Marketing-email kommunikáció (opcionális)
☐ Push-notification (opcionális)
A 2024-es Google + Apple frissítés szigorította a tracking consent-et. iOS 14.5+ óta minden tracking-data-ra ATT-prompt szükséges:
import AppTrackingTransparency
import AdSupport
func requestTrackingPermission(completion: @escaping (Bool) -> Void) {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Tracking allowed, IDFA accessible
let idfa = ASIdentifierManager.shared().advertisingIdentifier
completion(true)
case .denied, .restricted, .notDetermined:
// No tracking, IDFA = 00000000-0000-0000-0000-000000000000
completion(false)
@unknown default:
completion(false)
}
}
} else {
completion(true) // iOS < 14 — no ATT
}
}
A „purpose-blocking" UI (a user nem haladhat tovább, amíg el nem fogadja) NEM GDPR-compliant — fellebbezhető. A consent-nek opcionálisnak kell lennie a core funkcionalitás-okhoz.
Az Android 14+ óta a Privacy Sandbox initiative az IDFA-szerű tracking limitálását vezeti be. A GAID (Google Advertising ID) 2026-ban deprecated, helyébe Topics API és Attribution Reporting API kerül.
// 2026-ra ez deprecated, csak fallback-re
val client = AdvertisingIdClient.getAdvertisingIdInfo(context)
if (client.isLimitAdTrackingEnabled) {
// GAID nem elérhető — user opt-out
}
A Privacy Sandbox API-k (Topics, Attribution Reporting) GDPR-szempontból egyértelműbbek — az aggregated data-t cégeken keresztül anonimizáltan közvetítik.
A 2026-ban legjobb gyakorlat: lépcsős consent, ahol minden adatkezelési cél külön döntés.
type ConsentChoice = {
essential: boolean; // Always true, no choice
analytics: boolean;
marketing: boolean;
third_party: boolean;
};
async function showConsentFlow(): Promise<ConsentChoice> {
// Step 1: Privacy policy intro screen
await showPrivacyPolicySummary();
// Step 2: Granular consent
const choices = await showGranularConsentScreen();
// Step 3: Store consent
await db.consents.upsert({
user_id: getUserId(),
timestamp: new Date(),
choices,
ip: getClientIp(), // for audit
user_agent: getUserAgent(),
});
return choices;
}
Tipp: A consent-storage maga is személyes adat — biztonságosan tárold, és audit-trail-lel. A NAIH (Nemzeti Adatvédelmi és Információszabadság Hatóság) audit-ja során ezt explicit kérdezi.
00000000-0000-0000-0000-000000000000Ha advertising attribution kell, használj alternatív megoldásokat:
iOS:
Android:
| Provider | GDPR-friendly default | Action |
|---|---|---|
| Firebase Analytics | Nem | IP collection off, anonymize ID |
| Mixpanel | Részben | EU residency opt-in, data retention 30d |
| Amplitude | Részben | EU residency, anonymize tracking |
| Segment | Részben | Data residency US default |
| PostHog (self-hosted) | Igen | Saját szerveren teljes kontroll |
| Plausible | Igen | Cookieless, EU-host |
Default analytics provider-ek (Firebase Analytics, Mixpanel) alapból nem GDPR-compliant — IP-t logolnak, device-ID-t collectolnak, US-szerveren tárolnak.
Web analytics:
Mobile + web event tracking:
Ha Firebase Analytics-et használsz (mert már bent van a stackben):
// Android Firebase Analytics — only after consent
class FirebaseAnalyticsManager(private val context: Context) {
fun configure(consent: Boolean) {
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(consent)
// IP anonymization (default-off, must enable)
// Note: Firebase doesn't expose this directly, must configure via console
// Data retention: 2 months (minimum) in console
}
fun userOptOut() {
// Reset analytics ID
FirebaseAnalytics.getInstance(context).resetAnalyticsData()
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(false)
}
}
// iOS Firebase Analytics
import FirebaseAnalytics
class FirebaseAnalyticsManager {
func configure(consent: Bool) {
Analytics.setAnalyticsCollectionEnabled(consent)
// Consent must come BEFORE FirebaseApp.configure() in some cases
}
func userOptOut() {
Analytics.resetAnalyticsData()
Analytics.setAnalyticsCollectionEnabled(false)
}
}
GDPR-elv: csak addig tárold, amíg szükséges.
| Adat-típus | Maximum retention | Indok |
|---|---|---|
| Active user account | Amíg aktív | Service delivery |
| Inactive user account | 2-3 év | Reactivation potential |
| Analytics events | 14 hónap (GA4 default) | Long-tail analysis |
| Crash logs | 90 nap | Bug-fix kontextus |
| Push tokens | Amíg fiók aktív | Service delivery |
| Marketing email opt-ins | Amíg opt-in aktív | Consent |
| Audit logs (security) | 1-3 év | Legal obligation |
| Financial transactions | 8 év (HU regulation) | Tax law |
-- User-soft-delete: GDPR Article 17
UPDATE users
SET
email = 'deleted-' || id || '@anon.local',
name = 'Deleted User',
phone = NULL,
address = NULL,
deleted_at = NOW()
WHERE id = $1;
-- Cascade
DELETE FROM push_tokens WHERE user_id = $1;
DELETE FROM analytics_events WHERE user_id = $1 AND event_type != 'aggregated';
DELETE FROM session_logs WHERE user_id = $1;
-- Audit log of deletion (kept for legal)
INSERT INTO gdpr_audit_log (user_id, action, timestamp, ip, reason)
VALUES ($1, 'erasure_request', NOW(), $2, 'user_initiated');
A törölt user-adat ne maradjon meg backup-ban éveken át. A backup-retention is GDPR-scope-ban van.
Best practice:
Backup-szintén a deletion-t tükrözze — egy „forgotten user" 30-90 napon belül a backup-ban is el legyen tüntetve.
A privacy policy nem boilerplate. Minimum tartalmaznia kell:
Magyar webhely-szabályozás kötelezővé teszi az impresszumot:
A privacy policy és impresszum URL-t az App Store Connect-be és Google Play Console-ba is be kell írni. Élesítsd a launch előtt — sokszor a review-on bukik el, mert a privacy URL nem működik.
Mielőtt store-submission-t adsz be, ellenőrizd:
Figyelem: Az App Store Privacy Nutrition Label és a Google Play Data Safety form nem azonos a privacy policy-val. Ezek külön kell, hogy tükrözzék az adatkezelést — gyakran inkonzisztencia miatt rejection.
Az Apple 2022 óta megköveteli az „account deletion in-app" funkciót. A 2026-os state-of-art:
Settings → Account → Delete Account
↓
Confirmation screen:
"Biztos? Ezt nem lehet visszavonni.
Az adataid 30 napon belül törlésre kerülnek."
↓
Re-authenticate (password / Face ID)
↓
Confirmation email sent
↓
Account marked for deletion
(queued for hard-delete in 30 days)
async function requestAccountDeletion(userId: string) {
// Step 1: Mark for deletion
await db.users.update(userId, {
deletion_requested_at: new Date(),
deletion_scheduled_at: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
});
// Step 2: Send confirmation email
await emailService.send(userId, 'account_deletion_requested');
// Step 3: Log in audit
await db.gdprAuditLog.create({
user_id: userId,
action: 'erasure_requested',
timestamp: new Date(),
});
// Step 4: Schedule hard-delete (cron job)
// (separate process, runs daily, executes 30-day-old requests)
}
async function executeScheduledDeletion() {
const due = await db.users.findMany({
deletion_scheduled_at: { lte: new Date() },
deletion_completed_at: null,
});
for (const user of due) {
await performHardDelete(user.id);
}
}
A 30-napos „grace period" érdemes — a user meggondolhatja magát, és a backend-ben a delete biztonságos végrehajtás.
async function exportUserData(userId: string): Promise<UserDataExport> {
const user = await db.users.findById(userId);
const sessions = await db.sessions.findByUserId(userId);
const events = await db.analyticsEvents.findByUserId(userId);
const consents = await db.consents.findByUserId(userId);
return {
exported_at: new Date(),
user_profile: user,
sessions: sessions,
analytics_events: events,
consents_history: consents,
};
}
Az export-formátum JSON vagy CSV. ZIP-be tömöritve, email-link-en keresztül elküldve. Ne in-app letöltés — security risk.
A Nemzeti Adatvédelmi és Információszabadság Hatóság (NAIH) a magyar GDPR-felügyeleti szerv. A 2024-es bírság-trend felfelé megy — egy átlagos NAIH-bírság KKV-szegmensben 1-5M Ft-ról 5-20M Ft-ra emelkedett.
Egy KKV-nak akkor kötelező DPO-t kineveznie, ha:
A legtöbb KKV-app NEM esik ide — de érdemes egy GDPR-tanácsadóval konzultálni a discovery-ben.
Témához kapcsolódó saját cikkeink: App Store & Play Store deployment 2026 — store-submission-szintű GDPR-checklistek. Push értesítések helyes implementálása — consent és push permission-flow. React Native vs Native 2026 — privacy-flow két platformra.
A GDPR mobilon nem egyszeri compliance-feladat, hanem folyamatos process. Új feature → új consent + új privacy policy frissítés. A jó UX-szel a consent rate is jobb (35-45% ATT iOS-en a 25% baseline helyett).
Az audit-checklist 20+ pontja kötelező a launch előtt. Egy NAIH-bírság elkerülése egyszerűen több, mint amennyit a setup-tevékenység időbe kerül.
Ha mobil app projektet tervezel, a discovery-ben mindig térünk a GDPR-checklistre — a legtöbb release-csúszás itt történik a launch előtt. Beszéljük át a részleteket egy 30 perces hívásban. Az első hét audit-jában gyakran ki tudjuk emelni a 2-3 legfontosabb gap-et, amit a launch előtt fixelnek.
A szerzőről
Corevanix Kft.
Tech partner
Modern tech partner — SAP/ERP, webfejlesztés, AI automatizáció és mobil app fejlesztés egy szakmai csapatban. KKV-tól enterprise projektig.
LinkedIn →
Performance benchmarks, developer experience, ecosystem és 5 use case ajánlás. React Native vagy native — döntsd el szakmai szempontok mentén.

Lépésről lépésre guide az iOS App Store és Google Play Store deployment-hez. Account, certificate, review folyamat és Fastlane automation.

A push notification a felhasználói retention top-3 eszköze — vagy a top-3 ok a deinstall-ra. 10 tipikus hiba és a helyes implementáció kóddal.