@formo/analytics-react-native 1.0.0 → 1.0.2

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 (63) hide show
  1. package/lib/commonjs/FormoAnalytics.js +141 -12
  2. package/lib/commonjs/FormoAnalytics.js.map +1 -1
  3. package/lib/commonjs/FormoAnalyticsProvider.js +3 -0
  4. package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -1
  5. package/lib/commonjs/constants/events.js +30 -3
  6. package/lib/commonjs/constants/events.js.map +1 -1
  7. package/lib/commonjs/lib/crash/index.js +121 -0
  8. package/lib/commonjs/lib/crash/index.js.map +1 -0
  9. package/lib/commonjs/lib/event/EventFactory.js +88 -8
  10. package/lib/commonjs/lib/event/EventFactory.js.map +1 -1
  11. package/lib/commonjs/lib/lifecycle/index.js +29 -6
  12. package/lib/commonjs/lib/lifecycle/index.js.map +1 -1
  13. package/lib/commonjs/version.js +1 -1
  14. package/lib/module/FormoAnalytics.js +138 -8
  15. package/lib/module/FormoAnalytics.js.map +1 -1
  16. package/lib/module/FormoAnalyticsProvider.js +3 -0
  17. package/lib/module/FormoAnalyticsProvider.js.map +1 -1
  18. package/lib/module/constants/events.js +29 -2
  19. package/lib/module/constants/events.js.map +1 -1
  20. package/lib/module/lib/crash/index.js +117 -0
  21. package/lib/module/lib/crash/index.js.map +1 -0
  22. package/lib/module/lib/event/EventFactory.js +86 -8
  23. package/lib/module/lib/event/EventFactory.js.map +1 -1
  24. package/lib/module/lib/lifecycle/index.js +29 -6
  25. package/lib/module/lib/lifecycle/index.js.map +1 -1
  26. package/lib/module/version.js +1 -1
  27. package/lib/typescript/commonjs/FormoAnalytics.d.ts +52 -1
  28. package/lib/typescript/commonjs/FormoAnalytics.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/FormoAnalyticsProvider.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/constants/events.d.ts +23 -0
  31. package/lib/typescript/commonjs/constants/events.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/lib/crash/index.d.ts +41 -0
  33. package/lib/typescript/commonjs/lib/crash/index.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/lib/event/EventFactory.d.ts +26 -7
  35. package/lib/typescript/commonjs/lib/event/EventFactory.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/lib/lifecycle/index.d.ts +10 -0
  37. package/lib/typescript/commonjs/lib/lifecycle/index.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/types/base.d.ts +40 -0
  39. package/lib/typescript/commonjs/types/base.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/version.d.ts +1 -1
  41. package/lib/typescript/module/FormoAnalytics.d.ts +52 -1
  42. package/lib/typescript/module/FormoAnalytics.d.ts.map +1 -1
  43. package/lib/typescript/module/FormoAnalyticsProvider.d.ts.map +1 -1
  44. package/lib/typescript/module/constants/events.d.ts +23 -0
  45. package/lib/typescript/module/constants/events.d.ts.map +1 -1
  46. package/lib/typescript/module/lib/crash/index.d.ts +41 -0
  47. package/lib/typescript/module/lib/crash/index.d.ts.map +1 -0
  48. package/lib/typescript/module/lib/event/EventFactory.d.ts +26 -7
  49. package/lib/typescript/module/lib/event/EventFactory.d.ts.map +1 -1
  50. package/lib/typescript/module/lib/lifecycle/index.d.ts +10 -0
  51. package/lib/typescript/module/lib/lifecycle/index.d.ts.map +1 -1
  52. package/lib/typescript/module/types/base.d.ts +40 -0
  53. package/lib/typescript/module/types/base.d.ts.map +1 -1
  54. package/lib/typescript/module/version.d.ts +1 -1
  55. package/package.json +8 -8
  56. package/src/FormoAnalytics.ts +151 -8
  57. package/src/FormoAnalyticsProvider.tsx +3 -0
  58. package/src/constants/events.ts +32 -2
  59. package/src/lib/crash/index.ts +145 -0
  60. package/src/lib/event/EventFactory.ts +115 -21
  61. package/src/lib/lifecycle/index.ts +35 -6
  62. package/src/types/base.ts +47 -0
  63. package/src/version.ts +1 -1
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.EventFactory = void 0;
7
+ exports.buildScreenUrl = buildScreenUrl;
7
8
  exports.getSessionId = getSessionId;
9
+ exports.resolveExpoDeviceType = resolveExpoDeviceType;
8
10
  exports.synthesizeUserAgent = synthesizeUserAgent;
9
11
  var _reactNative = require("react-native");
10
12
  var _netinfo = _interopRequireDefault(require("@react-native-community/netinfo"));
@@ -92,6 +94,49 @@ function getSessionId() {
92
94
  * containing the tokens the classifier keys off (iphone/ipad/android + version)
93
95
  * so mobile device and OS resolve correctly. Returns "" for unknown platforms.
94
96
  */
97
+ /**
98
+ * Resolve `device_type` from expo-device's `deviceType` enum.
99
+ *
100
+ * Extracted and guarded because the Expo branch of getDeviceInfo() runs when
101
+ * EITHER expo-device or expo-application is installed, so `deviceType` may be
102
+ * undefined. A bare `deviceType === DeviceType.TABLET` is then
103
+ * `undefined === undefined` — true — and every device reports as a tablet,
104
+ * which also flips the synthesized user agent to iPad/Tablet and corrupts
105
+ * device breakdowns downstream. Unknown means "mobile", the safe default for a
106
+ * React Native app.
107
+ */
108
+
109
+ /**
110
+ * Compose a screen view's `page_url` as `app://<bundle id>/<screen>`.
111
+ *
112
+ * Well-formed on purpose: the bundle id occupies the authority slot and the
113
+ * screen the path, so a standard URL parser yields both without any
114
+ * mobile-specific handling — the same shape as `https://<host>/<path>`.
115
+ *
116
+ * @param bundleId Application bundle id, e.g. "com.acme.wallet". When empty the
117
+ * authority is omitted (`app:///<screen>`), which still parses to a correct
118
+ * path; the pipeline resolves origin from context in that case.
119
+ * @param name Screen name. Leading slashes are stripped so a router-style name
120
+ * ("/tabs/leaderboard") does not produce a doubled separator.
121
+ */
122
+ function buildScreenUrl(bundleId, name) {
123
+ const screen = (name ?? "").replace(/^\/+/, "")
124
+ // Percent-encode the characters that would otherwise change the URL's
125
+ // STRUCTURE rather than its path. '?' starts a query and '#' a fragment, so
126
+ // screen("Checkout?coupon=X") would parse with pathname "/Checkout" and the
127
+ // rest silently dropped from the screen name. '/' is deliberately NOT
128
+ // encoded — router-style names like "/tabs/leaderboard" are meant to be
129
+ // path segments.
130
+ // '%' FIRST, so the transform stays injective. Without it a screen literally
131
+ // named "Checkout%3Fx" and one named "Checkout?x" both produce
132
+ // ".../Checkout%3Fx" and two distinct screens merge in the analytics.
133
+ .replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23");
134
+ return `app://${bundleId ?? ""}/${screen}`;
135
+ }
136
+ function resolveExpoDeviceType(deviceType, tabletEnumValue) {
137
+ if (deviceType == null || tabletEnumValue == null) return "mobile";
138
+ return deviceType === tabletEnumValue ? "tablet" : "mobile";
139
+ }
95
140
  function synthesizeUserAgent(info) {
96
141
  const os = (info.os_name || "").toLowerCase();
97
142
  const version = info.os_version || "";
@@ -114,6 +159,8 @@ function synthesizeUserAgent(info) {
114
159
  * Creates event payloads with mobile-specific context
115
160
  */
116
161
  class EventFactory {
162
+ /** Memoised device/app identity — see getDeviceInfo(). */
163
+
117
164
  constructor(options) {
118
165
  this.options = options;
119
166
  }
@@ -221,7 +268,28 @@ class EventFactory {
221
268
  * Get device information
222
269
  * Supports both react-native-device-info (bare RN) and expo-device/expo-application (Expo Go)
223
270
  */
271
+ /**
272
+ * The app bundle id as it will appear in context.
273
+ *
274
+ * Must mirror generateContext's precedence: an explicitly configured
275
+ * `options.app.bundleId` overrides whatever the native modules report. Reading
276
+ * getDeviceInfo() alone would ignore that configuration and silently fall back
277
+ * to the authority-less URL form — and on React Native Web, where neither
278
+ * react-native-device-info nor expo-application resolves a bundle id, that is
279
+ * the ONLY value available.
280
+ */
281
+ async resolveAppBundleId() {
282
+ return this.options?.app?.bundleId || (await this.getDeviceInfo()).app_bundle_id || "";
283
+ }
224
284
  async getDeviceInfo() {
285
+ // Device and app identity do not change for the lifetime of the process,
286
+ // and resolving them crosses the native bridge. Memoise the promise so
287
+ // every event after the first is free, and so callers that need only the
288
+ // app identifier (screen events) can ask without paying twice.
289
+ this.deviceInfoPromise ??= this.resolveDeviceInfo();
290
+ return this.deviceInfoPromise;
291
+ }
292
+ async resolveDeviceInfo() {
225
293
  // Try react-native-device-info first (bare RN and Expo dev builds)
226
294
  if (DeviceInfo) {
227
295
  try {
@@ -255,11 +323,10 @@ class EventFactory {
255
323
  // Fall back to Expo modules (Expo Go)
256
324
  if (ExpoDevice || ExpoApplication) {
257
325
  try {
258
- const isTablet = ExpoDevice?.deviceType === ExpoDevice?.DeviceType?.TABLET;
259
326
  const os_name = ExpoDevice?.osName || _reactNative.Platform.OS;
260
327
  const os_version = ExpoDevice?.osVersion || String(_reactNative.Platform.Version);
261
328
  const device_model = ExpoDevice?.modelName || "Unknown";
262
- const device_type = isTablet ? "tablet" : "mobile";
329
+ const device_type = resolveExpoDeviceType(ExpoDevice?.deviceType, ExpoDevice?.DeviceType?.TABLET);
263
330
  return {
264
331
  os_name,
265
332
  os_version,
@@ -406,15 +473,28 @@ class EventFactory {
406
473
  };
407
474
 
408
475
  // Map screen name to page-equivalent context fields so mobile screens flow
409
- // through the same analytics as web page views. The screen name is emitted
410
- // as-is in the app:// URL; the ingestion pipeline derives `origin` (from the
411
- // app identifier in context app_name / app_bundle_id) and `page_path` (by
412
- // stripping the app:// scheme), so the SDK deliberately does NOT encode a
413
- // host here (see backend mobile page-event handling, P-2070).
476
+ // through the same analytics as web page views.
477
+ //
478
+ // The URL is app://<bundle id>/<screen>, which is a WELL-FORMED URL: the
479
+ // bundle id is the authority and the screen is the path, exactly mirroring
480
+ // https://<host>/<path> on web. That is what lets the ingestion pipeline
481
+ // parse it with the same URL functions it uses for web — the authority
482
+ // becomes `origin` and the path becomes `page_path`, with no mobile
483
+ // special-casing.
484
+ //
485
+ // The earlier form was app://<screen>, which is malformed: the screen name
486
+ // lands in the authority slot and there is no path at all, so a URL parser
487
+ // yields an empty path and the pipeline had to reconstruct both fields by
488
+ // hand. The bundle id is also the right choice of authority because, like a
489
+ // hostname, it is stable and globally unique — a display name is neither.
490
+ //
491
+ // Falls back to an empty authority (app:///<screen>) when the bundle id is
492
+ // unavailable, which keeps the path parseable and lets the pipeline resolve
493
+ // origin from context instead.
414
494
  // User-supplied context values take precedence (spread last).
415
495
  const screenContext = {
416
496
  page_title: name,
417
- page_url: `app://${name}`,
497
+ page_url: buildScreenUrl(await this.resolveAppBundleId(), name),
418
498
  ...(context ?? {})
419
499
  };
420
500
  const screenEvent = {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_netinfo","_interopRequireDefault","_index","_index2","_timestamp","_hash","_index3","_index4","_version","e","__esModule","default","DeviceInfo","ExpoDevice","ExpoApplication","generateAnonymousId","key","existing","storage","get","newId","generateUUID","set","getSessionId","now","Date","existingId","LOCAL_SESSION_ID_KEY","lastActivityRaw","LOCAL_SESSION_LAST_ACTIVITY_KEY","lastActivity","parseInt","isExpired","SESSION_TIMEOUT_MS","sessionId","String","synthesizeUserAgent","info","os","os_name","toLowerCase","version","os_version","model","device_model","isTablet","device_type","device","osVersion","replace","formFactor","EventFactory","constructor","options","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","logger","getLocation","timezone","COUNTRY_LIST","getLanguage","locale","Platform","OS","NativeModules","SettingsManager","settings","AppleLocale","AppleLanguages","I18nManager","localeIdentifier","debug","getScreen","width","height","scale","Dimensions","screen_width","Math","round","screen_height","screen_density","getNetworkInfo","netState","NetInfo","fetch","networkInfo","type","network_wifi","network_cellular","details","network_carrier","carrier","undefined","getDeviceInfo","manufacturer","deviceName","userAgent","Promise","all","getModel","getManufacturer","getDeviceName","getUserAgent","getSystemVersion","device_manufacturer","device_name","user_agent","app_name","getApplicationName","app_version","getVersion","app_build","getBuildNumber","app_bundle_id","getBundleId","deviceType","DeviceType","TABLET","osName","Version","modelName","applicationName","nativeApplicationVersion","nativeBuildVersion","applicationId","generateContext","context","language","location","deviceInfo","screenInfo","storedTrafficSource","getStoredTrafficSource","defaultContext","library_name","library_version","SDK_VERSION","app","name","build","bundleId","mergedContext","mergeDeepRight","getEnrichedEvent","formoEvent","commonEventData","original_timestamp","getCurrentTimeFormatted","user_id","channel","CHANNEL","VERSION","anonymous_id","LOCAL_ANONYMOUS_ID_KEY","session_id","validAddress","address","validateAddress","processedEvent","event","properties","functionArgs","function_args","converted","toSnakeCase","generateScreenEvent","category","props","screenContext","page_title","page_url","screenEvent","generateDetectWalletEvent","providerName","rdns","detectEvent","generateIdentifyEvent","userId","identifyEvent","generateConnectEvent","chainId","connectEvent","generateDisconnectEvent","disconnectEvent","generateChainChangedEvent","chainEvent","generateSignatureEvent","status","message","signatureEvent","generateTransactionEvent","data","to","value","transactionHash","function_name","transactionEvent","generateTrackEvent","trackEvent","revenue","Number","currency","points","volume","create","exports"],"sourceRoot":"../../../../src","sources":["lib/event/EventFactory.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_netinfo","_interopRequireDefault","_index","_index2","_timestamp","_hash","_index3","_index4","_version","e","__esModule","default","DeviceInfo","ExpoDevice","ExpoApplication","generateAnonymousId","key","existing","storage","get","newId","generateUUID","set","getSessionId","now","Date","existingId","LOCAL_SESSION_ID_KEY","lastActivityRaw","LOCAL_SESSION_LAST_ACTIVITY_KEY","lastActivity","parseInt","isExpired","SESSION_TIMEOUT_MS","sessionId","String","buildScreenUrl","bundleId","name","screen","replace","resolveExpoDeviceType","deviceType","tabletEnumValue","synthesizeUserAgent","info","os","os_name","toLowerCase","version","os_version","model","device_model","isTablet","device_type","device","osVersion","formFactor","EventFactory","constructor","options","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","logger","getLocation","timezone","COUNTRY_LIST","getLanguage","locale","Platform","OS","NativeModules","SettingsManager","settings","AppleLocale","AppleLanguages","I18nManager","localeIdentifier","debug","getScreen","width","height","scale","Dimensions","screen_width","Math","round","screen_height","screen_density","getNetworkInfo","netState","NetInfo","fetch","networkInfo","type","network_wifi","network_cellular","details","network_carrier","carrier","undefined","resolveAppBundleId","app","getDeviceInfo","app_bundle_id","deviceInfoPromise","resolveDeviceInfo","manufacturer","deviceName","userAgent","Promise","all","getModel","getManufacturer","getDeviceName","getUserAgent","getSystemVersion","device_manufacturer","device_name","user_agent","app_name","getApplicationName","app_version","getVersion","app_build","getBuildNumber","getBundleId","osName","Version","modelName","DeviceType","TABLET","applicationName","nativeApplicationVersion","nativeBuildVersion","applicationId","generateContext","context","language","location","deviceInfo","screenInfo","storedTrafficSource","getStoredTrafficSource","defaultContext","library_name","library_version","SDK_VERSION","build","mergedContext","mergeDeepRight","getEnrichedEvent","formoEvent","commonEventData","original_timestamp","getCurrentTimeFormatted","user_id","channel","CHANNEL","VERSION","anonymous_id","LOCAL_ANONYMOUS_ID_KEY","session_id","validAddress","address","validateAddress","processedEvent","event","properties","functionArgs","function_args","converted","toSnakeCase","generateScreenEvent","category","props","screenContext","page_title","page_url","screenEvent","generateDetectWalletEvent","providerName","rdns","detectEvent","generateIdentifyEvent","userId","identifyEvent","generateConnectEvent","chainId","connectEvent","generateDisconnectEvent","disconnectEvent","generateChainChangedEvent","chainEvent","generateSignatureEvent","status","message","signatureEvent","generateTransactionEvent","data","to","value","transactionHash","function_name","transactionEvent","generateTrackEvent","trackEvent","revenue","Number","currency","points","volume","create","exports"],"sourceRoot":"../../../../src","sources":["lib/event/EventFactory.ts"],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,7 @@ var _index = require("../logger/index.js");
9
9
  var _index2 = require("../storage/index.js");
10
10
  var _storage = require("../../constants/storage.js");
11
11
  var _trafficSource = require("../../utils/trafficSource.js");
12
+ var _events = require("../../constants/events.js");
12
13
  /**
13
14
  * Application Lifecycle Event Manager
14
15
  *
@@ -17,8 +18,15 @@ var _trafficSource = require("../../utils/trafficSource.js");
17
18
  * - Application Updated (version/build changed)
18
19
  * - Application Opened (every cold start + foreground return)
19
20
  * - Application Backgrounded (app goes to background)
21
+ * - Application Foregrounded (foreground return; opt-in, see AutocaptureOptions)
20
22
  *
21
23
  * Detection is JS-side using AsyncStorage (no native modules required).
24
+ *
25
+ * The remaining spec events live outside this manager because they are not
26
+ * AppState-driven: `Deep Link Opened` is emitted from the Linking hook in
27
+ * FormoAnalytics, `Application Crashed` from lib/crash, and the push
28
+ * notification events from explicit FormoAnalytics methods (the SDK cannot
29
+ * observe push delivery without a native module).
22
30
  */
23
31
 
24
32
  /** Interface for the analytics instance to avoid circular deps */
@@ -71,6 +79,7 @@ class AppLifecycleManager {
71
79
  version: "",
72
80
  build: ""
73
81
  };
82
+ trackForegrounded = false;
74
83
  constructor(analytics) {
75
84
  this.analytics = analytics;
76
85
  }
@@ -79,7 +88,8 @@ class AppLifecycleManager {
79
88
  * Initialize lifecycle tracking.
80
89
  * Detects install/update, fires Application Opened, and sets up AppState listener.
81
90
  */
82
- async start(appOptions) {
91
+ async start(appOptions, options) {
92
+ this.trackForegrounded = options?.trackForegrounded ?? false;
83
93
  this.appVersionInfo = await resolveAppVersionInfo(appOptions);
84
94
 
85
95
  // Detect install vs update
@@ -95,7 +105,7 @@ class AppLifecycleManager {
95
105
  } catch {
96
106
  // Linking not available
97
107
  }
98
- await this.analytics.track("Application Opened", {
108
+ await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_OPENED, {
99
109
  version: this.appVersionInfo.version,
100
110
  build: this.appVersionInfo.build,
101
111
  from_background: false,
@@ -135,7 +145,7 @@ class AppLifecycleManager {
135
145
  const trafficSource = (0, _trafficSource.getStoredTrafficSource)() ?? {};
136
146
  const attribution = Object.fromEntries(Object.entries(trafficSource).filter(([, value]) => Boolean(value)));
137
147
  _index.logger.info("AppLifecycleManager: Application Installed");
138
- await this.analytics.track("Application Installed", {
148
+ await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_INSTALLED, {
139
149
  version,
140
150
  build,
141
151
  ...attribution
@@ -143,7 +153,7 @@ class AppLifecycleManager {
143
153
  } else if (previousVersion !== version || previousBuild !== build) {
144
154
  // Version or build changed — update
145
155
  _index.logger.info("AppLifecycleManager: Application Updated");
146
- await this.analytics.track("Application Updated", {
156
+ await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_UPDATED, {
147
157
  version,
148
158
  build,
149
159
  previous_version: previousVersion || "",
@@ -168,17 +178,30 @@ class AppLifecycleManager {
168
178
  }
169
179
  if (nextAppState === "active" && this.lastAppState === "background") {
170
180
  // Returning from background
171
- this.analytics.track("Application Opened", {
181
+ this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_OPENED, {
172
182
  version: this.appVersionInfo.version,
173
183
  build: this.appVersionInfo.build,
174
184
  from_background: true
175
185
  }).catch(error => {
176
186
  _index.logger.error("AppLifecycleManager: Error tracking Application Opened", error);
177
187
  });
188
+
189
+ // The Segment spec's dedicated name for this same transition. Opt-in,
190
+ // because emitting it alongside Application Opened doubles foreground
191
+ // volume for no extra information — it exists for consumers that key on
192
+ // the spec name rather than on `from_background`.
193
+ if (this.trackForegrounded) {
194
+ this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_FOREGROUNDED, {
195
+ version: this.appVersionInfo.version,
196
+ build: this.appVersionInfo.build
197
+ }).catch(error => {
198
+ _index.logger.error("AppLifecycleManager: Error tracking Application Foregrounded", error);
199
+ });
200
+ }
178
201
  }
179
202
  if (nextAppState === "background" && this.lastAppState === "active") {
180
203
  // Going to background
181
- this.analytics.track("Application Backgrounded", {
204
+ this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_BACKGROUNDED, {
182
205
  version: this.appVersionInfo.version,
183
206
  build: this.appVersionInfo.build
184
207
  }).catch(error => {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_index","_index2","_storage","_trafficSource","resolveAppVersionInfo","appOptions","version","build","DeviceInfo","default","getVersion","getBuildNumber","ExpoApplication","nativeApplicationVersion","nativeBuildVersion","AppLifecycleManager","appStateSubscription","lastAppState","AppState","currentState","appVersionInfo","constructor","analytics","start","detectInstallOrUpdate","initialUrl","url","Linking","getInitialURL","track","from_background","addEventListener","handleAppStateChange","bind","logger","info","manager","getStorageManager","hasPersistentStorage","warn","previousVersion","storage","get","LOCAL_APP_VERSION_KEY","previousBuild","LOCAL_APP_BUILD_KEY","trafficSource","getStoredTrafficSource","attribution","Object","fromEntries","entries","filter","value","Boolean","previous_version","previous_build","setAsync","nextAppState","catch","error","cleanup","remove","exports"],"sourceRoot":"../../../../src","sources":["lib/lifecycle/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_index","_index2","_storage","_trafficSource","_events","resolveAppVersionInfo","appOptions","version","build","DeviceInfo","default","getVersion","getBuildNumber","ExpoApplication","nativeApplicationVersion","nativeBuildVersion","AppLifecycleManager","appStateSubscription","lastAppState","AppState","currentState","appVersionInfo","trackForegrounded","constructor","analytics","start","options","detectInstallOrUpdate","initialUrl","url","Linking","getInitialURL","track","LIFECYCLE_EVENT","APPLICATION_OPENED","from_background","addEventListener","handleAppStateChange","bind","logger","info","manager","getStorageManager","hasPersistentStorage","warn","previousVersion","storage","get","LOCAL_APP_VERSION_KEY","previousBuild","LOCAL_APP_BUILD_KEY","trafficSource","getStoredTrafficSource","attribution","Object","fromEntries","entries","filter","value","Boolean","APPLICATION_INSTALLED","APPLICATION_UPDATED","previous_version","previous_build","setAsync","nextAppState","catch","error","APPLICATION_FOREGROUNDED","APPLICATION_BACKGROUNDED","cleanup","remove","exports"],"sourceRoot":"../../../../src","sources":["lib/lifecycle/index.ts"],"mappings":"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","ignoreList":[]}
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.version = void 0;
7
7
  // This file is auto-generated by scripts/update-version.js during npm version
8
8
  // Do not edit manually - it will be overwritten
9
- const version = exports.version = '1.0.0';
9
+ const version = exports.version = '1.0.2';
10
10
  //# sourceMappingURL=version.js.map
@@ -7,6 +7,7 @@
7
7
  */
8
8
 
9
9
  import { EVENTS_API_HOST, EventType, LOCAL_ANONYMOUS_ID_KEY, LOCAL_SESSION_ID_KEY, LOCAL_SESSION_LAST_ACTIVITY_KEY, SESSION_USER_ID_KEY, CONSENT_OPT_OUT_KEY } from "./constants/index.js";
10
+ import { LIFECYCLE_EVENT } from "./constants/events.js";
10
11
  import { initStorageManager, storage } from "./lib/storage/index.js";
11
12
  import { EventManager, EventQueue } from "./lib/event/index.js";
12
13
  import { logger, Logger } from "./lib/logger/index.js";
@@ -14,10 +15,18 @@ import { setConsentFlag, getConsentFlag, removeConsentFlag } from "./lib/consent
14
15
  import { FormoAnalyticsSession } from "./lib/session/index.js";
15
16
  import { WagmiEventHandler } from "./lib/wagmi/index.js";
16
17
  import { AppLifecycleManager } from "./lib/lifecycle/index.js";
18
+ import { CrashReporter } from "./lib/crash/index.js";
17
19
  import { validateAddress } from "./utils/index.js";
18
20
  import { parseTrafficSource, updateStoredTrafficSource } from "./utils/trafficSource.js";
19
21
  import { captureInstallReferrer } from "./lib/installReferrer/index.js";
20
22
  import { Linking } from "react-native";
23
+
24
+ /**
25
+ * Autocapture behaviors that are OFF unless explicitly enabled, because
26
+ * turning them on by default would change how an existing app behaves after a
27
+ * routine SDK upgrade. See AutocaptureOptions for the reasoning per option.
28
+ */
29
+ const OPT_IN_AUTOCAPTURE = new Set(["foregrounded", "crashes"]);
21
30
  export class FormoAnalytics {
22
31
  currentUserId = "";
23
32
  constructor(writeKey, options = {}) {
@@ -97,7 +106,13 @@ export class FormoAnalytics {
97
106
  // is a fast native bridge call; the Android Play Install Referrer is a fast
98
107
  // one-shot native call (and no-ops instantly when the native module or the
99
108
  // platform isn't Android), so awaiting it does not meaningfully delay init.
100
- if (analytics.isAttributionEnabled("deeplinks")) {
109
+ // Hook Linking if EITHER consumer needs it. The two flags control different
110
+ // things — attribution.deeplinks parses UTMs into context, autocapture
111
+ // .deepLinks emits Deep Link Opened — but both depend on observing the link
112
+ // in the first place. Gating the hook on attribution alone silently
113
+ // disabled the event for anyone who turned attribution off, with no
114
+ // indication that an unrelated setting was responsible.
115
+ if (analytics.isAttributionEnabled("deeplinks") || analytics.isAutocaptureEnabled("deepLinks")) {
101
116
  try {
102
117
  await analytics.startDeepLinkCapture();
103
118
  } catch (error) {
@@ -120,12 +135,32 @@ export class FormoAnalytics {
120
135
  if (analytics.isAutocaptureEnabled("lifecycle")) {
121
136
  try {
122
137
  analytics.lifecycleManager = new AppLifecycleManager(analytics);
123
- await analytics.lifecycleManager.start(options?.app);
138
+ await analytics.lifecycleManager.start(options?.app, {
139
+ trackForegrounded: analytics.isAutocaptureEnabled("foregrounded")
140
+ });
124
141
  } catch (error) {
125
142
  logger.error("FormoAnalytics: Failed to initialize lifecycle tracking", error);
126
143
  }
127
144
  }
128
145
 
146
+ // Emit Deep Link Opened for the launch URL AFTER lifecycle tracking, so it
147
+ // follows Application Opened as the Segment spec orders it.
148
+ try {
149
+ await analytics.trackInitialDeepLink();
150
+ } catch (error) {
151
+ logger.error("FormoAnalytics: Failed to track initial deep link", error);
152
+ }
153
+
154
+ // Opt-in: installs a global JS error handler (chained, never swallowing).
155
+ if (analytics.isAutocaptureEnabled("crashes")) {
156
+ try {
157
+ analytics.crashReporter = new CrashReporter(analytics);
158
+ analytics.crashReporter.start();
159
+ } catch (error) {
160
+ logger.error("FormoAnalytics: Failed to initialize crash tracking", error);
161
+ }
162
+ }
163
+
129
164
  // Call ready callback
130
165
  if (options?.ready) {
131
166
  options.ready(analytics);
@@ -141,17 +176,98 @@ export class FormoAnalytics {
141
176
  async startDeepLinkCapture() {
142
177
  try {
143
178
  const url = await Linking.getInitialURL();
144
- if (url) this.setTrafficSourceFromUrl(url);
179
+ if (url) {
180
+ if (this.isAttributionEnabled("deeplinks")) {
181
+ this.setTrafficSourceFromUrl(url);
182
+ }
183
+ // Held, not emitted: this runs before lifecycle tracking starts, and
184
+ // the Segment spec orders `Deep Link Opened` after `Application
185
+ // Opened`. Emitted by trackInitialDeepLink() once lifecycle has fired.
186
+ this.initialDeepLinkUrl = url;
187
+ }
145
188
  } catch (error) {
146
189
  logger.debug("FormoAnalytics: Linking.getInitialURL failed", error);
147
190
  }
148
191
 
149
192
  // Runtime deep links (foreground opens, universal links).
150
193
  this.linkingSubscription = Linking.addEventListener("url", event => {
151
- if (event?.url) this.setTrafficSourceFromUrl(event.url);
194
+ if (!event?.url) return;
195
+ // Each behaviour checks its own flag: the hook may exist because only one
196
+ // of them is enabled.
197
+ if (this.isAttributionEnabled("deeplinks")) {
198
+ this.setTrafficSourceFromUrl(event.url);
199
+ }
200
+ void this.trackDeepLinkOpened(event.url);
152
201
  });
153
202
  }
154
203
 
204
+ /**
205
+ * Emit `Deep Link Opened` for the URL the app was launched with, if any.
206
+ * Separate from capture so it can be ordered after `Application Opened`.
207
+ */
208
+ async trackInitialDeepLink() {
209
+ const url = this.initialDeepLinkUrl;
210
+ this.initialDeepLinkUrl = undefined;
211
+ if (url) await this.trackDeepLinkOpened(url);
212
+ }
213
+
214
+ /**
215
+ * Emit the Segment-spec `Deep Link Opened` event.
216
+ *
217
+ * `provider` is deliberately omitted: the spec uses it to name the
218
+ * attribution provider that resolved the link (Branch, Adjust, …). The SDK
219
+ * reads the link straight from React Native's Linking API, so there is no
220
+ * provider to name, and emitting a placeholder would misreport the source.
221
+ */
222
+ async trackDeepLinkOpened(url) {
223
+ if (!this.isAutocaptureEnabled("deepLinks")) return;
224
+ try {
225
+ await this.track(LIFECYCLE_EVENT.DEEP_LINK_OPENED, {
226
+ url
227
+ });
228
+ } catch (error) {
229
+ logger.error("FormoAnalytics: Error tracking Deep Link Opened", error);
230
+ }
231
+ }
232
+
233
+ /**
234
+ * Track that a push notification was delivered to the device.
235
+ *
236
+ * Push delivery cannot be observed without a native module, so the SDK
237
+ * cannot autocapture these — call this from your push handler
238
+ * (`@react-native-firebase/messaging`, `expo-notifications`, …).
239
+ *
240
+ * @param properties Segment's push spec suggests `campaign_id`, `campaign_name`,
241
+ * `message_id`, `action` and `title`/`body`. Any properties are accepted.
242
+ *
243
+ * @example
244
+ * ```tsx
245
+ * messaging().onMessage(async (message) => {
246
+ * await formo.pushNotificationReceived({ message_id: message.messageId });
247
+ * });
248
+ * ```
249
+ */
250
+ async pushNotificationReceived(properties) {
251
+ await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_RECEIVED, properties);
252
+ }
253
+
254
+ /**
255
+ * Track that the user opened the app by tapping a push notification.
256
+ * See {@link pushNotificationReceived} for why this is not autocaptured.
257
+ */
258
+ async pushNotificationTapped(properties) {
259
+ await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_TAPPED, properties);
260
+ }
261
+
262
+ /**
263
+ * Track that a push notification was not delivered — e.g. the OS suppressed
264
+ * it, or the device token was rejected.
265
+ * See {@link pushNotificationReceived} for why this is not autocaptured.
266
+ */
267
+ async pushNotificationBounced(properties) {
268
+ await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_BOUNCED, properties);
269
+ }
270
+
155
271
  /**
156
272
  * Track a screen view (mobile equivalent of page view)
157
273
  */
@@ -213,6 +329,10 @@ export class FormoAnalytics {
213
329
  */
214
330
  async cleanup() {
215
331
  logger.info("FormoAnalytics: Cleaning up resources");
332
+ if (this.crashReporter) {
333
+ this.crashReporter.cleanup();
334
+ this.crashReporter = undefined;
335
+ }
216
336
  if (this.lifecycleManager) {
217
337
  this.lifecycleManager.cleanup();
218
338
  this.lifecycleManager = undefined;
@@ -487,19 +607,29 @@ export class FormoAnalytics {
487
607
  * Applies only to event-generating behaviors (wallet events, lifecycle
488
608
  * events). Attribution is controlled separately via `options.attribution`
489
609
  * because it enriches events rather than generating them.
610
+ *
611
+ * Most behaviors are on unless explicitly disabled. The two in
612
+ * {@link OPT_IN_AUTOCAPTURE} invert that and require an explicit `true`,
613
+ * because switching them on by default would change existing apps on a
614
+ * version bump: `foregrounded` doubles foreground event volume, and
615
+ * `crashes` installs a global error handler.
490
616
  */
491
617
  isAutocaptureEnabled(eventType) {
618
+ const isOptIn = OPT_IN_AUTOCAPTURE.has(eventType);
492
619
  if (this.options.autocapture === undefined) {
493
- return true;
620
+ return !isOptIn;
494
621
  }
622
+
623
+ // `autocapture: true` means "the usual set", not "everything including the
624
+ // opt-in behaviors" — those still need naming individually.
495
625
  if (typeof this.options.autocapture === "boolean") {
496
- return this.options.autocapture;
626
+ return this.options.autocapture && !isOptIn;
497
627
  }
498
628
  if (this.options.autocapture !== null && typeof this.options.autocapture === "object") {
499
629
  const eventConfig = this.options.autocapture[eventType];
500
- return eventConfig !== false;
630
+ return isOptIn ? eventConfig === true : eventConfig !== false;
501
631
  }
502
- return true;
632
+ return !isOptIn;
503
633
  }
504
634
 
505
635
  /**