@datalyr/react-native 1.4.9 → 1.6.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 (38) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +17 -127
  3. package/android/build.gradle +0 -7
  4. package/android/src/main/java/com/datalyr/reactnative/DatalyrNativeModule.java +2 -380
  5. package/android/src/main/java/com/datalyr/reactnative/DatalyrPackage.java +1 -1
  6. package/datalyr-react-native.podspec +3 -7
  7. package/expo-module.config.json +4 -1
  8. package/ios/DatalyrNativeModule.swift +0 -266
  9. package/lib/datalyr-sdk.d.ts +8 -4
  10. package/lib/datalyr-sdk.js +83 -143
  11. package/lib/http-client.js +2 -2
  12. package/lib/index.d.ts +1 -1
  13. package/lib/index.js +1 -1
  14. package/lib/integrations/index.d.ts +3 -4
  15. package/lib/integrations/index.js +3 -4
  16. package/lib/native/DatalyrNativeBridge.d.ts +6 -22
  17. package/lib/native/DatalyrNativeBridge.js +6 -147
  18. package/lib/native/index.d.ts +1 -1
  19. package/lib/native/index.js +1 -1
  20. package/lib/types.d.ts +1 -19
  21. package/package.json +3 -5
  22. package/src/datalyr-sdk-expo.ts +6 -141
  23. package/src/datalyr-sdk.ts +96 -173
  24. package/src/http-client.ts +2 -2
  25. package/src/index.ts +1 -1
  26. package/src/integrations/index.ts +3 -4
  27. package/src/native/DatalyrNativeBridge.ts +6 -241
  28. package/src/native/index.ts +0 -2
  29. package/src/types.ts +2 -25
  30. package/src/utils-expo.ts +2 -2
  31. package/ios/DatalyrObjCExceptionCatcher.h +0 -14
  32. package/ios/DatalyrObjCExceptionCatcher.m +0 -30
  33. package/lib/integrations/meta-integration.d.ts +0 -77
  34. package/lib/integrations/meta-integration.js +0 -219
  35. package/lib/integrations/tiktok-integration.d.ts +0 -83
  36. package/lib/integrations/tiktok-integration.js +0 -360
  37. package/src/integrations/meta-integration.ts +0 -239
  38. package/src/integrations/tiktok-integration.ts +0 -363
@@ -45,7 +45,7 @@ export class HttpClient {
45
45
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
46
46
  const headers = {
47
47
  'Content-Type': 'application/json',
48
- 'User-Agent': `@datalyr/react-native/1.4.8`,
48
+ 'User-Agent': `@datalyr/react-native/1.5.0`,
49
49
  };
50
50
  // Server-side tracking uses X-API-Key header
51
51
  if (this.config.useServerTracking !== false) {
@@ -152,7 +152,7 @@ export class HttpClient {
152
152
  },
153
153
  context: {
154
154
  library: '@datalyr/react-native',
155
- version: '1.4.8',
155
+ version: '1.5.0',
156
156
  source: 'mobile_app', // Explicitly set source for mobile
157
157
  userProperties: payload.userProperties,
158
158
  },
package/lib/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export * from './event-queue';
12
12
  export { DatalyrSDK };
13
13
  export { ConversionValueEncoder, ConversionTemplates } from './ConversionValueEncoder';
14
14
  export { SKAdNetworkBridge } from './native/SKAdNetworkBridge';
15
- export { metaIntegration, tiktokIntegration, appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
15
+ export { appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
16
16
  export { networkStatusManager } from './network-status';
17
17
  export type { NetworkState, NetworkStateListener } from './network-status';
18
18
  export type { AppleSearchAdsAttribution } from './native/DatalyrNativeBridge';
package/lib/index.js CHANGED
@@ -20,7 +20,7 @@ export { DatalyrSDK };
20
20
  export { ConversionValueEncoder, ConversionTemplates } from './ConversionValueEncoder';
21
21
  export { SKAdNetworkBridge } from './native/SKAdNetworkBridge';
22
22
  // Export platform integrations
23
- export { metaIntegration, tiktokIntegration, appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
23
+ export { appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
24
24
  // Export network status manager
25
25
  export { networkStatusManager } from './network-status';
26
26
  // Default export for compatibility
@@ -1,9 +1,8 @@
1
1
  /**
2
- * Platform SDK Integrations
3
- * Meta (Facebook), TikTok, Apple Search Ads, and Google Play Install Referrer SDK wrappers
2
+ * Platform Integrations
3
+ * Apple Search Ads and Google Play Install Referrer
4
+ * Conversion routing to Meta/TikTok/Google is handled server-side via postback.
4
5
  */
5
- export { MetaIntegration, metaIntegration } from './meta-integration';
6
- export { TikTokIntegration, tiktokIntegration } from './tiktok-integration';
7
6
  export { AppleSearchAdsIntegration, appleSearchAdsIntegration } from './apple-search-ads-integration';
8
7
  export { playInstallReferrerIntegration } from './play-install-referrer';
9
8
  export type { PlayInstallReferrer } from './play-install-referrer';
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Platform SDK Integrations
3
- * Meta (Facebook), TikTok, Apple Search Ads, and Google Play Install Referrer SDK wrappers
2
+ * Platform Integrations
3
+ * Apple Search Ads and Google Play Install Referrer
4
+ * Conversion routing to Meta/TikTok/Google is handled server-side via postback.
4
5
  */
5
- export { MetaIntegration, metaIntegration } from './meta-integration';
6
- export { TikTokIntegration, tiktokIntegration } from './tiktok-integration';
7
6
  export { AppleSearchAdsIntegration, appleSearchAdsIntegration } from './apple-search-ads-integration';
8
7
  export { playInstallReferrerIntegration } from './play-install-referrer';
@@ -1,10 +1,12 @@
1
1
  /**
2
- * Native Bridge for Meta, TikTok, Apple Search Ads, and Play Install Referrer
3
- * Uses bundled native modules instead of separate npm packages
2
+ * Native Bridge for Apple Search Ads, Play Install Referrer, and Advertiser Info
3
+ *
4
+ * Conversion event routing to ad platforms (Meta, TikTok, Google) is handled
5
+ * server-side via the postback system — no client-side ad SDKs needed.
4
6
  *
5
7
  * Supported Platforms:
6
- * - iOS: Meta SDK, TikTok SDK, Apple Search Ads (AdServices)
7
- * - Android: Meta SDK, TikTok SDK, Play Install Referrer
8
+ * - iOS: Apple Search Ads (AdServices), IDFA/ATT
9
+ * - Android: Play Install Referrer, GAID
8
10
  */
9
11
  /**
10
12
  * Apple Search Ads attribution data returned from AdServices API (iOS only)
@@ -49,27 +51,9 @@ export declare const isNativeModuleAvailable: () => boolean;
49
51
  * Get SDK availability status for all platforms
50
52
  */
51
53
  export declare const getSDKAvailability: () => Promise<{
52
- meta: boolean;
53
- tiktok: boolean;
54
54
  appleSearchAds: boolean;
55
55
  playInstallReferrer: boolean;
56
56
  }>;
57
- export declare const MetaNativeBridge: {
58
- initialize(appId: string, clientToken?: string, advertiserTrackingEnabled?: boolean): Promise<boolean>;
59
- fetchDeferredAppLink(): Promise<string | null>;
60
- logEvent(eventName: string, valueToSum?: number, parameters?: Record<string, any>): Promise<boolean>;
61
- logPurchase(amount: number, currency: string, parameters?: Record<string, any>): Promise<boolean>;
62
- setUserData(userData: Record<string, string | undefined>): Promise<boolean>;
63
- clearUserData(): Promise<boolean>;
64
- updateTrackingAuthorization(enabled: boolean): Promise<boolean>;
65
- };
66
- export declare const TikTokNativeBridge: {
67
- initialize(appId: string, tiktokAppId: string, accessToken?: string, debug?: boolean): Promise<boolean>;
68
- trackEvent(eventName: string, eventId?: string, properties?: Record<string, any>): Promise<boolean>;
69
- identify(externalId?: string, email?: string, phone?: string): Promise<boolean>;
70
- logout(): Promise<boolean>;
71
- updateTrackingAuthorization(enabled: boolean): Promise<boolean>;
72
- };
73
57
  export declare const AppleSearchAdsNativeBridge: {
74
58
  /**
75
59
  * Get Apple Search Ads attribution data
@@ -1,10 +1,12 @@
1
1
  /**
2
- * Native Bridge for Meta, TikTok, Apple Search Ads, and Play Install Referrer
3
- * Uses bundled native modules instead of separate npm packages
2
+ * Native Bridge for Apple Search Ads, Play Install Referrer, and Advertiser Info
3
+ *
4
+ * Conversion event routing to ad platforms (Meta, TikTok, Google) is handled
5
+ * server-side via the postback system — no client-side ad SDKs needed.
4
6
  *
5
7
  * Supported Platforms:
6
- * - iOS: Meta SDK, TikTok SDK, Apple Search Ads (AdServices)
7
- * - Android: Meta SDK, TikTok SDK, Play Install Referrer
8
+ * - iOS: Apple Search Ads (AdServices), IDFA/ATT
9
+ * - Android: Play Install Referrer, GAID
8
10
  */
9
11
  var _a, _b;
10
12
  import { NativeModules, Platform } from 'react-native';
@@ -39,8 +41,6 @@ export const isNativeModuleAvailable = () => {
39
41
  */
40
42
  export const getSDKAvailability = async () => {
41
43
  const defaultAvailability = {
42
- meta: false,
43
- tiktok: false,
44
44
  appleSearchAds: false,
45
45
  playInstallReferrer: false,
46
46
  };
@@ -59,147 +59,6 @@ export const getSDKAvailability = async () => {
59
59
  return defaultAvailability;
60
60
  }
61
61
  };
62
- // MARK: - Meta SDK Bridge
63
- export const MetaNativeBridge = {
64
- async initialize(appId, clientToken, advertiserTrackingEnabled = false) {
65
- if (!DatalyrNative)
66
- return false;
67
- try {
68
- return await DatalyrNative.initializeMetaSDK(appId, clientToken || null, advertiserTrackingEnabled);
69
- }
70
- catch (error) {
71
- console.error('[Datalyr/MetaNative] Initialize failed:', error);
72
- return false;
73
- }
74
- },
75
- async fetchDeferredAppLink() {
76
- if (!DatalyrNative)
77
- return null;
78
- try {
79
- return await DatalyrNative.fetchDeferredAppLink();
80
- }
81
- catch (_a) {
82
- return null;
83
- }
84
- },
85
- async logEvent(eventName, valueToSum, parameters) {
86
- if (!DatalyrNative)
87
- return false;
88
- try {
89
- return await DatalyrNative.logMetaEvent(eventName, valueToSum !== null && valueToSum !== void 0 ? valueToSum : null, parameters || null);
90
- }
91
- catch (error) {
92
- console.error('[Datalyr/MetaNative] Log event failed:', error);
93
- return false;
94
- }
95
- },
96
- async logPurchase(amount, currency, parameters) {
97
- if (!DatalyrNative)
98
- return false;
99
- try {
100
- return await DatalyrNative.logMetaPurchase(amount, currency, parameters || null);
101
- }
102
- catch (error) {
103
- console.error('[Datalyr/MetaNative] Log purchase failed:', error);
104
- return false;
105
- }
106
- },
107
- async setUserData(userData) {
108
- if (!DatalyrNative)
109
- return false;
110
- try {
111
- return await DatalyrNative.setMetaUserData(userData);
112
- }
113
- catch (error) {
114
- console.error('[Datalyr/MetaNative] Set user data failed:', error);
115
- return false;
116
- }
117
- },
118
- async clearUserData() {
119
- if (!DatalyrNative)
120
- return false;
121
- try {
122
- return await DatalyrNative.clearMetaUserData();
123
- }
124
- catch (error) {
125
- console.error('[Datalyr/MetaNative] Clear user data failed:', error);
126
- return false;
127
- }
128
- },
129
- async updateTrackingAuthorization(enabled) {
130
- if (!DatalyrNative)
131
- return false;
132
- try {
133
- return await DatalyrNative.updateMetaTrackingAuthorization(enabled);
134
- }
135
- catch (error) {
136
- console.error('[Datalyr/MetaNative] Update tracking failed:', error);
137
- return false;
138
- }
139
- },
140
- };
141
- // MARK: - TikTok SDK Bridge
142
- export const TikTokNativeBridge = {
143
- async initialize(appId, tiktokAppId, accessToken, debug = false) {
144
- if (!DatalyrNative)
145
- return false;
146
- try {
147
- return await DatalyrNative.initializeTikTokSDK(appId, tiktokAppId, accessToken || null, debug);
148
- }
149
- catch (error) {
150
- console.error('[Datalyr/TikTokNative] Initialize failed:', error);
151
- return false;
152
- }
153
- },
154
- async trackEvent(eventName, eventId, properties) {
155
- if (!DatalyrNative)
156
- return false;
157
- try {
158
- return await DatalyrNative.trackTikTokEvent(eventName, eventId || null, properties || null);
159
- }
160
- catch (error) {
161
- console.error('[Datalyr/TikTokNative] Track event failed:', error);
162
- return false;
163
- }
164
- },
165
- async identify(externalId, email, phone) {
166
- if (!DatalyrNative)
167
- return false;
168
- // Only call if we have at least one value
169
- if (!externalId && !email && !phone)
170
- return false;
171
- try {
172
- return await DatalyrNative.identifyTikTokUser(externalId || '', '', // externalUserName - not typically available
173
- phone || '', email || '');
174
- }
175
- catch (error) {
176
- console.error('[Datalyr/TikTokNative] Identify failed:', error);
177
- return false;
178
- }
179
- },
180
- async logout() {
181
- if (!DatalyrNative)
182
- return false;
183
- try {
184
- return await DatalyrNative.logoutTikTok();
185
- }
186
- catch (error) {
187
- console.error('[Datalyr/TikTokNative] Logout failed:', error);
188
- return false;
189
- }
190
- },
191
- async updateTrackingAuthorization(enabled) {
192
- if (!DatalyrNative)
193
- return false;
194
- try {
195
- return await DatalyrNative.updateTikTokTrackingAuthorization(enabled);
196
- }
197
- catch (error) {
198
- console.error('[Datalyr/TikTokNative] Update tracking failed:', error);
199
- return false;
200
- }
201
- },
202
- };
203
62
  // MARK: - Apple Search Ads Bridge (iOS only)
204
63
  export const AppleSearchAdsNativeBridge = {
205
64
  /**
@@ -2,5 +2,5 @@
2
2
  * Native Module Exports
3
3
  */
4
4
  export { SKAdNetworkBridge } from './SKAdNetworkBridge';
5
- export { isNativeModuleAvailable, getSDKAvailability, MetaNativeBridge, TikTokNativeBridge, AdvertiserInfoBridge, } from './DatalyrNativeBridge';
5
+ export { isNativeModuleAvailable, getSDKAvailability, AdvertiserInfoBridge, } from './DatalyrNativeBridge';
6
6
  export type { AdvertiserInfo } from './DatalyrNativeBridge';
@@ -2,4 +2,4 @@
2
2
  * Native Module Exports
3
3
  */
4
4
  export { SKAdNetworkBridge } from './SKAdNetworkBridge';
5
- export { isNativeModuleAvailable, getSDKAvailability, MetaNativeBridge, TikTokNativeBridge, AdvertiserInfoBridge, } from './DatalyrNativeBridge';
5
+ export { isNativeModuleAvailable, getSDKAvailability, AdvertiserInfoBridge, } from './DatalyrNativeBridge';
package/lib/types.d.ts CHANGED
@@ -5,24 +5,12 @@ export interface AutoEventConfig {
5
5
  trackPerformance?: boolean;
6
6
  sessionTimeoutMs?: number;
7
7
  }
8
- export interface MetaConfig {
9
- appId: string;
10
- clientToken?: string;
11
- enableDeferredDeepLink?: boolean;
12
- enableAppEvents?: boolean;
13
- advertiserTrackingEnabled?: boolean;
14
- }
15
- export interface TikTokConfig {
16
- appId: string;
17
- tiktokAppId: string;
18
- accessToken?: string;
19
- enableAppEvents?: boolean;
20
- }
21
8
  export interface DeferredDeepLinkResult {
22
9
  url?: string;
23
10
  source?: string;
24
11
  fbclid?: string;
25
12
  ttclid?: string;
13
+ gclid?: string;
26
14
  utmSource?: string;
27
15
  utmMedium?: string;
28
16
  utmCampaign?: string;
@@ -43,8 +31,6 @@ export interface DeferredDeepLinkResult {
43
31
  * enableAutoEvents: true,
44
32
  * enableAttribution: true,
45
33
  * skadTemplate: 'ecommerce',
46
- * meta: { appId: 'FB_APP_ID' },
47
- * tiktok: { appId: 'APP_ID', tiktokAppId: 'TIKTOK_APP_ID' },
48
34
  * });
49
35
  * ```
50
36
  */
@@ -106,10 +92,6 @@ export interface DatalyrConfig {
106
92
  };
107
93
  /** SKAdNetwork template for automatic conversion value encoding (iOS only) */
108
94
  skadTemplate?: 'ecommerce' | 'gaming' | 'subscription';
109
- /** Meta (Facebook) SDK Configuration */
110
- meta?: MetaConfig;
111
- /** TikTok SDK Configuration */
112
- tiktok?: TikTokConfig;
113
95
  }
114
96
  export interface EventData {
115
97
  [key: string]: any;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datalyr/react-native",
3
- "version": "1.4.9",
4
- "description": "Datalyr SDK for React Native & Expo - Server-side attribution tracking with bundled Meta and TikTok SDKs for iOS and Android",
3
+ "version": "1.6.0",
4
+ "description": "Datalyr SDK for React Native & Expo - Server-side attribution tracking for iOS and Android",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "scripts": {
@@ -37,8 +37,7 @@
37
37
  "automatic-events",
38
38
  "session-tracking",
39
39
  "utm-tracking",
40
- "facebook-attribution",
41
- "tiktok-attribution",
40
+ "server-side-attribution",
42
41
  "google-attribution",
43
42
  "ios-attribution",
44
43
  "android-attribution",
@@ -47,7 +46,6 @@
47
46
  "gclid",
48
47
  "conversion-tracking",
49
48
  "revenue-optimization",
50
- "deferred-deep-linking",
51
49
  "fbclid",
52
50
  "ttclid"
53
51
  ],
@@ -34,7 +34,7 @@ import { journeyManager } from './journey';
34
34
  import { createAutoEventsManager, AutoEventsManager } from './auto-events';
35
35
  import { ConversionValueEncoder, ConversionTemplates } from './ConversionValueEncoder';
36
36
  import { SKAdNetworkBridge } from './native/SKAdNetworkBridge';
37
- import { metaIntegration, tiktokIntegration, appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
37
+ import { appleSearchAdsIntegration, playInstallReferrerIntegration } from './integrations';
38
38
  import { DeferredDeepLinkResult } from './types';
39
39
  import { AppleSearchAdsAttribution, AdvertiserInfoBridge } from './native/DatalyrNativeBridge';
40
40
 
@@ -172,33 +172,6 @@ export class DatalyrSDKExpo {
172
172
  }
173
173
  }
174
174
 
175
- // Initialize platform SDKs (Meta/TikTok) if configured
176
- if (config.meta) {
177
- try {
178
- await metaIntegration.initialize(config.meta, config.debug || false);
179
- debugLog('Meta SDK initialized');
180
-
181
- // Fetch deferred deep link data
182
- if (config.meta.enableDeferredDeepLink) {
183
- const deferredData = await metaIntegration.fetchDeferredDeepLink();
184
- if (deferredData) {
185
- await this.handleDeferredDeepLink(deferredData);
186
- }
187
- }
188
- } catch (error) {
189
- errorLog('Failed to initialize Meta SDK:', error as Error);
190
- }
191
- }
192
-
193
- if (config.tiktok) {
194
- try {
195
- await tiktokIntegration.initialize(config.tiktok, config.debug || false);
196
- debugLog('TikTok SDK initialized');
197
- } catch (error) {
198
- errorLog('Failed to initialize TikTok SDK:', error as Error);
199
- }
200
- }
201
-
202
175
  // Initialize Apple Search Ads attribution (iOS only, auto-fetches on init)
203
176
  await appleSearchAdsIntegration.initialize(config.debug);
204
177
 
@@ -213,8 +186,6 @@ export class DatalyrSDKExpo {
213
186
  }
214
187
 
215
188
  debugLog('Platform integrations initialized', {
216
- meta: metaIntegration.isAvailable(),
217
- tiktok: tiktokIntegration.isAvailable(),
218
189
  appleSearchAds: appleSearchAdsIntegration.isAvailable(),
219
190
  playInstallReferrer: playInstallReferrerIntegration.isAvailable(),
220
191
  });
@@ -225,7 +196,7 @@ export class DatalyrSDKExpo {
225
196
  const installData = await attributionManager.trackInstall();
226
197
  await this.track('app_install', {
227
198
  platform: Platform.OS,
228
- sdk_version: '1.4.9',
199
+ sdk_version: '1.6.0',
229
200
  sdk_variant: 'expo',
230
201
  ...installData,
231
202
  });
@@ -311,30 +282,6 @@ export class DatalyrSDKExpo {
311
282
  }
312
283
  }
313
284
 
314
- // Forward user data to platform SDKs for Advanced Matching
315
- if (metaIntegration.isAvailable() && properties) {
316
- metaIntegration.setUserData({
317
- email: properties.email,
318
- phone: properties.phone,
319
- firstName: properties.firstName || properties.first_name,
320
- lastName: properties.lastName || properties.last_name,
321
- city: properties.city,
322
- state: properties.state,
323
- zip: properties.zip || properties.zipCode || properties.postalCode,
324
- country: properties.country,
325
- gender: properties.gender,
326
- dateOfBirth: properties.dateOfBirth || properties.dob || properties.birthday,
327
- });
328
- }
329
-
330
- if (tiktokIntegration.isAvailable()) {
331
- tiktokIntegration.identify(
332
- properties?.email,
333
- properties?.phone,
334
- userId
335
- );
336
- }
337
-
338
285
  } catch (error) {
339
286
  errorLog('Error identifying user:', error as Error);
340
287
  }
@@ -436,11 +383,6 @@ export class DatalyrSDKExpo {
436
383
 
437
384
  this.state.sessionId = await getOrCreateSessionId();
438
385
 
439
- // Clear user data from platform SDKs
440
- if (metaIntegration.isAvailable()) {
441
- metaIntegration.clearUserData();
442
- }
443
-
444
386
  debugLog('User data reset completed');
445
387
 
446
388
  } catch (error) {
@@ -567,14 +509,6 @@ export class DatalyrSDKExpo {
567
509
  if (productId) properties.product_id = productId;
568
510
 
569
511
  await this.trackWithSKAdNetwork('purchase', properties);
570
-
571
- // Forward to platform SDKs
572
- if (metaIntegration.isAvailable()) {
573
- metaIntegration.logPurchase(value, currency, { productId });
574
- }
575
- if (tiktokIntegration.isAvailable()) {
576
- tiktokIntegration.logPurchase(value, currency, productId);
577
- }
578
512
  }
579
513
 
580
514
  async trackSubscription(value: number, currency = 'USD', plan?: string): Promise<void> {
@@ -582,14 +516,6 @@ export class DatalyrSDKExpo {
582
516
  if (plan) properties.plan = plan;
583
517
 
584
518
  await this.trackWithSKAdNetwork('subscribe', properties);
585
-
586
- // Forward to platform SDKs
587
- if (metaIntegration.isAvailable()) {
588
- metaIntegration.logEvent('Subscribe', { value, currency, content_id: plan });
589
- }
590
- if (tiktokIntegration.isAvailable()) {
591
- tiktokIntegration.logSubscription(value, currency, plan);
592
- }
593
519
  }
594
520
 
595
521
  // Standard e-commerce events with platform forwarding
@@ -600,13 +526,6 @@ export class DatalyrSDKExpo {
600
526
  if (contentName) properties.content_name = contentName;
601
527
 
602
528
  await this.track('add_to_cart', properties);
603
-
604
- if (metaIntegration.isAvailable()) {
605
- metaIntegration.logEvent('AddToCart', { value, currency, content_id: contentId, content_name: contentName });
606
- }
607
- if (tiktokIntegration.isAvailable()) {
608
- tiktokIntegration.logAddToCart(value, currency, contentId, contentName);
609
- }
610
529
  }
611
530
 
612
531
  async trackViewContent(contentId: string, contentName?: string, contentType?: string, value?: number, currency?: string): Promise<void> {
@@ -617,13 +536,6 @@ export class DatalyrSDKExpo {
617
536
  if (currency) properties.currency = currency;
618
537
 
619
538
  await this.track('view_content', properties);
620
-
621
- if (metaIntegration.isAvailable()) {
622
- metaIntegration.logEvent('ViewContent', properties);
623
- }
624
- if (tiktokIntegration.isAvailable()) {
625
- tiktokIntegration.logViewContent(contentId, contentName, contentType, value, currency);
626
- }
627
539
  }
628
540
 
629
541
  async trackInitiateCheckout(value?: number, currency?: string, numItems?: number, contentIds?: string[]): Promise<void> {
@@ -634,13 +546,6 @@ export class DatalyrSDKExpo {
634
546
  if (contentIds) properties.content_ids = contentIds;
635
547
 
636
548
  await this.track('initiate_checkout', properties);
637
-
638
- if (metaIntegration.isAvailable()) {
639
- metaIntegration.logEvent('InitiateCheckout', properties);
640
- }
641
- if (tiktokIntegration.isAvailable()) {
642
- tiktokIntegration.logInitiateCheckout(value, currency, numItems, contentIds);
643
- }
644
549
  }
645
550
 
646
551
  async trackCompleteRegistration(registrationMethod?: string): Promise<void> {
@@ -648,13 +553,6 @@ export class DatalyrSDKExpo {
648
553
  if (registrationMethod) properties.registration_method = registrationMethod;
649
554
 
650
555
  await this.track('complete_registration', properties);
651
-
652
- if (metaIntegration.isAvailable()) {
653
- metaIntegration.logEvent('CompleteRegistration', properties);
654
- }
655
- if (tiktokIntegration.isAvailable()) {
656
- tiktokIntegration.logCompleteRegistration(registrationMethod);
657
- }
658
556
  }
659
557
 
660
558
  async trackSearch(searchString: string, contentIds?: string[]): Promise<void> {
@@ -662,13 +560,6 @@ export class DatalyrSDKExpo {
662
560
  if (contentIds) properties.content_ids = contentIds;
663
561
 
664
562
  await this.track('search', properties);
665
-
666
- if (metaIntegration.isAvailable()) {
667
- metaIntegration.logEvent('Search', properties);
668
- }
669
- if (tiktokIntegration.isAvailable()) {
670
- tiktokIntegration.logSearch(searchString, contentIds);
671
- }
672
563
  }
673
564
 
674
565
  async trackLead(value?: number, currency?: string): Promise<void> {
@@ -677,13 +568,6 @@ export class DatalyrSDKExpo {
677
568
  if (currency) properties.currency = currency;
678
569
 
679
570
  await this.track('lead', properties);
680
-
681
- if (metaIntegration.isAvailable()) {
682
- metaIntegration.logEvent('Lead', properties);
683
- }
684
- if (tiktokIntegration.isAvailable()) {
685
- tiktokIntegration.logLead(value, currency);
686
- }
687
571
  }
688
572
 
689
573
  async trackAddPaymentInfo(success?: boolean): Promise<void> {
@@ -691,28 +575,16 @@ export class DatalyrSDKExpo {
691
575
  if (success !== undefined) properties.success = success;
692
576
 
693
577
  await this.track('add_payment_info', properties);
694
-
695
- if (metaIntegration.isAvailable()) {
696
- metaIntegration.logEvent('AddPaymentInfo', properties);
697
- }
698
- if (tiktokIntegration.isAvailable()) {
699
- tiktokIntegration.logAddPaymentInfo(success);
700
- }
701
578
  }
702
579
 
703
580
  // Platform integration methods
704
581
 
705
582
  getDeferredAttributionData(): DeferredDeepLinkResult | null {
706
- if (metaIntegration.isAvailable()) {
707
- return metaIntegration.getDeferredDeepLinkData();
708
- }
709
583
  return null;
710
584
  }
711
585
 
712
- getPlatformIntegrationStatus(): { meta: boolean; tiktok: boolean; appleSearchAds: boolean; playInstallReferrer: boolean } {
586
+ getPlatformIntegrationStatus(): { appleSearchAds: boolean; playInstallReferrer: boolean } {
713
587
  return {
714
- meta: metaIntegration.isAvailable(),
715
- tiktok: tiktokIntegration.isAvailable(),
716
588
  appleSearchAds: appleSearchAdsIntegration.isAvailable(),
717
589
  playInstallReferrer: playInstallReferrerIntegration.isAvailable(),
718
590
  };
@@ -735,13 +607,6 @@ export class DatalyrSDKExpo {
735
607
  }
736
608
 
737
609
  async updateTrackingAuthorization(authorized: boolean): Promise<void> {
738
- if (metaIntegration.isAvailable()) {
739
- metaIntegration.updateTrackingAuthorization(authorized);
740
- }
741
- if (tiktokIntegration.isAvailable()) {
742
- tiktokIntegration.updateTrackingAuthorization(authorized);
743
- }
744
-
745
610
  // Refresh cached advertiser info after ATT status change
746
611
  try {
747
612
  this.cachedAdvertiserInfo = await AdvertiserInfoBridge.getAdvertiserInfo();
@@ -835,9 +700,9 @@ export class DatalyrSDKExpo {
835
700
  carrier: deviceInfo.carrier,
836
701
  network_type: networkType,
837
702
  timestamp: Date.now(),
838
- sdk_version: '1.4.9',
703
+ sdk_version: '1.6.0',
839
704
  sdk_variant: 'expo',
840
- // Advertiser data (IDFA/GAID, ATT status) for Meta CAPI / TikTok Events API
705
+ // Advertiser data (IDFA/GAID, ATT status) for server-side postback
841
706
  ...(advertiserInfo ? {
842
707
  idfa: advertiserInfo.idfa,
843
708
  idfv: advertiserInfo.idfv,
@@ -1080,7 +945,7 @@ export class DatalyrExpo {
1080
945
  return datalyrExpo.getDeferredAttributionData();
1081
946
  }
1082
947
 
1083
- static getPlatformIntegrationStatus(): { meta: boolean; tiktok: boolean; appleSearchAds: boolean; playInstallReferrer: boolean } {
948
+ static getPlatformIntegrationStatus(): { appleSearchAds: boolean; playInstallReferrer: boolean } {
1084
949
  return datalyrExpo.getPlatformIntegrationStatus();
1085
950
  }
1086
951