@@ -25,8 +25,8 @@ export function PostHogAuthTracker() {
2525 if ( status === "loading" ) return ;
2626
2727 try {
28- // Check if PostHog is initialized
29- if ( ! posthog . __loaded ) return ;
28+ // Check if PostHog is initialized using documented pattern
29+ if ( ! posthog || typeof posthog . capture !== "function" ) return ;
3030
3131 // Detect transition from unauthenticated to authenticated
3232 const wasSignInInitiated =
@@ -46,19 +46,37 @@ export function PostHogAuthTracker() {
4646 if ( isNewSignIn && ! hasTrackedSignIn . current ) {
4747 hasTrackedSignIn . current = true ;
4848
49- // Determine provider from stored value
50- const provider = storedProvider || "google" ; // Default to google if unknown
49+ // Validate provider to avoid skewing analytics
50+ const validProviders = [ "google" , "github" ] ;
51+ const provider =
52+ storedProvider && validProviders . includes ( storedProvider )
53+ ? storedProvider
54+ : "unknown" ;
55+
56+ // Determine if this is a new user based on account creation time
57+ // Consider a user "new" if their account was created within the last 5 minutes
58+ let isNewUser = false ;
59+ if ( session . user ?. createdAt ) {
60+ try {
61+ const createdAtTime = new Date ( session . user . createdAt ) . getTime ( ) ;
62+ const now = Date . now ( ) ;
63+ const fiveMinutesInMs = 5 * 60 * 1000 ;
64+ isNewUser = now - createdAtTime < fiveMinutesInMs ;
65+ } catch ( error ) {
66+ console . error ( "[Analytics] Error parsing createdAt:" , error ) ;
67+ }
68+ }
5169
5270 // Track sign-in completed EVENT only (no person properties)
5371 posthog . capture ( "sign_in_completed" , {
5472 provider : provider ,
55- is_new_user : false ,
73+ is_new_user : isNewUser ,
5674 } ) ;
5775
5876 if ( process . env . NODE_ENV === "development" ) {
5977 console . log ( "[Analytics] Event tracked: sign_in_completed" , {
6078 provider,
61- is_new_user : false ,
79+ is_new_user : isNewUser ,
6280 } ) ;
6381 }
6482
@@ -88,7 +106,7 @@ export function PostHogAuthTracker() {
88106}
89107
90108/**
91- * PostHog Provider
109+ * PostHog Provider
92110 * NOTE: This provider does NOT handle auth tracking.
93111 * Use PostHogAuthTracker inside SessionProvider for that.
94112 */
0 commit comments