From 262c2ecb8346101d911ae99b51b8c2d0e88d4ea4 Mon Sep 17 00:00:00 2001 From: Joshua Ordehi <45109738+ordehi@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:30:12 -0400 Subject: [PATCH 1/4] guard against undefined client --- packages/react/src/hooks/useFeatureFlagEnabled.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 } From 5ec5484fda075e0ff485280fe5265b242fc97806 Mon Sep 17 00:00:00 2001 From: Joshua Ordehi <45109738+ordehi@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:34:16 -0400 Subject: [PATCH 2/4] changeset --- .changeset/puny-rules-hide.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/puny-rules-hide.md diff --git a/.changeset/puny-rules-hide.md b/.changeset/puny-rules-hide.md new file mode 100644 index 0000000000..f2902f3272 --- /dev/null +++ b/.changeset/puny-rules-hide.md @@ -0,0 +1,5 @@ +--- +'@posthog/react': patch +--- + +Updated useFeatureFlagEnabed to properly check if client is initialized and prevent client is undefined errors From 4ea57e789bc120a87452a24a62990e1371c4aa28 Mon Sep 17 00:00:00 2001 From: Joshua Ordehi <45109738+ordehi@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:43:12 -0400 Subject: [PATCH 3/4] Update .changeset/puny-rules-hide.md Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- .changeset/puny-rules-hide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/puny-rules-hide.md b/.changeset/puny-rules-hide.md index f2902f3272..8d3d29a529 100644 --- a/.changeset/puny-rules-hide.md +++ b/.changeset/puny-rules-hide.md @@ -2,4 +2,4 @@ '@posthog/react': patch --- -Updated useFeatureFlagEnabed to properly check if client is initialized and prevent client is undefined errors +Updated useFeatureFlagEnabled to properly check if client is initialized and prevent client is undefined errors From 85818a61762585324a58da8cdd8830f535703196 Mon Sep 17 00:00:00 2001 From: Joshua Ordehi <45109738+ordehi@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:50:13 -0400 Subject: [PATCH 4/4] add guard to other hooks --- .changeset/puny-rules-hide.md | 2 +- packages/react/src/hooks/useActiveFeatureFlags.ts | 2 +- packages/react/src/hooks/useFeatureFlagPayload.ts | 2 +- packages/react/src/hooks/useFeatureFlagVariantKey.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.changeset/puny-rules-hide.md b/.changeset/puny-rules-hide.md index 8d3d29a529..d971ed0a54 100644 --- a/.changeset/puny-rules-hide.md +++ b/.changeset/puny-rules-hide.md @@ -2,4 +2,4 @@ '@posthog/react': patch --- -Updated useFeatureFlagEnabled to properly check if client is initialized and prevent client is undefined errors +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/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] }