diff --git a/instrumentation-client.ts b/instrumentation-client.ts index 2a0da6c0..0def6528 100644 --- a/instrumentation-client.ts +++ b/instrumentation-client.ts @@ -1,10 +1,7 @@ import posthog from 'posthog-js' +import { browserPostHogConfig } from 'src/lib/posthog-browser-config' posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY as string, { api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST as string, - defaults: '2025-05-24', - autocapture: false, - capture_pageview: true, - capture_pageleave: false, - capture_performance: false, + ...browserPostHogConfig, }) diff --git a/src/lib/posthog-browser-config.ts b/src/lib/posthog-browser-config.ts new file mode 100644 index 00000000..926110f9 --- /dev/null +++ b/src/lib/posthog-browser-config.ts @@ -0,0 +1,33 @@ +import { COPY_AUTOCAPTURE_EVENT, type CaptureResult, type PostHogConfig } from 'posthog-js' + +const dropAutocaptureEvents = (event: CaptureResult | null) => { + if (!event) { + return event + } + + if ( + event.event === '$autocapture' || + event.event === COPY_AUTOCAPTURE_EVENT + ) { + return null + } + + return event +} + +export const browserPostHogConfig: Pick< + PostHogConfig, + | 'autocapture' + | 'before_send' + | 'capture_pageleave' + | 'capture_pageview' + | 'capture_performance' + | 'defaults' +> = { + defaults: '2025-05-24', + autocapture: false, + capture_pageview: true, + capture_pageleave: false, + capture_performance: false, + before_send: dropAutocaptureEvents, +} diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 11a7640a..7a172967 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -32,6 +32,7 @@ import { Header, FeedbackButton, } from 'src/components' +import { browserPostHogConfig } from 'src/lib/posthog-browser-config' const openSansClassName = 'font-sans' @@ -56,11 +57,7 @@ function MaiaPlatform({ Component, pageProps }: AppProps) { posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY as string, { api_host: '/ingest', ui_host: 'https://us.posthog.com', - defaults: '2025-05-24', - autocapture: false, - capture_pageview: true, - capture_pageleave: false, - capture_performance: false, + ...browserPostHogConfig, capture_exceptions: true, debug: false, })