import { useEffect, useState } from "react"; import { analyticsBlockedByBrowser, analyticsOptedOut, setAnalyticsOptOut } from "~/lib/analytics"; import { useRouteContext } from "@tanstack/react-router"; import { Panel } from "~/ui/Panel"; import { CheckboxField } from "~/ui/Field"; /** Per-browser opt-out from product analytics; hidden on instances without analytics. */ export function AnalyticsPanel() { const { analytics } = useRouteContext({ from: "__root__" }); const [optedOut, setOptedOut] = useState(false); const [browserBlocks, setBrowserBlocks] = useState(false); useEffect(() => { setOptedOut(analyticsOptedOut()); setBrowserBlocks(analyticsBlockedByBrowser()); }, []); if (!analytics) return null; return (

This instance uses PostHog to understand how features are used. Events carry an opaque account id, never private repository names, file paths or query strings, and session replays mask inputs and pause on private repositories and settings pages.

{browserBlocks ? (

Your browser sends Do Not Track or Global Privacy Control, so nothing is collected.

) : ( { setOptedOut(event.target.checked); setAnalyticsOptOut(event.target.checked, analytics); }} /> )}
); }