From 5daa793283fb7e2ad12bccd6c0273778be563ded Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 25 Sep 2023 16:04:28 -0700 Subject: [PATCH 1/3] Update useFeatureFlag.ts Enabling feature flags with payload, this should be essential to have... --- .../src/hooks/useFeatureFlag.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/posthog-react-native/src/hooks/useFeatureFlag.ts b/posthog-react-native/src/hooks/useFeatureFlag.ts index 589cef8c..a9179782 100644 --- a/posthog-react-native/src/hooks/useFeatureFlag.ts +++ b/posthog-react-native/src/hooks/useFeatureFlag.ts @@ -1,5 +1,6 @@ import { useEffect, useState } from 'react' import { usePostHog } from './usePostHog' +import { JsonType } from 'posthog-core/src' export function useFeatureFlag(flag: string): string | boolean | undefined { const posthog = usePostHog() @@ -18,3 +19,24 @@ export function useFeatureFlag(flag: string): string | boolean | undefined { return featureFlag } + +export type FeatureFlagWithPayload = [boolean | string | undefined, JsonType | undefined]; + +export function useFeatureFlagWithPayload(flag: string): FeatureFlagWithPayload { + const posthog = usePostHog() + + const [featureFlag, setFeatureFlag] = useState([undefined, undefined]) + + useEffect(() => { + if (!posthog) { + return + } + + setFeatureFlag([posthog.getFeatureFlag(flag), posthog.getFeatureFlagPayload(flag)]) + return posthog.onFeatureFlags(() => { + setFeatureFlag([posthog.getFeatureFlag(flag), posthog.getFeatureFlagPayload(flag)]) + }) + }, [posthog, flag]) + + return featureFlag; +} From 2e1905a0342093e8373652a2b015efcb64daf7e4 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Wed, 27 Sep 2023 23:31:47 +0000 Subject: [PATCH 2/3] Prettier ran --- posthog-react-native/src/hooks/useFeatureFlag.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/posthog-react-native/src/hooks/useFeatureFlag.ts b/posthog-react-native/src/hooks/useFeatureFlag.ts index a9179782..8962203e 100644 --- a/posthog-react-native/src/hooks/useFeatureFlag.ts +++ b/posthog-react-native/src/hooks/useFeatureFlag.ts @@ -20,13 +20,13 @@ export function useFeatureFlag(flag: string): string | boolean | undefined { return featureFlag } -export type FeatureFlagWithPayload = [boolean | string | undefined, JsonType | undefined]; +export type FeatureFlagWithPayload = [boolean | string | undefined, JsonType | undefined] export function useFeatureFlagWithPayload(flag: string): FeatureFlagWithPayload { const posthog = usePostHog() const [featureFlag, setFeatureFlag] = useState([undefined, undefined]) - + useEffect(() => { if (!posthog) { return @@ -38,5 +38,5 @@ export function useFeatureFlagWithPayload(flag: string): FeatureFlagWithPayload }) }, [posthog, flag]) - return featureFlag; + return featureFlag } From c81c52222303cc9112be2fe2d3b769e578001f10 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Thu, 5 Oct 2023 15:09:12 +0000 Subject: [PATCH 3/3] Changelog changes --- posthog-react-native/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/posthog-react-native/CHANGELOG.md b/posthog-react-native/CHANGELOG.md index d721debb..e818ce6a 100644 --- a/posthog-react-native/CHANGELOG.md +++ b/posthog-react-native/CHANGELOG.md @@ -1,3 +1,7 @@ +2.7.0 - 2023-10-05 + +1. Added new `const [flag, payload] = useFeatureFlagWithPayload('my-flag-name')` hook that returns the flag result and it's payload if it has one. + # 2.7.0 - 2023-05-25 1. The `$screen_name` property will be registered for all events whenever `screen` is called