mirror of
https://github.com/supabase/supabase.git
synced 2026-05-08 18:00:20 -04:00
c8e98cec0e
## Changes Introduces two new files in `packages/common`: - **`telemetry-first-touch-store.ts`** — a module-scoped singleton that holds first-touch attribution data (referrer, UTM params, page URL) in memory. Writes once on first load, cleared after the initial pageview event fires or on opt-out. No device storage involved. - **`useFirstTouchStore.tsx`** — a React hook that captures attribution data on initial page load and writes it into the store, gated on the `enabled` flag so it only runs where consent has been handled. Trade-off: data is lost on a hard reload before consent is granted — accepted edge case per GROWTH-656. Follows the same module-scope pattern already used by `posthogClient` and `consentState`. ## Testing - Verify first-touch data is captured on initial load and readable by `PageTelemetry` after consent - Verify no cookie is set before consent - Verify data is cleared after initial pageview fires GROWTH-656
18 lines
472 B
TypeScript
18 lines
472 B
TypeScript
import { useEffect } from 'react'
|
|
|
|
import { setFirstTouchData } from '../telemetry-first-touch-store'
|
|
import { getSharedTelemetryData } from '../telemetry-utils'
|
|
|
|
interface UseFirstTouchStoreProps {
|
|
enabled: boolean
|
|
}
|
|
|
|
export function useFirstTouchStore({ enabled }: UseFirstTouchStoreProps) {
|
|
useEffect(() => {
|
|
if (!enabled) return
|
|
|
|
const telemetryData = getSharedTelemetryData(window.location.pathname)
|
|
setFirstTouchData(telemetryData)
|
|
}, [enabled])
|
|
}
|