diff --git a/.changeset/puny-rules-hide.md b/.changeset/puny-rules-hide.md new file mode 100644 index 0000000000..d971ed0a54 --- /dev/null +++ b/.changeset/puny-rules-hide.md @@ -0,0 +1,5 @@ +--- +'@posthog/react': patch +--- + +Updated feature flag hooks to properly check if client is initialized and prevent client is undefined errors diff --git a/packages/react/src/hooks/useActiveFeatureFlags.ts b/packages/react/src/hooks/useActiveFeatureFlags.ts index 8a26813a1c..319fb05c0a 100644 --- a/packages/react/src/hooks/useActiveFeatureFlags.ts +++ b/packages/react/src/hooks/useActiveFeatureFlags.ts @@ -13,7 +13,7 @@ export function useActiveFeatureFlags(): string[] { }, [client]) // if the client is not loaded yet and we have a bootstrapped value, use it - if (!client.featureFlags.hasLoadedFlags && bootstrap?.featureFlags) { + if (!client?.featureFlags?.hasLoadedFlags && bootstrap?.featureFlags) { return Object.keys(bootstrap.featureFlags) } diff --git a/packages/react/src/hooks/useFeatureFlagEnabled.ts b/packages/react/src/hooks/useFeatureFlagEnabled.ts index 2e3e3ee797..bd58db1f24 100644 --- a/packages/react/src/hooks/useFeatureFlagEnabled.ts +++ b/packages/react/src/hooks/useFeatureFlagEnabled.ts @@ -16,7 +16,7 @@ export function useFeatureFlagEnabled(flag: string): boolean | undefined { const bootstrapped = bootstrap?.featureFlags?.[flag] // if the client is not loaded yet, check if we have a bootstrapped value and then true/false it - if (!client.featureFlags.hasLoadedFlags && bootstrap?.featureFlags) { + if (!client?.featureFlags?.hasLoadedFlags && bootstrap?.featureFlags) { return isUndefined(bootstrapped) ? undefined : !!bootstrapped } diff --git a/packages/react/src/hooks/useFeatureFlagPayload.ts b/packages/react/src/hooks/useFeatureFlagPayload.ts index b2ed3eae6a..4d2a59f8ff 100644 --- a/packages/react/src/hooks/useFeatureFlagPayload.ts +++ b/packages/react/src/hooks/useFeatureFlagPayload.ts @@ -14,7 +14,7 @@ export function useFeatureFlagPayload(flag: string): JsonType { }, [client, flag]) // if the client is not loaded yet, use the bootstrapped value - if (!client.featureFlags.hasLoadedFlags && bootstrap?.featureFlagPayloads) { + if (!client?.featureFlags?.hasLoadedFlags && bootstrap?.featureFlagPayloads) { return bootstrap.featureFlagPayloads[flag] } diff --git a/packages/react/src/hooks/useFeatureFlagVariantKey.ts b/packages/react/src/hooks/useFeatureFlagVariantKey.ts index 084ff8f947..48e36eb2b9 100644 --- a/packages/react/src/hooks/useFeatureFlagVariantKey.ts +++ b/packages/react/src/hooks/useFeatureFlagVariantKey.ts @@ -14,7 +14,7 @@ export function useFeatureFlagVariantKey(flag: string): string | boolean | undef }) }, [client, flag]) - if (!client.featureFlags.hasLoadedFlags && bootstrap?.featureFlags) { + if (!client?.featureFlags?.hasLoadedFlags && bootstrap?.featureFlags) { return bootstrap.featureFlags[flag] }