diff --git a/README.md b/README.md index de3e3ae..e6eadfa 100644 --- a/README.md +++ b/README.md @@ -217,7 +217,7 @@ Both `getDefinitions()` and `getFrontendFlags()` can take arguments overriding U import { flagsClient, evaluateFlags, - getFrontendFlags, + getDefinitions, type IVariant, } from "@unleash/nextjs"; import type { GetServerSideProps, NextPage } from "next"; @@ -241,12 +241,14 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => { // userId: "123" // etc }; - const { toggles } = await getFrontendFlags({ context }); // Use Proxy/Frontend API - const flags = flagsClient(toggles); + const definitions = await getDefinitions(); // Uses UNLEASH_SERVER_API_URL + const { toggles } = evaluateFlags(definitions, context); + + const flags = flagsClient(toggles); // instantiates a static (non-syncing) unleash-proxy-client return { props: { - isEnabled: flags.isEnabled("nextjs-example"), + isEnabled: flags.isEnabled("nextjs-example") }, }; }; diff --git a/lib/package.json b/lib/package.json index c3d137c..aebd3e4 100644 --- a/lib/package.json +++ b/lib/package.json @@ -1,6 +1,6 @@ { "name": "@unleash/nextjs", - "version": "1.4.1", + "version": "1.4.2", "description": "Unleash SDK for Next.js", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -36,7 +36,7 @@ "@types/react": "18.2.63", "@types/react-dom": "18.2.19", "@types/semver": "7.5.8", - "@unleash/client-specification": "5.1.0", + "@unleash/client-specification": "5.1.4", "@vitest/coverage-v8": "^1.3.1", "eslint-config-custom": "workspace:*", "next": "14.1.2", diff --git a/lib/src/core/client/strategy/strategy.ts b/lib/src/core/client/strategy/strategy.ts index 1257ce4..a4878ce 100644 --- a/lib/src/core/client/strategy/strategy.ts +++ b/lib/src/core/client/strategy/strategy.ts @@ -251,8 +251,10 @@ export class Strategy { ); if (enabled && Array.isArray(variants) && variants.length > 0) { + const stickiness = variants[0].stickiness || parameters.stickiness; const variantDefinition = selectVariantDefinition( parameters.groupId, + stickiness, variants, context ); diff --git a/lib/src/core/variant.ts b/lib/src/core/variant.ts index a512332..ea20f1a 100644 --- a/lib/src/core/variant.ts +++ b/lib/src/core/variant.ts @@ -62,6 +62,7 @@ function findOverride( export function selectVariantDefinition( groupId: string, + stickiness: string | undefined, variants: VariantDefinition[], context: Context ): VariantDefinition | null { @@ -74,8 +75,6 @@ export function selectVariantDefinition( return variantOverride; } - const { stickiness } = variants[0]; - const target = normalizedValue( getSeed(context, stickiness), groupId, @@ -103,5 +102,6 @@ export function selectVariant( feature: FeatureInterface, context: Context ): VariantDefinition | null { - return selectVariantDefinition(feature.name, feature.variants || [], context); + const stickiness = feature.variants?.[0]?.stickiness ?? undefined; + return selectVariantDefinition(feature.name, stickiness, feature.variants || [], context); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e2a6a4..254fab7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -143,8 +143,8 @@ importers: specifier: 7.5.8 version: 7.5.8 '@unleash/client-specification': - specifier: 5.1.0 - version: 5.1.0 + specifier: 5.1.4 + version: 5.1.4 '@vitest/coverage-v8': specifier: ^1.3.1 version: 1.3.1(vitest@1.3.1) @@ -1167,8 +1167,8 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@unleash/client-specification@5.1.0: - resolution: {integrity: sha512-703U1Sw2hXg5MrVXXfEwAIWMinUxTfOHpbcjdjbTyxejaK0mjx4S8zBc5pffs/jlmwSct9eJuRNWnRvWGPQaxg==} + /@unleash/client-specification@5.1.4: + resolution: {integrity: sha512-zJMQT0olV9LKlYXbgJrnv08Tbh6G+tXh9s07Z8UvCroItmxJEO/+f6lIhtZh5b+79TdrROt8Sg85mAr+rRnhlQ==} dev: true /@unleash/proxy-client-react@4.2.2(unleash-proxy-client@3.3.1):