diff --git a/src/hooks/useFeatureEnabled.ts b/src/hooks/useFeatureEnabled.ts index eb6c9f0b..0ab93040 100644 --- a/src/hooks/useFeatureEnabled.ts +++ b/src/hooks/useFeatureEnabled.ts @@ -5,21 +5,23 @@ import { getCookie, setCookie } from "@/utils/cookies"; export function useFeatureEnabled(featureName: string): boolean { const [isFeatureEnabled, setIsFeatureEnabled] = useState(false); - const rolloutPercentage = parseInt(process.env.NEXT_PUBLIC_FEATURE_ROLLOUT_PERCENTAGE || "0", 10); useEffect(() => { if (typeof window !== "undefined") { let featureEnabled = getCookie(featureName); + const rolloutPercentage = parseInt(process.env.NEXT_PUBLIC_FEATURE_ROLLOUT_PERCENTAGE || "0", 10); if (featureEnabled === undefined) { const randomNumber = Math.random() * 100; featureEnabled = randomNumber < rolloutPercentage ? "true" : "false"; - setCookie(featureName, featureEnabled); + + // persist cookie for 5 minutes + setCookie(featureName, featureEnabled, 5); } setIsFeatureEnabled(featureEnabled === "true"); } - }, [featureName, rolloutPercentage]); + }, [featureName]); return isFeatureEnabled; } diff --git a/src/utils/cookies.ts b/src/utils/cookies.ts index 06fb2a02..07f132c0 100644 --- a/src/utils/cookies.ts +++ b/src/utils/cookies.ts @@ -9,11 +9,11 @@ export const getCookie = (name: string): string | undefined => { return undefined; }; -export const setCookie = (name: string, value: string, hours?: number): void => { +export const setCookie = (name: string, value: string, minutes?: number): void => { let expires = ""; - if (hours) { + if (minutes) { const date = new Date(); - date.setTime(date.getTime() + hours * 60 * 60 * 1000); + date.setTime(date.getTime() + minutes * 60 * 1000); expires = `; expires=${date.toUTCString()}`; } document.cookie = `${name}=${encodeURIComponent(value || "")}${expires}; path=/`;