diff --git a/src/browser/components/Settings/sections/ExperimentsSection.tsx b/src/browser/components/Settings/sections/ExperimentsSection.tsx index 54905783bd..cc761a1a9b 100644 --- a/src/browser/components/Settings/sections/ExperimentsSection.tsx +++ b/src/browser/components/Settings/sections/ExperimentsSection.tsx @@ -6,7 +6,7 @@ import { type ExperimentId, } from "@/common/constants/experiments"; import { Switch } from "@/browser/components/ui/switch"; -import { useFeatureFlags, type StatsTabOverride } from "@/browser/contexts/FeatureFlagsContext"; +import { useFeatureFlags } from "@/browser/contexts/FeatureFlagsContext"; import { useWorkspaceContext } from "@/browser/contexts/WorkspaceContext"; import { useTelemetry } from "@/browser/hooks/useTelemetry"; @@ -48,35 +48,29 @@ function ExperimentRow(props: ExperimentRowProps) { ); } -function StatsTabOverrideRow() { - const { statsTabState, setStatsTabOverride } = useFeatureFlags(); +function StatsTabRow() { + const { statsTabState, setStatsTabEnabled } = useFeatureFlags(); - const onChange = (e: React.ChangeEvent) => { - const value = e.target.value as StatsTabOverride; - setStatsTabOverride(value).catch(() => { - // ignore - }); - }; + const handleToggle = useCallback( + (enabled: boolean) => { + setStatsTabEnabled(enabled).catch(() => { + // ignore + }); + }, + [setStatsTabEnabled] + ); return (
Stats tab
-
- PostHog experiment-gated timing stats sidebar. Experiment variant:{" "} - {statsTabState?.variant ?? "—"}. -
+
Show timing statistics in the right sidebar
- +
); } @@ -105,7 +99,7 @@ export function ExperimentsSection() { Experimental features that are still in development. Enable at your own risk.

- + {experiments.map((exp) => ( Promise; - setStatsTabOverride: (override: StatsTabOverride) => Promise; + setStatsTabEnabled: (enabled: boolean) => Promise; } const FeatureFlagsContext = createContext(null); @@ -53,7 +48,7 @@ export function FeatureFlagsProvider(props: { children: ReactNode }) { const { api } = useAPI(); const [statsTabState, setStatsTabState] = useState(() => { if (isStorybook()) { - return { enabled: true, variant: "stats", override: "default" }; + return { enabled: true }; } return null; @@ -61,21 +56,21 @@ export function FeatureFlagsProvider(props: { children: ReactNode }) { const refreshStatsTabState = async (): Promise => { if (!api) { - setStatsTabState({ enabled: false, variant: "control", override: "default" }); + setStatsTabState({ enabled: false }); return; } const state = await api.features.getStatsTabState(); - setStatsTabState(state); + setStatsTabState({ enabled: state.enabled }); }; - const setStatsTabOverride = async (override: StatsTabOverride): Promise => { + const setStatsTabEnabled = async (enabled: boolean): Promise => { if (!api) { throw new Error("ORPC client not initialized"); } - const state = await api.features.setStatsTabOverride({ override }); - setStatsTabState(state); + const state = await api.features.setStatsTabOverride({ override: enabled ? "on" : "off" }); + setStatsTabState({ enabled: state.enabled }); }; useEffect(() => { @@ -86,22 +81,22 @@ export function FeatureFlagsProvider(props: { children: ReactNode }) { (async () => { try { if (!api) { - setStatsTabState({ enabled: false, variant: "control", override: "default" }); + setStatsTabState({ enabled: false }); return; } const state = await api.features.getStatsTabState(); - setStatsTabState(state); + setStatsTabState({ enabled: state.enabled }); } catch { // Treat as disabled if we can't fetch. - setStatsTabState({ enabled: false, variant: "control", override: "default" }); + setStatsTabState({ enabled: false }); } })(); }, [api]); return ( {props.children}