From d43589a0f5b8b2fe935a6ad4c8e318cf5c985dd2 Mon Sep 17 00:00:00 2001 From: Dominik Ferber Date: Thu, 6 Nov 2025 14:45:49 +0200 Subject: [PATCH] @flags-sdk/growthbook: support stringified json (#210) closes #209 --- .changeset/ninety-starfishes-fold.md | 5 +++++ packages/adapter-growthbook/src/index.ts | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/ninety-starfishes-fold.md diff --git a/.changeset/ninety-starfishes-fold.md b/.changeset/ninety-starfishes-fold.md new file mode 100644 index 00000000..f358904f --- /dev/null +++ b/.changeset/ninety-starfishes-fold.md @@ -0,0 +1,5 @@ +--- +"@flags-sdk/growthbook": patch +--- + +support strings in Edge Config diff --git a/packages/adapter-growthbook/src/index.ts b/packages/adapter-growthbook/src/index.ts index 0fc99280..9819c0d2 100644 --- a/packages/adapter-growthbook/src/index.ts +++ b/packages/adapter-growthbook/src/index.ts @@ -75,7 +75,7 @@ export function createGrowthbookAdapter(options: { let _initializePromise: Promise | undefined; const initializeGrowthBook = async (): Promise => { - let payload: FeatureApiResponse | undefined; + let payload: FeatureApiResponse | string | undefined; if (options.edgeConfig) { try { const edgeConfigClient = createClient( @@ -92,6 +92,22 @@ export function createGrowthbookAdapter(options: { } } + // Older GrowthBook integrations use WebHooks directly to store + // data in Edge Config, but they store the data as a string. + // + // We need to parse the string to JSON before passing it to GrowthBook. + // + // https://docs.growthbook.io/app/webhooks/sdk-webhooks#vercel-edge-config + // https://github.com/vercel/flags/issues/209 + if (typeof payload === 'string') { + try { + payload = JSON.parse(payload) as FeatureApiResponse; + } catch { + console.error('Invalid payload format'); + payload = undefined; + } + } + await growthbook.init({ streaming: false, payload,