about summary refs log tree commit diff
path: root/src/lib/statsig
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/statsig')
-rw-r--r--src/lib/statsig/events.ts14
-rw-r--r--src/lib/statsig/statsig.tsx17
2 files changed, 21 insertions, 10 deletions
diff --git a/src/lib/statsig/events.ts b/src/lib/statsig/events.ts
index 4768bdc23..187189490 100644
--- a/src/lib/statsig/events.ts
+++ b/src/lib/statsig/events.ts
@@ -25,7 +25,7 @@ export type LogEvents = {
     secondsActive: number
   }
   'state:foreground:sampled': {}
-  'router:navigate:sampled': {}
+  'router:navigate:notifications:sampled': {}
   'deepLink:referrerReceived': {
     to: string
     referrer: string
@@ -127,25 +127,25 @@ export type LogEvents = {
     langs: string
     logContext: 'Composer'
   }
-  'post:like': {
+  'post:like:sampled': {
     doesLikerFollowPoster: boolean | undefined
     doesPosterFollowLiker: boolean | undefined
     likerClout: number | undefined
     postClout: number | undefined
     logContext: 'FeedItem' | 'PostThreadItem' | 'Post'
   }
-  'post:repost': {
+  'post:repost:sampled': {
     logContext: 'FeedItem' | 'PostThreadItem' | 'Post'
   }
-  'post:unlike': {
+  'post:unlike:sampled': {
     logContext: 'FeedItem' | 'PostThreadItem' | 'Post'
   }
-  'post:unrepost': {
+  'post:unrepost:sampled': {
     logContext: 'FeedItem' | 'PostThreadItem' | 'Post'
   }
   'post:mute': {}
   'post:unmute': {}
-  'profile:follow': {
+  'profile:follow:sampled': {
     didBecomeMutual: boolean | undefined
     followeeClout: number | undefined
     followerClout: number | undefined
@@ -162,7 +162,7 @@ export type LogEvents = {
       | 'FeedInterstitial'
       | 'ProfileHeaderSuggestedFollows'
   }
-  'profile:unfollow': {
+  'profile:unfollow:sampled': {
     logContext:
       | 'RecommendedFollowsItem'
       | 'PostThreadItem'
diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx
index 7d86f4078..c50bfeb86 100644
--- a/src/lib/statsig/statsig.tsx
+++ b/src/lib/statsig/statsig.tsx
@@ -89,8 +89,9 @@ export function toClout(n: number | null | undefined): number | undefined {
   }
 }
 
+const DOWNSAMPLE_RATE = 0.95 // 95% likely
 const DOWNSAMPLED_EVENTS: Set<keyof LogEvents> = new Set([
-  'router:navigate:sampled',
+  'router:navigate:notifications:sampled',
   'state:background:sampled',
   'state:foreground:sampled',
   'home:feedDisplayed:sampled',
@@ -99,8 +100,14 @@ const DOWNSAMPLED_EVENTS: Set<keyof LogEvents> = new Set([
   'discover:clickthrough:sampled',
   'discover:engaged:sampled',
   'discover:seen:sampled',
+  'post:like:sampled',
+  'post:unlike:sampled',
+  'post:repost:sampled',
+  'post:unrepost:sampled',
+  'profile:follow:sampled',
+  'profile:unfollow:sampled',
 ])
-const isDownsampledSession = Math.random() < 0.9 // 90% likely
+const isDownsampledSession = Math.random() < DOWNSAMPLE_RATE
 
 export function logEvent<E extends keyof LogEvents>(
   eventName: E & string,
@@ -117,12 +124,16 @@ export function logEvent<E extends keyof LogEvents>(
       )
     }
 
-    if (isDownsampledSession && DOWNSAMPLED_EVENTS.has(eventName)) {
+    const isDownsampledEvent = DOWNSAMPLED_EVENTS.has(eventName)
+    if (isDownsampledSession && isDownsampledEvent) {
       return
     }
     const fullMetadata = {
       ...rawMetadata,
     } as Record<string, string> // Statsig typings are unnecessarily strict here.
+    if (isDownsampledEvent) {
+      fullMetadata.downsampleRate = DOWNSAMPLE_RATE.toString()
+    }
     fullMetadata.routeName = getCurrentRouteName() ?? '(Uninitialized)'
     if (Statsig.initializeCalled()) {
       Statsig.logEvent(eventName, null, fullMetadata)