What It Does
Mobile App Tracking:- iOS SDK (Swift) for native Apple apps
- React Native SDK for cross-platform apps
- Automatic session tracking
- Attribution tracking (App Store, organic)
- SKAdNetwork conversion value encoding
- Offline event queue
- App lifecycle tracking
iOS SDK (Swift)
Installation
Swift Package Manager: Xcode:- File → Add Packages
- Enter:
https://github.com/datalyr/swift - Select version: 1.0.0+
Basic Usage
Initialize SDK:Configuration Options
SKAdNetwork Support
Initialize with SKAdNetwork:"ecommerce": Revenue-based encoding (0-6 brackets)"gaming": Level progression and IAP"subscription": Trial, active, churned states
Auto-Events
Automatically Tracked:app_install: First launchapp_open: App foregroundapp_close: App backgroundsession_start: New sessionsession_end: Session timeout
Attribution
Automatic Attribution: SDK captures attribution data on install:- App Store referrer
- Campaign parameters
- Install timestamp
Session Management
Get Session Info:Advanced Features
Flush Manually:SwiftUI Integration
React Native SDK
Installation
- React Native 0.60+
- iOS 13+ / Android 5.0+
Basic Usage
Initialize SDK:Configuration Options
SKAdNetwork Support (iOS)
Track with Automatic Encoding:Auto-Events
Automatically Tracked:app_install: First launchapp_open: App foregroundapp_close: App backgroundsession_start: New sessionsession_end: Session timeout
Attribution
Get Attribution Data:Session Management
Get Session Info:Advanced Features
Flush Manually:React Navigation Integration
TypeScript Support
Full TypeScript definitions included:Revenue Tracking: SDK vs Webhooks
With Superwall/RevenueCat (recommended for subscription apps):- Use the DATALYR SDK for behavioral events only:
track('paywall_view'),track('trial_start'),screen(),identify(), etc. - Use the webhook integration for revenue events: purchases, renewals, cancellations, refunds
- Pass attribution to Superwall/RevenueCat using
getSuperwallAttributes()orgetRevenueCatAttributes()so revenue events get linked back to the original campaign
- Use
trackPurchase()andtrackSubscription()only after confirming a real charge (not a trial start) - These methods are appropriate for one-time purchases or when you handle billing directly
Common Use Cases
E-commerce App
Subscription App (with Superwall/RevenueCat)
Subscription App (without Superwall/RevenueCat)
Gaming App
Best Practices
Initialize Early: Initialize SDK inAppDelegate (iOS) or index.js (React Native) before any events.
Flush Before Exit:
SDK automatically flushes on app background, but manually call flush() for critical events.
Handle Offline:
SDK queues events offline and sends when connection restored.
Test Conversion Values:
Use getConversionValue() to test SKAdNetwork encoding before production.
Privacy:
Enable respectDoNotTrack and collect user consent before tracking.
Migrating from AppsFlyer / Adjust
DATALYR provides similar functionality to AppsFlyer and Adjust with a simpler integration and bundled platform SDKs.From AppsFlyer
From Adjust
Event Name Mapping
| AppsFlyer Event | Adjust Event | DATALYR Method |
|---|---|---|
af_purchase | PURCHASE | trackPurchase() |
af_add_to_cart | ADD_TO_CART | trackAddToCart() |
af_initiated_checkout | INITIATE_CHECKOUT | trackInitiateCheckout() |
af_complete_registration | COMPLETE_REGISTRATION | trackCompleteRegistration() |
af_content_view | VIEW_CONTENT | trackViewContent() |
af_search | SEARCH | trackSearch() |
af_subscribe | SUBSCRIBE | trackSubscription() |
Migration Benefits
- No Ad SDKs Required: Uses native Apple and Google frameworks for IDFA and GAID
- Unified API: Single SDK for all platforms and ad networks
- Web-to-App: Automatic attribution matching via email
- Flat Pricing: No per-MAU charges
Troubleshooting
Events Not Appearing
Check SDK Status:- Should start with
dk_ - Check Settings → API Keys in dashboard
iOS Build Errors
Android Build Errors
Attribution Not Captured
Enable attribution in config:SKAdNetwork Not Working
- iOS 14.0+ required (iOS 16.1+ for SKAN 4.0)
- Set
skadTemplatein config - Use
trackWithSKAdNetwork()for automatic encoding - Test with
getConversionValue()first
App Tracking Transparency (iOS 14.5+)
Third-Party Integrations
Superwall
Push DATALYR attribution data into Superwall user attributes: React Native:| Key | Description |
|---|---|
datalyr_id | DATALYR visitor ID |
media_source | Attribution source |
campaign | Campaign name |
adgroup | Ad group or UTM content |
ad | Ad ID |
keyword | Search keyword |
utm_source | UTM source |
utm_medium | UTM medium |
utm_campaign | UTM campaign |
fbclid | Facebook click ID |
gclid | Google click ID |
ttclid | TikTok click ID |
idfa | iOS advertising ID |
gaid | Google advertising ID |
att_status | ATT authorization status |
RevenueCat
Push DATALYR attribution data into RevenueCat subscriber attributes: React Native:| Key | Description |
|---|---|
$datalyrId | DATALYR visitor ID |
$mediaSource | Attribution source |
$campaign | Campaign name |
$adGroup | Ad group |
$ad | Ad ID |
$keyword | Search keyword |
$idfa | iOS advertising ID |
$gpsAdId | Google advertising ID |
$attConsentStatus | ATT consent status |
utm_source | UTM source |
utm_medium | UTM medium |
utm_campaign | UTM campaign |
fbclid | Facebook click ID |
gclid | Google click ID |
ttclid | TikTok click ID |
Platform Requirements
iOS SDK:- iOS 13.0+
- Xcode 14+
- Swift 5.5+
- React Native 0.60+
- iOS 13+ / Android 5.0+
- Node.js 14+
Next Steps
Web SDK
Browser tracking guide
Server SDK
Backend tracking guide
Advanced Topics
Identity, batching, plugins
Attribution Reports
View attribution data