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}