From fa5803017671c53901fea55da4e81d44da1174ba Mon Sep 17 00:00:00 2001 From: wadii Date: Wed, 26 Nov 2025 13:44:34 +0100 Subject: [PATCH 01/10] feat: added-flagsmith-php-provider Signed-off-by: wadii --- src/datasets/providers/flagsmith.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/datasets/providers/flagsmith.ts b/src/datasets/providers/flagsmith.ts index e7621446d..efcea25bf 100644 --- a/src/datasets/providers/flagsmith.ts +++ b/src/datasets/providers/flagsmith.ts @@ -35,6 +35,12 @@ export const Flagsmith: Provider = { href: 'https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Contrib.Providers.Flagsmith', category: ['Server'], }, + { + technology: 'PHP', + vendorOfficial: true, + href: 'TBD', + category: ['Server'], + }, { technology: 'Python', vendorOfficial: true, From f97c6dbe5f9b4119e31b445a30cbdd4071870b4c Mon Sep 17 00:00:00 2001 From: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Date: Thu, 4 Dec 2025 12:51:25 -0500 Subject: [PATCH 02/10] chore: update sdk readmes (#1314) The PR was automatically generated via the update-sdk-docs GitHub workflow. Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Signed-off-by: wadii --- docs/reference/sdks/client/kotlin.mdx | 2 +- docs/reference/sdks/client/swift.mdx | 2 +- docs/reference/sdks/client/web/angular.mdx | 2 +- docs/reference/sdks/client/web/index.mdx | 2 +- docs/reference/sdks/client/web/react.mdx | 2 +- docs/reference/sdks/server/dart.mdx | 2 +- docs/reference/sdks/server/dotnet.mdx | 6 +++--- docs/reference/sdks/server/go.mdx | 2 +- docs/reference/sdks/server/java.mdx | 10 +++++----- docs/reference/sdks/server/javascript/index.mdx | 2 +- docs/reference/sdks/server/javascript/nestjs.mdx | 2 +- docs/reference/sdks/server/php.mdx | 2 +- docs/reference/sdks/server/python.mdx | 2 +- docs/reference/sdks/server/ruby.mdx | 2 +- docs/reference/sdks/server/rust.mdx | 4 ++-- src/datasets/sdks/sdk-compatibility.json | 10 +++++----- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/reference/sdks/client/kotlin.mdx b/docs/reference/sdks/client/kotlin.mdx index d337a3ed9..de0bf441b 100644 --- a/docs/reference/sdks/client/kotlin.mdx +++ b/docs/reference/sdks/client/kotlin.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from kotlin-sdk. Edits should be made here: https://github.com/open-feature/kotlin-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/swift.mdx b/docs/reference/sdks/client/swift.mdx index 879a6300d..a45c2b9f9 100644 --- a/docs/reference/sdks/client/swift.mdx +++ b/docs/reference/sdks/client/swift.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from swift-sdk. Edits should be made here: https://github.com/open-feature/swift-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/angular.mdx b/docs/reference/sdks/client/web/angular.mdx index cc2cc3a3d..54bb572cf 100644 --- a/docs/reference/sdks/client/web/angular.mdx +++ b/docs/reference/sdks/client/web/angular.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/client/web/index.mdx b/docs/reference/sdks/client/web/index.mdx index 52ee9a8b2..28c86be5e 100644 --- a/docs/reference/sdks/client/web/index.mdx +++ b/docs/reference/sdks/client/web/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/react.mdx b/docs/reference/sdks/client/web/react.mdx index c34ecf49f..6d0d53f2f 100644 --- a/docs/reference/sdks/client/web/react.mdx +++ b/docs/reference/sdks/client/web/react.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/dart.mdx b/docs/reference/sdks/server/dart.mdx index 71b24f6ed..cfec6f2a3 100644 --- a/docs/reference/sdks/server/dart.mdx +++ b/docs/reference/sdks/server/dart.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from dart-server-sdk. Edits should be made here: https://github.com/open-feature/dart-server-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:23 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/server/dotnet.mdx b/docs/reference/sdks/server/dotnet.mdx index c672b4119..b92a86207 100644 --- a/docs/reference/sdks/server/dotnet.mdx +++ b/docs/reference/sdks/server/dotnet.mdx @@ -10,15 +10,15 @@ This content has been automatically generated from dotnet-sdk. Edits should be made here: https://github.com/open-feature/dotnet-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; [![Specification](https://img.shields.io/static/v1?label=specification&message=v0.8.0&color=yellow&style=for-the-badge)](https://github.com/open-feature/spec/releases/tag/v0.8.0) [ -![Release](https://img.shields.io/static/v1?label=release&message=v2.9.0&color=blue&style=for-the-badge) -](https://github.com/open-feature/dotnet-sdk/releases/tag/v2.9.0) +![Release](https://img.shields.io/static/v1?label=release&message=v2.10.0&color=blue&style=for-the-badge) +](https://github.com/open-feature/dotnet-sdk/releases/tag/v2.10.0) [![Slack](https://img.shields.io/badge/slack-%40cncf%2Fopenfeature-brightgreen?style=flat&logo=slack)](https://cloud-native.slack.com/archives/C0344AANLA1) [![Codecov](https://codecov.io/gh/open-feature/dotnet-sdk/branch/main/graph/badge.svg?token=MONAVJBXUJ)](https://codecov.io/gh/open-feature/dotnet-sdk) diff --git a/docs/reference/sdks/server/go.mdx b/docs/reference/sdks/server/go.mdx index 79ab1446b..420ac6311 100644 --- a/docs/reference/sdks/server/go.mdx +++ b/docs/reference/sdks/server/go.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from go-sdk. Edits should be made here: https://github.com/open-feature/go-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/java.mdx b/docs/reference/sdks/server/java.mdx index 8d28eb122..113d21fb0 100644 --- a/docs/reference/sdks/server/java.mdx +++ b/docs/reference/sdks/server/java.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from java-sdk. Edits should be made here: https://github.com/open-feature/java-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:21 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -20,8 +20,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; - - Release + + Release @@ -59,7 +59,7 @@ Note that this library is intended to be used in server-side contexts and has no dev.openfeature sdk - 1.18.2 + 1.19.0 ``` @@ -82,7 +82,7 @@ If you would like snapshot builds, this is the relevant repository information: ```groovy dependencies { - implementation 'dev.openfeature:sdk:1.18.2' + implementation 'dev.openfeature:sdk:1.19.0' } ``` diff --git a/docs/reference/sdks/server/javascript/index.mdx b/docs/reference/sdks/server/javascript/index.mdx index 8420c0d60..a6aec683d 100644 --- a/docs/reference/sdks/server/javascript/index.mdx +++ b/docs/reference/sdks/server/javascript/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/javascript/nestjs.mdx b/docs/reference/sdks/server/javascript/nestjs.mdx index 99e7ac786..933a9d06a 100644 --- a/docs/reference/sdks/server/javascript/nestjs.mdx +++ b/docs/reference/sdks/server/javascript/nestjs.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/php.mdx b/docs/reference/sdks/server/php.mdx index 27f85d2ac..d379771fa 100644 --- a/docs/reference/sdks/server/php.mdx +++ b/docs/reference/sdks/server/php.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from php-sdk. Edits should be made here: https://github.com/open-feature/php-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/python.mdx b/docs/reference/sdks/server/python.mdx index 3bdcaf80b..9affc874b 100644 --- a/docs/reference/sdks/server/python.mdx +++ b/docs/reference/sdks/server/python.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from python-sdk. Edits should be made here: https://github.com/open-feature/python-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/ruby.mdx b/docs/reference/sdks/server/ruby.mdx index c8a0385d0..32bbe2edb 100644 --- a/docs/reference/sdks/server/ruby.mdx +++ b/docs/reference/sdks/server/ruby.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from ruby-sdk. Edits should be made here: https://github.com/open-feature/ruby-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:22 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/rust.mdx b/docs/reference/sdks/server/rust.mdx index f02aa4031..7f199fb34 100644 --- a/docs/reference/sdks/server/rust.mdx +++ b/docs/reference/sdks/server/rust.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from rust-sdk. Edits should be made here: https://github.com/open-feature/rust-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Nov 20 2025 08:11:23 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 04 2025 17:46:53 GMT+0000 (Coordinated Universal Time) -->

@@ -17,7 +17,7 @@ Last updated at Thu Nov 20 2025 08:11:23 GMT+0000 (Coordinated Universal Time) Specification - + Release diff --git a/src/datasets/sdks/sdk-compatibility.json b/src/datasets/sdks/sdk-compatibility.json index e6fc62fc1..219edb694 100644 --- a/src/datasets/sdks/sdk-compatibility.json +++ b/src/datasets/sdks/sdk-compatibility.json @@ -4,8 +4,8 @@ "path": "/docs/reference/sdks/server/java", "category": "Server", "release": { - "href": "https://github.com/open-feature/java-sdk/releases/tag/v1.18.2", - "version": "1.18.2", + "href": "https://github.com/open-feature/java-sdk/releases/tag/v1.19.0", + "version": "1.19.0", "stable": true }, "spec": { @@ -124,8 +124,8 @@ "path": "/docs/reference/sdks/server/dotnet", "category": "Server", "release": { - "href": "https://github.com/open-feature/dotnet-sdk/releases/tag/v2.9.0", - "version": "2.9.0", + "href": "https://github.com/open-feature/dotnet-sdk/releases/tag/v2.10.0", + "version": "2.10.0", "stable": true }, "spec": { @@ -652,7 +652,7 @@ "path": "/docs/reference/sdks/server/rust", "category": "Server", "release": { - "href": "https://github.com/open-feature/rust-sdk/releases/tag/v0.2.7", + "href": "https://github.com/open-feature/rust-sdk/releases/tag/open-feature-v0.2.7", "version": "0.2.7", "stable": false }, From 1dce77fc1c3d2f72b40fb5bf5a35fa18f697610d Mon Sep 17 00:00:00 2001 From: Zaimwa9 Date: Tue, 16 Dec 2025 16:47:20 +0100 Subject: [PATCH 03/10] feat: add-rust-provider-documentation (#1321) ## This PR Adds Flagsmith rust provider to the ecosystem list ### Related Issues Dependent on https://github.com/open-feature/rust-sdk-contrib/pull/82 Signed-off-by: wadii --- src/datasets/providers/flagsmith.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/datasets/providers/flagsmith.ts b/src/datasets/providers/flagsmith.ts index efcea25bf..0852e7ec3 100644 --- a/src/datasets/providers/flagsmith.ts +++ b/src/datasets/providers/flagsmith.ts @@ -47,5 +47,11 @@ export const Flagsmith: Provider = { href: 'https://github.com/Flagsmith/flagsmith-openfeature-provider-python', category: ['Server'], }, + { + technology: 'Rust', + vendorOfficial: true, + href: 'https://github.com/open-feature/rust-sdk-contrib/tree/main/crates/flagsmith', + category: ['Server'], + }, ], }; From bd2d045da8f057db48bbd872f0a0eeac95e8b324 Mon Sep 17 00:00:00 2001 From: Zaimwa9 Date: Tue, 16 Dec 2025 20:41:13 +0100 Subject: [PATCH 04/10] feat: added-flagsmith-ruby-provider (#1318) ## This PR - Adds Flagsmith ruby provider to the ecosystem list ### Related Issues Dependent on [provider release](https://github.com/open-feature/ruby-sdk-contrib/pull/68) --------- Signed-off-by: wadii --- src/datasets/providers/flagsmith.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/datasets/providers/flagsmith.ts b/src/datasets/providers/flagsmith.ts index 0852e7ec3..3ca69153e 100644 --- a/src/datasets/providers/flagsmith.ts +++ b/src/datasets/providers/flagsmith.ts @@ -47,6 +47,12 @@ export const Flagsmith: Provider = { href: 'https://github.com/Flagsmith/flagsmith-openfeature-provider-python', category: ['Server'], }, + { + technology: 'Ruby', + vendorOfficial: true, + href: 'https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flagsmith-provider', + category: ['Server'], + }, { technology: 'Rust', vendorOfficial: true, From 64b2567fb38b9458119d567b0159d6450802063a Mon Sep 17 00:00:00 2001 From: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:10:32 -0500 Subject: [PATCH 05/10] chore: update sdk readmes (#1320) The PR was automatically generated via the update-sdk-docs GitHub workflow. Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Signed-off-by: wadii --- docs/reference/sdks/client/kotlin.mdx | 2 +- docs/reference/sdks/client/swift.mdx | 2 +- docs/reference/sdks/client/web/angular.mdx | 110 +++++++---------- docs/reference/sdks/client/web/index.mdx | 100 ++++++++------- docs/reference/sdks/client/web/react.mdx | 27 ++--- docs/reference/sdks/server/dart.mdx | 2 +- docs/reference/sdks/server/dotnet.mdx | 2 +- docs/reference/sdks/server/go.mdx | 2 +- docs/reference/sdks/server/java.mdx | 10 +- .../sdks/server/javascript/index.mdx | 114 ++++++++++-------- .../sdks/server/javascript/nestjs.mdx | 2 +- docs/reference/sdks/server/php.mdx | 2 +- docs/reference/sdks/server/python.mdx | 10 +- docs/reference/sdks/server/ruby.mdx | 2 +- docs/reference/sdks/server/rust.mdx | 2 +- src/datasets/sdks/sdk-compatibility.json | 16 +-- 16 files changed, 204 insertions(+), 201 deletions(-) diff --git a/docs/reference/sdks/client/kotlin.mdx b/docs/reference/sdks/client/kotlin.mdx index de0bf441b..05e4480c6 100644 --- a/docs/reference/sdks/client/kotlin.mdx +++ b/docs/reference/sdks/client/kotlin.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from kotlin-sdk. Edits should be made here: https://github.com/open-feature/kotlin-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/swift.mdx b/docs/reference/sdks/client/swift.mdx index a45c2b9f9..601d516ec 100644 --- a/docs/reference/sdks/client/swift.mdx +++ b/docs/reference/sdks/client/swift.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from swift-sdk. Edits should be made here: https://github.com/open-feature/swift-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/angular.mdx b/docs/reference/sdks/client/web/angular.mdx index 54bb572cf..d8c98cd93 100644 --- a/docs/reference/sdks/client/web/angular.mdx +++ b/docs/reference/sdks/client/web/angular.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) -->

@@ -18,8 +18,8 @@ Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) Specification - - Release + + Release
@@ -94,9 +94,9 @@ yarn add @openfeature/angular-sdk @openfeature/web-sdk @openfeature/core The following list contains the peer dependencies of `@openfeature/angular-sdk`. See the [package.json](https://github.com/open-feature/js-sdk/blob/main/packages/angular/projects/angular-sdk/package.json) for the required versions. -* `@openfeature/web-sdk` -* `@angular/common` -* `@angular/core` +- `@openfeature/web-sdk` +- `@angular/common` +- `@angular/core` ### Usage @@ -123,11 +123,10 @@ import { OpenFeatureModule } from '@openfeature/angular-sdk'; domain1: new YourOpenFeatureProvider(), domain2: new YourOtherOpenFeatureProvider(), }, - }) + }), ], }) -export class AppModule { -} +export class AppModule {} ``` ##### Minimal Example @@ -138,9 +137,7 @@ If `initializing` and `reconciling` are not given, the feature flag value that i determine what will be rendered. ```html -

- This is shown when the feature flag is enabled. -
+
This is shown when the feature flag is enabled.
``` This example shows content when the feature flag `isFeatureEnabled` is true with a default value of true. @@ -182,72 +179,58 @@ This parameter is _optional_, if omitted, the `then` and `else` templates will b ```html
+ *booleanFeatureFlag="'isFeatureEnabled'; default: true; domain: 'userDomain'; else: booleanFeatureElse; initializing: booleanFeatureInitializing; reconciling: booleanFeatureReconciling" +> This is shown when the feature flag is enabled.
- - This is shown when the feature flag is disabled. - - - This is shown when the feature flag is initializing. - - - This is shown when the feature flag is reconciling. - + This is shown when the feature flag is disabled. + This is shown when the feature flag is initializing. + This is shown when the feature flag is reconciling. ``` ###### Number Feature Flag ```html
+ *numberFeatureFlag="'discountRate'; value: 10; default: 5; domain: 'userDomain'; else: numberFeatureElse; initializing: numberFeatureInitializing; reconciling: numberFeatureReconciling" +> This is shown when the feature flag matches the specified discount rate.
This is shown when the feature flag does not match the specified discount rate. - - This is shown when the feature flag is initializing. - - - This is shown when the feature flag is reconciling. - + This is shown when the feature flag is initializing. + This is shown when the feature flag is reconciling. ``` ###### String Feature Flag ```html
+ *stringFeatureFlag="'themeColor'; value: 'dark'; default: 'light'; domain: 'userDomain'; else: stringFeatureElse; initializing: stringFeatureInitializing; reconciling: stringFeatureReconciling" +> This is shown when the feature flag matches the specified theme color.
This is shown when the feature flag does not match the specified theme color. - - This is shown when the feature flag is initializing. - - - This is shown when the feature flag is reconciling. - + This is shown when the feature flag is initializing. + This is shown when the feature flag is reconciling. ``` ###### Object Feature Flag ```html
+ *objectFeatureFlag="'userConfig'; value: { theme: 'dark' }; default: { theme: 'light' }; domain: 'userDomain'; else: objectFeatureElse; initializing: objectFeatureInitializing; reconciling: objectFeatureReconciling" +> This is shown when the feature flag matches the specified user configuration.
This is shown when the feature flag does not match the specified user configuration. - - This is shown when the feature flag is initializing. - - - This is shown when the feature flag is reconciling. - + This is shown when the feature flag is initializing. + This is shown when the feature flag is reconciling. ``` ###### Opting-out of automatic re-rendering @@ -257,7 +240,9 @@ By default, the directive re-renders when the flag value changes or the context In cases, this is not desired, re-rendering can be disabled for both events: ```html -
+
This is shown when the feature flag is enabled.
``` @@ -274,13 +259,12 @@ The following example shows `value` being implicitly bound and `details` being b ```html
- It was a match! - The theme color is {{ value }} because of {{ details.reason }} + *stringFeatureFlag="'themeColor'; value: 'dark'; default: 'light'; else: stringFeatureElse; let value; let details = evaluationDetails" +> + It was a match! The theme color is {{ value }} because of {{ details.reason }}
- - It was no match! - The theme color is {{ value }} because of {{ details.reason }} + + It was no match! The theme color is {{ value }} because of {{ details.reason }} ``` @@ -288,9 +272,7 @@ When the expected flag value is omitted, the template will always be rendered. This can be used to just render the flag value or details without conditional rendering. ```html -
- The theme color is {{ value }}. -
+
The theme color is {{ value }}.
``` ##### FeatureFlagService @@ -315,7 +297,7 @@ import { FeatureFlagService } from '@openfeature/angular-sdk';
Theme: {{ (currentTheme$ | async)?.value }}
Max items: {{ (maxItems$ | async)?.value }}
- ` + `, }) export class MyComponent { private flagService = inject(FeatureFlagService); @@ -347,11 +329,9 @@ import { FeatureFlagService } from '@openfeature/angular-sdk'; selector: 'my-component', standalone: true, template: ` -
- Feature is enabled! Reason: {{ isFeatureEnabled()?.reason }} -
+
Feature is enabled! Reason: {{ isFeatureEnabled()?.reason }}
Theme: {{ currentTheme()?.value }}
- ` + `, }) export class MyComponent { private flagService = inject(FeatureFlagService); @@ -368,8 +348,8 @@ The service methods accept the [same options as the directives](#opting-out-of-a ```typescript const flag$ = this.flagService.getBooleanDetails('my-flag', false, 'my-domain', { - updateOnConfigurationChanged: false, // default: true - updateOnContextChanged: false, // default: true + updateOnConfigurationChanged: false, // default: true + updateOnContextChanged: false, // default: true }); ``` @@ -394,7 +374,7 @@ const initialContext = { user: { id: 'user123', role: 'admin', - } + }, }; @NgModule({ @@ -402,8 +382,8 @@ const initialContext = { CommonModule, OpenFeatureModule.forRoot({ provider: yourFeatureProvider, - context: initialContext - }) + context: initialContext, + }), ], }) export class AppModule {} @@ -423,8 +403,8 @@ const contextFactory = (): EvaluationContext => loadContextFromLocalStorage(); CommonModule, OpenFeatureModule.forRoot({ provider: yourFeatureProvider, - context: contextFactory - }) + context: contextFactory, + }), ], }) export class AppModule {} diff --git a/docs/reference/sdks/client/web/index.mdx b/docs/reference/sdks/client/web/index.mdx index 28c86be5e..b3a645b75 100644 --- a/docs/reference/sdks/client/web/index.mdx +++ b/docs/reference/sdks/client/web/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -20,8 +20,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; Specification - - Release + + Release
@@ -90,7 +90,7 @@ const client = OpenFeature.getClient(); const v2Enabled = client.getBooleanValue('v2_enabled', false); if (v2Enabled) { - console.log("v2 is enabled"); + console.log('v2 is enabled'); } ``` @@ -102,16 +102,16 @@ See [here](https://open-feature.github.io/js-sdk/modules/_openfeature_web_sdk.ht | Status | Features | Description | | ------ | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| ✅ | [Providers](#providers) | Integrate with a commercial, open source, or in-house feature management tool. | -| ✅ | [Targeting](#targeting-and-context) | Contextually-aware flag evaluation using [evaluation context](/docs/reference/concepts/evaluation-context). | -| ✅ | [Hooks](#hooks) | Add functionality to various stages of the flag evaluation life-cycle. | -| ✅ | [Logging](#logging) | Integrate with popular logging packages. | -| ✅ | [Domains](#domains) | Logically bind clients with providers. | -| ✅ | [Eventing](#eventing) | React to state changes in the provider or flag management system. | -| ✅ | [Tracking](#tracking) | Associate user actions with feature flag evaluations, particularly for A/B testing. | -| ✅ | [Shutdown](#shutdown) | Gracefully clean up a provider during application shutdown. | -| ✅ | [Extending](#extending) | Extend OpenFeature with custom providers and hooks. | -| ✅ | [Multi-Provider](#multi-provider) | Combine multiple providers with configurable evaluation strategies. | +| ✅ | [Providers](#providers) | Integrate with a commercial, open source, or in-house feature management tool. | +| ✅ | [Targeting](#targeting-and-context) | Contextually-aware flag evaluation using [evaluation context](/docs/reference/concepts/evaluation-context). | +| ✅ | [Hooks](#hooks) | Add functionality to various stages of the flag evaluation life-cycle. | +| ✅ | [Logging](#logging) | Integrate with popular logging packages. | +| ✅ | [Domains](#domains) | Logically bind clients with providers. | +| ✅ | [Eventing](#eventing) | React to state changes in the provider or flag management system. | +| ✅ | [Tracking](#tracking) | Associate user actions with feature flag evaluations, particularly for A/B testing. | +| ✅ | [Shutdown](#shutdown) | Gracefully clean up a provider during application shutdown. | +| ✅ | [Extending](#extending) | Extend OpenFeature with custom providers and hooks. | +| ✅ | [Multi-Provider](#multi-provider) | Combine multiple providers with configurable evaluation strategies. | Implemented: ✅ | In-progress: ⚠️ | Not implemented yet: ❌ @@ -160,15 +160,12 @@ The Multi-Provider is a powerful tool for performing migrations between flag pro ```ts import { MultiProvider } from '@openfeature/web-sdk'; -const multiProvider = new MultiProvider([ - { provider: new ProviderA() }, - { provider: new ProviderB() } -]); +const multiProvider = new MultiProvider([{ provider: new ProviderA() }, { provider: new ProviderB() }]); await OpenFeature.setProviderAndWait(multiProvider); const client = OpenFeature.getClient(); -console.log(client.getBooleanDetails("my-flag", false)); +console.log(client.getBooleanDetails('my-flag', false)); ``` By default, the Multi-Provider will evaluate all underlying providers in order and return the first successful result. If a provider indicates it does not have a flag (FLAG_NOT_FOUND error code), then it will be skipped and the next provider will be evaluated. @@ -185,11 +182,8 @@ The Multi-Provider comes with three strategies out of the box: import { MultiProvider, FirstSuccessfulStrategy } from '@openfeature/web-sdk'; const multiProvider = new MultiProvider( - [ - { provider: new ProviderA() }, - { provider: new ProviderB() } - ], - new FirstSuccessfulStrategy() + [{ provider: new ProviderA() }, { provider: new ProviderB() }], + new FirstSuccessfulStrategy(), ); ``` @@ -199,9 +193,9 @@ The Multi-Provider supports tracking events across multiple providers, allowing ```ts // Tracked events will be sent to all providers by default -client.track('user-conversion', { - value: 99.99, - currency: 'USD' +client.track('user-conversion', { + value: 99.99, + currency: 'USD', }); ``` @@ -236,7 +230,7 @@ Change context after the provider has been registered using `setContext`. ```ts // Set a value to the global context -await OpenFeature.setContext({ targetingKey: localStorage.getItem("targetingKey") }); +await OpenFeature.setContext({ targetingKey: localStorage.getItem('targetingKey') }); ``` Context is global and setting it is `async`. @@ -253,7 +247,7 @@ If the hook you're looking for hasn't been created yet, see the [develop a hook] Once you've added a hook as a dependency, it can be registered at the global, client, or flag invocation level. ```ts -import { OpenFeature } from "@openfeature/web-sdk"; +import { OpenFeature } from '@openfeature/web-sdk'; // add a hook globally, to run on all evaluations OpenFeature.addHooks(new ExampleGlobalHook()); @@ -263,7 +257,7 @@ const client = OpenFeature.getClient(); client.addHooks(new ExampleClientHook()); // add a hook for this evaluation only -const boolValue = client.getBooleanValue("bool-flag", false, { hooks: [new ExampleHook()]}); +const boolValue = client.getBooleanValue('bool-flag', false, { hooks: [new ExampleHook()] }); ``` ### Logging @@ -273,7 +267,7 @@ This behavior can be overridden by passing a custom logger either globally or pe A custom logger must implement the [Logger interface](https://github.com/open-feature/js-sdk/blob/main/packages/shared/src/logger/logger.ts). ```ts -import type { Logger } from "@openfeature/web-sdk"; +import type { Logger } from '@openfeature/web-sdk'; // The logger can be anything that conforms with the Logger interface const logger: Logger = console; @@ -293,17 +287,17 @@ A domain is a logical identifier which can be used to associate clients with a p If a domain has no associated provider, the default provider is used. ```ts -import { OpenFeature, InMemoryProvider } from "@openfeature/web-sdk"; +import { OpenFeature, InMemoryProvider } from '@openfeature/web-sdk'; // Registering the default provider OpenFeature.setProvider(InMemoryProvider(myFlags)); // Registering a provider to a domain -OpenFeature.setProvider("my-domain", new InMemoryProvider(someOtherFlags)); +OpenFeature.setProvider('my-domain', new InMemoryProvider(someOtherFlags)); // A Client bound to the default provider const clientWithDefault = OpenFeature.getClient(); // A Client bound to the InMemoryProvider provider -const domainScopedClient = OpenFeature.getClient("my-domain"); +const domainScopedClient = OpenFeature.getClient('my-domain'); ``` Domains can be defined on a provider during registration. @@ -315,13 +309,13 @@ By default, domain-scoped clients use the global context. This can be overridden by explicitly setting context when registering the provider or by referencing the domain when updating context: ```ts -OpenFeature.setProvider("my-domain", new NewCachedProvider(), { targetingKey: localStorage.getItem("targetingKey") }); +OpenFeature.setProvider('my-domain', new NewCachedProvider(), { targetingKey: localStorage.getItem('targetingKey') }); ``` To change context after the provider has been registered, use `setContext` with a domain: ```ts -await OpenFeature.setContext("my-domain", { targetingKey: localStorage.getItem("targetingKey") }) +await OpenFeature.setContext('my-domain', { targetingKey: localStorage.getItem('targetingKey') }); ``` Once a domain's context has been defined, it will override the global context for all clients bound to the domain. @@ -373,7 +367,7 @@ This should only be called when your application is in the process of shutting d ```ts import { OpenFeature } from '@openfeature/web-sdk'; -await OpenFeature.close() +await OpenFeature.close(); ``` ## Extending @@ -393,7 +387,7 @@ import { Logger, Provider, ProviderEventEmitter, - ResolutionDetails + ResolutionDetails, } from '@openfeature/web-sdk'; // implement the provider interface @@ -405,16 +399,36 @@ class MyProvider implements Provider { } as const; // Optional provider managed hooks hooks?: Hook[]; - resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext, logger: Logger): ResolutionDetails { + resolveBooleanEvaluation( + flagKey: string, + defaultValue: boolean, + context: EvaluationContext, + logger: Logger, + ): ResolutionDetails { // code to evaluate a boolean } - resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext, logger: Logger): ResolutionDetails { + resolveStringEvaluation( + flagKey: string, + defaultValue: string, + context: EvaluationContext, + logger: Logger, + ): ResolutionDetails { // code to evaluate a string } - resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext, logger: Logger): ResolutionDetails { + resolveNumberEvaluation( + flagKey: string, + defaultValue: number, + context: EvaluationContext, + logger: Logger, + ): ResolutionDetails { // code to evaluate a number } - resolveObjectEvaluation(flagKey: string, defaultValue: T, context: EvaluationContext, logger: Logger): ResolutionDetails { + resolveObjectEvaluation( + flagKey: string, + defaultValue: T, + context: EvaluationContext, + logger: Logger, + ): ResolutionDetails { // code to evaluate an object } @@ -443,7 +457,7 @@ This can be a new repository or included in [the existing contrib repository](ht Implement your own hook by conforming to the [Hook interface](https://github.com/open-feature/js-sdk/blob/main/packages/shared/src/hooks/hook.ts). ```ts -import type { Hook, HookContext, EvaluationDetails, FlagValue } from "@openfeature/web-sdk"; +import type { Hook, HookContext, EvaluationDetails, FlagValue } from '@openfeature/web-sdk'; export class MyHook implements Hook { after(hookContext: HookContext, evaluationDetails: EvaluationDetails) { diff --git a/docs/reference/sdks/client/web/react.mdx b/docs/reference/sdks/client/web/react.mdx index 6d0d53f2f..22e4387ec 100644 --- a/docs/reference/sdks/client/web/react.mdx +++ b/docs/reference/sdks/client/web/react.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -20,8 +20,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; Specification - - Release + + Release
@@ -89,8 +89,8 @@ yarn add @openfeature/react-sdk @openfeature/web-sdk @openfeature/core The following list contains the peer dependencies of `@openfeature/react-sdk`. See the [package.json](https://github.com/open-feature/js-sdk/blob/main/packages/react/package.json) for the required versions. -* `@openfeature/web-sdk` -* `react` +- `@openfeature/web-sdk` +- `react` ### Usage @@ -110,13 +110,13 @@ const flagConfig = { on: true, off: false, }, - defaultVariant: "on", + defaultVariant: 'on', contextEvaluator: (context: EvaluationContext) => { if (context.silly) { return 'on'; } - return 'off' - } + return 'off'; + }, }, }; @@ -148,7 +148,7 @@ function Page() { {showNewMessage ?

Welcome to this OpenFeature-enabled React app!

:

Welcome to this React app.

} - ) + ); } ``` @@ -165,12 +165,7 @@ const value = useBooleanFlagValue('new-message', false); import { useBooleanFlagDetails } from '@openfeature/react-sdk'; // "detailed" boolean flag evaluation -const { - value, - variant, - reason, - flagMetadata -} = useBooleanFlagDetails('new-message', false); +const { value, variant, reason, flagMetadata } = useBooleanFlagDetails('new-message', false); ``` #### Multiple Providers and Domains @@ -408,4 +403,4 @@ Avoid importing anything from `@openfeature/web-sdk` or `@openfeature/core`. ## Resources - - [Example repo](https://github.com/open-feature/react-test-app) +- [Example repo](https://github.com/open-feature/react-test-app) diff --git a/docs/reference/sdks/server/dart.mdx b/docs/reference/sdks/server/dart.mdx index cfec6f2a3..f2e8a8257 100644 --- a/docs/reference/sdks/server/dart.mdx +++ b/docs/reference/sdks/server/dart.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from dart-server-sdk. Edits should be made here: https://github.com/open-feature/dart-server-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/server/dotnet.mdx b/docs/reference/sdks/server/dotnet.mdx index b92a86207..c7b8d8f7a 100644 --- a/docs/reference/sdks/server/dotnet.mdx +++ b/docs/reference/sdks/server/dotnet.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from dotnet-sdk. Edits should be made here: https://github.com/open-feature/dotnet-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/go.mdx b/docs/reference/sdks/server/go.mdx index 420ac6311..6903732d9 100644 --- a/docs/reference/sdks/server/go.mdx +++ b/docs/reference/sdks/server/go.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from go-sdk. Edits should be made here: https://github.com/open-feature/go-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/java.mdx b/docs/reference/sdks/server/java.mdx index 113d21fb0..44f988993 100644 --- a/docs/reference/sdks/server/java.mdx +++ b/docs/reference/sdks/server/java.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from java-sdk. Edits should be made here: https://github.com/open-feature/java-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:38 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -20,8 +20,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; - - Release + + Release @@ -59,7 +59,7 @@ Note that this library is intended to be used in server-side contexts and has no dev.openfeature sdk - 1.19.0 + 1.19.2 ``` @@ -82,7 +82,7 @@ If you would like snapshot builds, this is the relevant repository information: ```groovy dependencies { - implementation 'dev.openfeature:sdk:1.19.0' + implementation 'dev.openfeature:sdk:1.19.2' } ``` diff --git a/docs/reference/sdks/server/javascript/index.mdx b/docs/reference/sdks/server/javascript/index.mdx index a6aec683d..db8243d39 100644 --- a/docs/reference/sdks/server/javascript/index.mdx +++ b/docs/reference/sdks/server/javascript/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:38 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -20,8 +20,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; Specification - - Release + + Release
@@ -90,7 +90,7 @@ const client = OpenFeature.getClient(); const v2Enabled = await client.getBooleanValue('v2_enabled', false); if (v2Enabled) { - console.log("v2 is enabled"); + console.log('v2 is enabled'); } ``` @@ -100,19 +100,19 @@ See [here](https://open-feature.github.io/js-sdk/modules/_openfeature_server_sdk ## Features -| Status | Features | Description | -| ------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| ✅ | [Providers](#providers) | Integrate with a commercial, open source, or in-house feature management tool. | -| ✅ | [Targeting](#targeting) | Contextually-aware flag evaluation using [evaluation context](/docs/reference/concepts/evaluation-context). | -| ✅ | [Hooks](#hooks) | Add functionality to various stages of the flag evaluation life-cycle. | -| ✅ | [Logging](#logging) | Integrate with popular logging packages. | -| ✅ | [Domains](#domains) | Logically bind clients with providers. | -| ✅ | [Eventing](#eventing) | React to state changes in the provider or flag management system. | -| ✅ | [Transaction Context Propagation](#transaction-context-propagation) | Set a specific [evaluation context](/docs/reference/concepts/evaluation-context) for a transaction (e.g. an HTTP request or a thread) | -| ✅ | [Tracking](#tracking) | Associate user actions with feature flag evaluations, particularly for A/B testing. | -| ✅ | [Shutdown](#shutdown) | Gracefully clean up a provider during application shutdown. | -| ✅ | [Extending](#extending) | Extend OpenFeature with custom providers and hooks. | -| ✅ | [Multi-Provider](#multi-provider) | Combine multiple providers with configurable evaluation strategies. | +| Status | Features | Description | +| ------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ✅ | [Providers](#providers) | Integrate with a commercial, open source, or in-house feature management tool. | +| ✅ | [Targeting](#targeting) | Contextually-aware flag evaluation using [evaluation context](/docs/reference/concepts/evaluation-context). | +| ✅ | [Hooks](#hooks) | Add functionality to various stages of the flag evaluation life-cycle. | +| ✅ | [Logging](#logging) | Integrate with popular logging packages. | +| ✅ | [Domains](#domains) | Logically bind clients with providers. | +| ✅ | [Eventing](#eventing) | React to state changes in the provider or flag management system. | +| ✅ | [Transaction Context Propagation](#transaction-context-propagation) | Set a specific [evaluation context](/docs/reference/concepts/evaluation-context) for a transaction (e.g. an HTTP request or a thread) | +| ✅ | [Tracking](#tracking) | Associate user actions with feature flag evaluations, particularly for A/B testing. | +| ✅ | [Shutdown](#shutdown) | Gracefully clean up a provider during application shutdown. | +| ✅ | [Extending](#extending) | Extend OpenFeature with custom providers and hooks. | +| ✅ | [Multi-Provider](#multi-provider) | Combine multiple providers with configurable evaluation strategies. | Implemented: ✅ | In-progress: ⚠️ | Not implemented yet: ❌ @@ -164,10 +164,7 @@ const primaryProvider = new YourPrimaryProvider(); const backupProvider = new YourBackupProvider(); // Create multi-provider with a strategy -const multiProvider = new MultiProvider( - [primaryProvider, backupProvider], - new FirstMatchStrategy() -); +const multiProvider = new MultiProvider([primaryProvider, backupProvider], new FirstMatchStrategy()); // Register the multi-provider await OpenFeature.setProviderAndWait(multiProvider); @@ -193,7 +190,7 @@ const oldProvider = new OldFlagProvider(); const multiProvider = new MultiProvider( [newProvider, oldProvider], // New provider is consulted first - new FirstMatchStrategy() + new FirstMatchStrategy(), ); await OpenFeature.setProviderAndWait(multiProvider); @@ -209,13 +206,10 @@ const providerA = new ProviderA(); const providerB = new ProviderB(); const multiProvider = new MultiProvider( - [ - { provider: providerA }, - { provider: providerB } - ], + [{ provider: providerA }, { provider: providerB }], new ComparisonStrategy(providerA, (resolutions) => { console.warn('Mismatch detected', resolutions); - }) + }), ); await OpenFeature.setProviderAndWait(multiProvider); @@ -229,7 +223,7 @@ If the flag management system you're using supports targeting, you can provide t ```ts // set a value to the global context -OpenFeature.setContext({ region: "us-east-1" }); +OpenFeature.setContext({ region: 'us-east-1' }); // set a value to the client context const client = OpenFeature.getClient(); @@ -239,7 +233,7 @@ client.setContext({ version: process.env.APP_VERSION }); const requestContext = { targetingKey: req.session.id, email: req.session.email, - product: req.productId + product: req.productId, }; const boolValue = await client.getBooleanValue('some-flag', false, requestContext); @@ -257,7 +251,7 @@ If the hook you're looking for hasn't been created yet, see the [develop a hook] Once you've added a hook as a dependency, it can be registered at the global, client, or flag invocation level. ```ts -import { OpenFeature } from "@openfeature/server-sdk"; +import { OpenFeature } from '@openfeature/server-sdk'; // add a hook globally, to run on all evaluations OpenFeature.addHooks(new ExampleGlobalHook()); @@ -267,7 +261,7 @@ const client = OpenFeature.getClient(); client.addHooks(new ExampleClientHook()); // add a hook for this evaluation only -const boolValue = await client.getBooleanValue("bool-flag", false, { hooks: [new ExampleHook()]}); +const boolValue = await client.getBooleanValue('bool-flag', false, { hooks: [new ExampleHook()] }); ``` ### Logging @@ -277,7 +271,7 @@ This behavior can be overridden by passing a custom logger either globally or pe A custom logger must implement the [Logger interface](https://github.com/open-feature/js-sdk/blob/main/packages/shared/src/logger/logger.ts). ```ts -import type { Logger } from "@openfeature/server-sdk"; +import type { Logger } from '@openfeature/server-sdk'; // The logger can be anything that conforms with the Logger interface const logger: Logger = console; @@ -297,28 +291,28 @@ A domain is a logical identifier which can be used to associate clients with a p If a domain has no associated provider, the default provider is used. ```ts -import { OpenFeature, InMemoryProvider } from "@openfeature/server-sdk"; +import { OpenFeature, InMemoryProvider } from '@openfeature/server-sdk'; const myFlags = { - 'v2_enabled': { + v2_enabled: { variants: { on: true, - off: false + off: false, }, disabled: false, - defaultVariant: "on" - } + defaultVariant: 'on', + }, }; // Registering the default provider OpenFeature.setProvider(InMemoryProvider(myFlags)); // Registering a provider to a domain -OpenFeature.setProvider("my-domain", new InMemoryProvider(someOtherFlags)); +OpenFeature.setProvider('my-domain', new InMemoryProvider(someOtherFlags)); // A Client bound to the default provider const clientWithDefault = OpenFeature.getClient(); // A Client bound to the InMemoryProvider provider -const domainScopedClient = OpenFeature.getClient("my-domain"); +const domainScopedClient = OpenFeature.getClient('my-domain'); ``` Domains can be defined on a provider during registration. @@ -355,22 +349,22 @@ Transaction context can be set where specific data is available (e.g. an auth se The following example shows an Express middleware using transaction context propagation to propagate the request ip and user id into request scoped transaction context. ```ts -import express, { Request, Response, NextFunction } from "express"; +import express, { Request, Response, NextFunction } from 'express'; import { OpenFeature, AsyncLocalStorageTransactionContextPropagator } from '@openfeature/server-sdk'; -OpenFeature.setTransactionContextPropagator(new AsyncLocalStorageTransactionContextPropagator()) +OpenFeature.setTransactionContextPropagator(new AsyncLocalStorageTransactionContextPropagator()); /** * This example is based on an express middleware. */ const app = express(); app.use((req: Request, res: Response, next: NextFunction) => { - const ip = res.headers.get("X-Forwarded-For") + const ip = res.headers.get('X-Forwarded-For'); OpenFeature.setTransactionContext({ targetingKey: req.user.id, ipAddress: ip }, () => { // The transaction context is used in any flag evaluation throughout the whole call chain of next next(); }); -}) +}); ``` ### Tracking @@ -396,7 +390,7 @@ This should only be called when your application is in the process of shutting d ```ts import { OpenFeature } from '@openfeature/server-sdk'; -await OpenFeature.close() +await OpenFeature.close(); ``` ## Extending @@ -416,7 +410,7 @@ import { Logger, Provider, ProviderEventEmitter, - ResolutionDetails + ResolutionDetails, } from '@openfeature/server-sdk'; // implement the provider interface @@ -428,16 +422,36 @@ class MyProvider implements Provider { } as const; // Optional provider managed hooks hooks?: Hook[]; - resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext, logger: Logger): Promise> { + resolveBooleanEvaluation( + flagKey: string, + defaultValue: boolean, + context: EvaluationContext, + logger: Logger, + ): Promise> { // code to evaluate a boolean } - resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext, logger: Logger): Promise> { + resolveStringEvaluation( + flagKey: string, + defaultValue: string, + context: EvaluationContext, + logger: Logger, + ): Promise> { // code to evaluate a string } - resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext, logger: Logger): Promise> { + resolveNumberEvaluation( + flagKey: string, + defaultValue: number, + context: EvaluationContext, + logger: Logger, + ): Promise> { // code to evaluate a number } - resolveObjectEvaluation(flagKey: string, defaultValue: T, context: EvaluationContext, logger: Logger): Promise> { + resolveObjectEvaluation( + flagKey: string, + defaultValue: T, + context: EvaluationContext, + logger: Logger, + ): Promise> { // code to evaluate an object } @@ -462,7 +476,7 @@ This can be a new repository or included in [the existing contrib repository](ht Implement your own hook by conforming to the [Hook interface](https://github.com/open-feature/js-sdk/blob/main/packages/shared/src/hooks/hook.ts). ```ts -import type { Hook, HookContext, EvaluationDetails, FlagValue } from "@openfeature/server-sdk"; +import type { Hook, HookContext, EvaluationDetails, FlagValue } from '@openfeature/server-sdk'; export class MyHook implements Hook { after(hookContext: HookContext, evaluationDetails: EvaluationDetails) { diff --git a/docs/reference/sdks/server/javascript/nestjs.mdx b/docs/reference/sdks/server/javascript/nestjs.mdx index 933a9d06a..44b9960c9 100644 --- a/docs/reference/sdks/server/javascript/nestjs.mdx +++ b/docs/reference/sdks/server/javascript/nestjs.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/php.mdx b/docs/reference/sdks/server/php.mdx index d379771fa..36b899f32 100644 --- a/docs/reference/sdks/server/php.mdx +++ b/docs/reference/sdks/server/php.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from php-sdk. Edits should be made here: https://github.com/open-feature/php-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/python.mdx b/docs/reference/sdks/server/python.mdx index 9affc874b..a6d3ada23 100644 --- a/docs/reference/sdks/server/python.mdx +++ b/docs/reference/sdks/server/python.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from python-sdk. Edits should be made here: https://github.com/open-feature/python-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -22,8 +22,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; - - Latest version + + Latest version @@ -59,13 +59,13 @@ import MCPInstall from '@site/src/partials/mcp-install'; #### Pip install ```bash -pip install openfeature-sdk==0.8.3 +pip install openfeature-sdk==0.8.4 ``` #### requirements.txt ```bash -openfeature-sdk==0.8.3 +openfeature-sdk==0.8.4 ``` ```python diff --git a/docs/reference/sdks/server/ruby.mdx b/docs/reference/sdks/server/ruby.mdx index 32bbe2edb..8116d8b10 100644 --- a/docs/reference/sdks/server/ruby.mdx +++ b/docs/reference/sdks/server/ruby.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from ruby-sdk. Edits should be made here: https://github.com/open-feature/ruby-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:52 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/rust.mdx b/docs/reference/sdks/server/rust.mdx index 7f199fb34..4bb9e51ba 100644 --- a/docs/reference/sdks/server/rust.mdx +++ b/docs/reference/sdks/server/rust.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from rust-sdk. Edits should be made here: https://github.com/open-feature/rust-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 04 2025 17:46:53 GMT+0000 (Coordinated Universal Time) +Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) -->

diff --git a/src/datasets/sdks/sdk-compatibility.json b/src/datasets/sdks/sdk-compatibility.json index 219edb694..ec041f021 100644 --- a/src/datasets/sdks/sdk-compatibility.json +++ b/src/datasets/sdks/sdk-compatibility.json @@ -4,8 +4,8 @@ "path": "/docs/reference/sdks/server/java", "category": "Server", "release": { - "href": "https://github.com/open-feature/java-sdk/releases/tag/v1.19.0", - "version": "1.19.0", + "href": "https://github.com/open-feature/java-sdk/releases/tag/v1.19.2", + "version": "1.19.2", "stable": true }, "spec": { @@ -64,8 +64,8 @@ "path": "/docs/reference/sdks/server/javascript", "category": "Server", "release": { - "href": "https://github.com/open-feature/js-sdk/releases/tag/server-sdk-v1.20.0", - "version": "1.20.0", + "href": "https://github.com/open-feature/js-sdk/releases/tag/server-sdk-v1.20.1", + "version": "1.20.1", "stable": true }, "spec": { @@ -244,8 +244,8 @@ "path": "/docs/reference/sdks/server/python", "category": "Server", "release": { - "href": "https://github.com/open-feature/python-sdk/releases/tag/v0.8.3", - "version": "0.8.3", + "href": "https://github.com/open-feature/python-sdk/releases/tag/v0.8.4", + "version": "0.8.4", "stable": false }, "spec": { @@ -364,8 +364,8 @@ "path": "/docs/reference/sdks/client/web", "category": "Client", "release": { - "href": "https://github.com/open-feature/js-sdk/releases/tag/web-sdk-v1.7.1", - "version": "1.7.1", + "href": "https://github.com/open-feature/js-sdk/releases/tag/web-sdk-v1.7.2", + "version": "1.7.2", "stable": true }, "spec": { From ef7ee8a545ac559863b13439507e9a61b6806c06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:15:21 +0000 Subject: [PATCH 06/10] chore(deps): update external-content/community digest to 53bce15 (#1322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | external-content/community | digest | `ca0df71` -> `53bce15` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-feature/openfeature.dev). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: wadii --- external-content/community | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external-content/community b/external-content/community index ca0df717c..53bce150a 160000 --- a/external-content/community +++ b/external-content/community @@ -1 +1 @@ -Subproject commit ca0df717c14d92fdc019af7cf6cebccb33d6c6a1 +Subproject commit 53bce150ae0787fc87fc3be7487252440f6da73e From 3c9c83306bdfb8d6ddc0c4f8bbd87fd0d616675c Mon Sep 17 00:00:00 2001 From: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Date: Wed, 24 Dec 2025 16:22:19 -0500 Subject: [PATCH 07/10] chore: update sdk readmes (#1324) The PR was automatically generated via the update-sdk-docs GitHub workflow. Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Signed-off-by: wadii --- docs/reference/sdks/client/kotlin.mdx | 2 +- docs/reference/sdks/client/swift.mdx | 2 +- docs/reference/sdks/client/web/angular.mdx | 2 +- docs/reference/sdks/client/web/index.mdx | 2 +- docs/reference/sdks/client/web/react.mdx | 80 ++++++++++++++++++- docs/reference/sdks/server/dart.mdx | 2 +- docs/reference/sdks/server/dotnet.mdx | 6 +- docs/reference/sdks/server/go.mdx | 2 +- docs/reference/sdks/server/java.mdx | 2 +- .../sdks/server/javascript/index.mdx | 2 +- .../sdks/server/javascript/nestjs.mdx | 2 +- docs/reference/sdks/server/php.mdx | 6 +- docs/reference/sdks/server/python.mdx | 2 +- docs/reference/sdks/server/ruby.mdx | 2 +- docs/reference/sdks/server/rust.mdx | 2 +- src/datasets/sdks/sdk-compatibility.json | 8 +- 16 files changed, 99 insertions(+), 25 deletions(-) diff --git a/docs/reference/sdks/client/kotlin.mdx b/docs/reference/sdks/client/kotlin.mdx index 05e4480c6..ef27288d1 100644 --- a/docs/reference/sdks/client/kotlin.mdx +++ b/docs/reference/sdks/client/kotlin.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from kotlin-sdk. Edits should be made here: https://github.com/open-feature/kotlin-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/swift.mdx b/docs/reference/sdks/client/swift.mdx index 601d516ec..92fd21e3a 100644 --- a/docs/reference/sdks/client/swift.mdx +++ b/docs/reference/sdks/client/swift.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from swift-sdk. Edits should be made here: https://github.com/open-feature/swift-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/angular.mdx b/docs/reference/sdks/client/web/angular.mdx index d8c98cd93..26b855bc7 100644 --- a/docs/reference/sdks/client/web/angular.mdx +++ b/docs/reference/sdks/client/web/angular.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/client/web/index.mdx b/docs/reference/sdks/client/web/index.mdx index b3a645b75..ca4f5c296 100644 --- a/docs/reference/sdks/client/web/index.mdx +++ b/docs/reference/sdks/client/web/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/react.mdx b/docs/reference/sdks/client/web/react.mdx index 22e4387ec..d285dbc43 100644 --- a/docs/reference/sdks/client/web/react.mdx +++ b/docs/reference/sdks/client/web/react.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -49,6 +49,8 @@ In addition to the feature provided by the [web sdk](/docs/reference/sdks/client - [Usage](#usage) - [OpenFeatureProvider context provider](#openfeatureprovider-context-provider) - [Evaluation hooks](#evaluation-hooks) + - [Declarative components](#declarative-components) + - [FeatureFlag Component](#featureflag-component) - [Multiple Providers and Domains](#multiple-providers-and-domains) - [Re-rendering with Context Changes](#re-rendering-with-context-changes) - [Re-rendering with Flag Configuration Changes](#re-rendering-with-flag-configuration-changes) @@ -168,6 +170,68 @@ import { useBooleanFlagDetails } from '@openfeature/react-sdk'; const { value, variant, reason, flagMetadata } = useBooleanFlagDetails('new-message', false); ``` +#### Declarative components + +The React SDK includes declarative components for feature flagging that provide a more JSX-native approach to conditional rendering. + +##### FeatureFlag Component + +The `FeatureFlag` component conditionally renders its children based on feature flag evaluation: + +```tsx +import { FeatureFlag } from '@openfeature/react-sdk'; + +function App() { + return ( + + {/* Basic usage - renders children when flag is truthy */} + + + + + {/* Match specific values */} + + + + + {/* Boolean flag with fallback */} + }> + + + + {/* Custom predicate function for complex matching */} + !!expected && actual.value.includes(expected)} + > + + + + {/* Function as children for accessing flag details */} + + {({ value, reason }) => ( + + value is {value}, reason is {reason?.toString()} + + )} + + + ); +} +``` + +The `FeatureFlag` component supports the following props: + +- **`flagKey`** (required): The feature flag key to evaluate +- **`defaultValue`** (required): Default value when the flag is not available +- **`matchValue`** (required, except for boolean flags): Value to match against the flag value. By default, an optimized deep-comparison function is used. +- **`predicate`** (optional): Custom function for matching logic that receives the expected value and evaluation details +- **`children`**: Content to render when condition is met (can be JSX or a function receiving flag details) +- **`fallback`** (optional): Content to render when condition is not met + #### Multiple Providers and Domains Multiple providers can be used by passing a `domain` to the `OpenFeatureProvider`: @@ -310,8 +374,8 @@ The [OpenFeature debounce hook](https://github.com/open-feature/js-sdk-contrib/t ### Testing The React SDK includes a built-in context provider for testing. -This allows you to easily test components that use evaluation hooks, such as `useFlag`. -If you try to test a component (in this case, `MyComponent`) which uses an evaluation hook, you might see an error message like: +This allows you to easily test components that use evaluation hooks (such as `useFlag`) or declarative components (such as `FeatureFlag`). +If you try to test a component (in this case, `MyComponent`) which uses feature flags, you might see an error message like: > No OpenFeature client available - components using OpenFeature must be wrapped with an ``. @@ -332,6 +396,16 @@ If you'd like to control the values returned by the evaluation hooks, you can pa + +// testing declarative FeatureFlag components + + + + + + + + ``` Additionally, you can pass an artificial delay for the provider startup to test your suspense boundaries or loaders/spinners impacted by feature flags: diff --git a/docs/reference/sdks/server/dart.mdx b/docs/reference/sdks/server/dart.mdx index f2e8a8257..78dd9a1b8 100644 --- a/docs/reference/sdks/server/dart.mdx +++ b/docs/reference/sdks/server/dart.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from dart-server-sdk. Edits should be made here: https://github.com/open-feature/dart-server-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/server/dotnet.mdx b/docs/reference/sdks/server/dotnet.mdx index c7b8d8f7a..576f0412e 100644 --- a/docs/reference/sdks/server/dotnet.mdx +++ b/docs/reference/sdks/server/dotnet.mdx @@ -10,15 +10,15 @@ This content has been automatically generated from dotnet-sdk. Edits should be made here: https://github.com/open-feature/dotnet-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; [![Specification](https://img.shields.io/static/v1?label=specification&message=v0.8.0&color=yellow&style=for-the-badge)](https://github.com/open-feature/spec/releases/tag/v0.8.0) [ -![Release](https://img.shields.io/static/v1?label=release&message=v2.10.0&color=blue&style=for-the-badge) -](https://github.com/open-feature/dotnet-sdk/releases/tag/v2.10.0) +![Release](https://img.shields.io/static/v1?label=release&message=v2.11.0&color=blue&style=for-the-badge) +](https://github.com/open-feature/dotnet-sdk/releases/tag/v2.11.0) [![Slack](https://img.shields.io/badge/slack-%40cncf%2Fopenfeature-brightgreen?style=flat&logo=slack)](https://cloud-native.slack.com/archives/C0344AANLA1) [![Codecov](https://codecov.io/gh/open-feature/dotnet-sdk/branch/main/graph/badge.svg?token=MONAVJBXUJ)](https://codecov.io/gh/open-feature/dotnet-sdk) diff --git a/docs/reference/sdks/server/go.mdx b/docs/reference/sdks/server/go.mdx index 6903732d9..b7987bc96 100644 --- a/docs/reference/sdks/server/go.mdx +++ b/docs/reference/sdks/server/go.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from go-sdk. Edits should be made here: https://github.com/open-feature/go-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/java.mdx b/docs/reference/sdks/server/java.mdx index 44f988993..5419933df 100644 --- a/docs/reference/sdks/server/java.mdx +++ b/docs/reference/sdks/server/java.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from java-sdk. Edits should be made here: https://github.com/open-feature/java-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:38 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/javascript/index.mdx b/docs/reference/sdks/server/javascript/index.mdx index db8243d39..8c890408e 100644 --- a/docs/reference/sdks/server/javascript/index.mdx +++ b/docs/reference/sdks/server/javascript/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:38 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/javascript/nestjs.mdx b/docs/reference/sdks/server/javascript/nestjs.mdx index 44b9960c9..a9794a7a6 100644 --- a/docs/reference/sdks/server/javascript/nestjs.mdx +++ b/docs/reference/sdks/server/javascript/nestjs.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/php.mdx b/docs/reference/sdks/server/php.mdx index 36b899f32..19454b6fa 100644 --- a/docs/reference/sdks/server/php.mdx +++ b/docs/reference/sdks/server/php.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from php-sdk. Edits should be made here: https://github.com/open-feature/php-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -21,8 +21,8 @@ import MCPInstall from '@site/src/partials/mcp-install'; - - Release + + Release diff --git a/docs/reference/sdks/server/python.mdx b/docs/reference/sdks/server/python.mdx index a6d3ada23..be785018e 100644 --- a/docs/reference/sdks/server/python.mdx +++ b/docs/reference/sdks/server/python.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from python-sdk. Edits should be made here: https://github.com/open-feature/python-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/ruby.mdx b/docs/reference/sdks/server/ruby.mdx index 8116d8b10..e14c08b16 100644 --- a/docs/reference/sdks/server/ruby.mdx +++ b/docs/reference/sdks/server/ruby.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from ruby-sdk. Edits should be made here: https://github.com/open-feature/ruby-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/rust.mdx b/docs/reference/sdks/server/rust.mdx index 4bb9e51ba..1697cccde 100644 --- a/docs/reference/sdks/server/rust.mdx +++ b/docs/reference/sdks/server/rust.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from rust-sdk. Edits should be made here: https://github.com/open-feature/rust-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Thu Dec 18 2025 08:11:39 GMT+0000 (Coordinated Universal Time) +Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) -->

diff --git a/src/datasets/sdks/sdk-compatibility.json b/src/datasets/sdks/sdk-compatibility.json index ec041f021..b68d12ee3 100644 --- a/src/datasets/sdks/sdk-compatibility.json +++ b/src/datasets/sdks/sdk-compatibility.json @@ -124,8 +124,8 @@ "path": "/docs/reference/sdks/server/dotnet", "category": "Server", "release": { - "href": "https://github.com/open-feature/dotnet-sdk/releases/tag/v2.10.0", - "version": "2.10.0", + "href": "https://github.com/open-feature/dotnet-sdk/releases/tag/v2.11.0", + "version": "2.11.0", "stable": true }, "spec": { @@ -304,8 +304,8 @@ "path": "/docs/reference/sdks/server/php", "category": "Server", "release": { - "href": "https://github.com/open-feature/php-sdk/releases/tag/2.1.0", - "version": "2.1.0", + "href": "https://github.com/open-feature/php-sdk/releases/tag/2.1.1", + "version": "2.1.1", "stable": true }, "spec": { From d0d720f206eb12e0e6fecd5800dbf2935b725127 Mon Sep 17 00:00:00 2001 From: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Date: Mon, 5 Jan 2026 08:13:49 -0500 Subject: [PATCH 08/10] chore: update sdk readmes (#1325) The PR was automatically generated via the update-sdk-docs GitHub workflow. Signed-off-by: OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com> Signed-off-by: wadii --- docs/reference/sdks/client/kotlin.mdx | 2 +- docs/reference/sdks/client/swift.mdx | 2 +- docs/reference/sdks/client/web/angular.mdx | 2 +- docs/reference/sdks/client/web/index.mdx | 2 +- docs/reference/sdks/client/web/react.mdx | 4 +-- docs/reference/sdks/server/dart.mdx | 30 ++++++++++--------- docs/reference/sdks/server/dotnet.mdx | 2 +- docs/reference/sdks/server/go.mdx | 2 +- docs/reference/sdks/server/java.mdx | 2 +- .../sdks/server/javascript/index.mdx | 2 +- .../sdks/server/javascript/nestjs.mdx | 2 +- docs/reference/sdks/server/php.mdx | 2 +- docs/reference/sdks/server/python.mdx | 2 +- docs/reference/sdks/server/ruby.mdx | 2 +- docs/reference/sdks/server/rust.mdx | 2 +- src/datasets/sdks/sdk-compatibility.json | 4 +-- 16 files changed, 33 insertions(+), 31 deletions(-) diff --git a/docs/reference/sdks/client/kotlin.mdx b/docs/reference/sdks/client/kotlin.mdx index ef27288d1..97fa9f084 100644 --- a/docs/reference/sdks/client/kotlin.mdx +++ b/docs/reference/sdks/client/kotlin.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from kotlin-sdk. Edits should be made here: https://github.com/open-feature/kotlin-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/swift.mdx b/docs/reference/sdks/client/swift.mdx index 92fd21e3a..60c09d6b2 100644 --- a/docs/reference/sdks/client/swift.mdx +++ b/docs/reference/sdks/client/swift.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from swift-sdk. Edits should be made here: https://github.com/open-feature/swift-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/angular.mdx b/docs/reference/sdks/client/web/angular.mdx index 26b855bc7..6fb4a51aa 100644 --- a/docs/reference/sdks/client/web/angular.mdx +++ b/docs/reference/sdks/client/web/angular.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) -->

diff --git a/docs/reference/sdks/client/web/index.mdx b/docs/reference/sdks/client/web/index.mdx index ca4f5c296..059d5aa48 100644 --- a/docs/reference/sdks/client/web/index.mdx +++ b/docs/reference/sdks/client/web/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/client/web/react.mdx b/docs/reference/sdks/client/web/react.mdx index d285dbc43..6cab76aee 100644 --- a/docs/reference/sdks/client/web/react.mdx +++ b/docs/reference/sdks/client/web/react.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; @@ -402,7 +402,7 @@ If you'd like to control the values returned by the evaluation hooks, you can pa - + diff --git a/docs/reference/sdks/server/dart.mdx b/docs/reference/sdks/server/dart.mdx index 78dd9a1b8..e6277d6a0 100644 --- a/docs/reference/sdks/server/dart.mdx +++ b/docs/reference/sdks/server/dart.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from dart-server-sdk. Edits should be made here: https://github.com/open-feature/dart-server-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) -->

@@ -19,8 +19,8 @@ Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) - - Release + + Release @@ -56,7 +56,7 @@ Dart language version: [3.9.2](https://dart.dev/get-dart/archive) ```yaml dependencies: - openfeature_dart_server_sdk: ^0.0.13 + openfeature_dart_server_sdk: ^0.0.15 ``` ### Then run: @@ -69,26 +69,21 @@ dart pub get ```dart import 'dart:async'; -import 'package:openfeature_dart_server_sdk/client.dart'; import 'package:openfeature_dart_server_sdk/open_feature_api.dart'; import 'package:openfeature_dart_server_sdk/feature_provider.dart'; -import 'package:openfeature_dart_server_sdk/evaluation_context.dart'; -import 'package:openfeature_dart_server_sdk/hooks.dart'; void main() async { - // Register your feature flag provider + // Get the API instance final api = OpenFeatureAPI(); - api.setProvider(InMemoryProvider({ + + // Register your feature flag provider and wait for it to be ready + await api.setProviderAndWait(InMemoryProvider({ 'new-feature': true, 'welcome-message': 'Hello, OpenFeature!' })); // Create a client - final client = FeatureClient( - metadata: ClientMetadata(name: 'my-app'), - hookManager: HookManager(), - defaultContext: EvaluationContext(attributes: {}), - ); + final client = api.getClient('my-app'); // Evaluate your feature flags final newFeatureEnabled = await client.getBooleanFlag( @@ -96,6 +91,13 @@ void main() async { defaultValue: false, ); + // Get full evaluation details if needed + final details = await client.getBooleanDetails( + 'new-feature', + defaultValue: false, + ); + print('Reason: ${details.reason}, Variant: ${details.variant}'); + // Use the returned flag value if (newFeatureEnabled) { print('New feature is enabled!'); diff --git a/docs/reference/sdks/server/dotnet.mdx b/docs/reference/sdks/server/dotnet.mdx index 576f0412e..22cae4b5f 100644 --- a/docs/reference/sdks/server/dotnet.mdx +++ b/docs/reference/sdks/server/dotnet.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from dotnet-sdk. Edits should be made here: https://github.com/open-feature/dotnet-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/go.mdx b/docs/reference/sdks/server/go.mdx index b7987bc96..ce763e510 100644 --- a/docs/reference/sdks/server/go.mdx +++ b/docs/reference/sdks/server/go.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from go-sdk. Edits should be made here: https://github.com/open-feature/go-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/java.mdx b/docs/reference/sdks/server/java.mdx index 5419933df..1ee73f58a 100644 --- a/docs/reference/sdks/server/java.mdx +++ b/docs/reference/sdks/server/java.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from java-sdk. Edits should be made here: https://github.com/open-feature/java-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/javascript/index.mdx b/docs/reference/sdks/server/javascript/index.mdx index 8c890408e..975cd5a16 100644 --- a/docs/reference/sdks/server/javascript/index.mdx +++ b/docs/reference/sdks/server/javascript/index.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/javascript/nestjs.mdx b/docs/reference/sdks/server/javascript/nestjs.mdx index a9794a7a6..a3610e2d9 100644 --- a/docs/reference/sdks/server/javascript/nestjs.mdx +++ b/docs/reference/sdks/server/javascript/nestjs.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from js-sdk. Edits should be made here: https://github.com/open-feature/js-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/php.mdx b/docs/reference/sdks/server/php.mdx index 19454b6fa..fb54c6dbf 100644 --- a/docs/reference/sdks/server/php.mdx +++ b/docs/reference/sdks/server/php.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from php-sdk. Edits should be made here: https://github.com/open-feature/php-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/python.mdx b/docs/reference/sdks/server/python.mdx index be785018e..df00e31e4 100644 --- a/docs/reference/sdks/server/python.mdx +++ b/docs/reference/sdks/server/python.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from python-sdk. Edits should be made here: https://github.com/open-feature/python-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:43 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:25 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/ruby.mdx b/docs/reference/sdks/server/ruby.mdx index e14c08b16..ab8470227 100644 --- a/docs/reference/sdks/server/ruby.mdx +++ b/docs/reference/sdks/server/ruby.mdx @@ -10,7 +10,7 @@ This content has been automatically generated from ruby-sdk. Edits should be made here: https://github.com/open-feature/ruby-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) --> import MCPInstall from '@site/src/partials/mcp-install'; diff --git a/docs/reference/sdks/server/rust.mdx b/docs/reference/sdks/server/rust.mdx index 1697cccde..e5e369c22 100644 --- a/docs/reference/sdks/server/rust.mdx +++ b/docs/reference/sdks/server/rust.mdx @@ -9,7 +9,7 @@ This content has been automatically generated from rust-sdk. Edits should be made here: https://github.com/open-feature/rust-sdk Once a repo has been updated, docs can be generated by running: yarn update:sdk-docs -Last updated at Wed Dec 24 2025 08:11:44 GMT+0000 (Coordinated Universal Time) +Last updated at Mon Jan 05 2026 08:13:26 GMT+0000 (Coordinated Universal Time) -->

diff --git a/src/datasets/sdks/sdk-compatibility.json b/src/datasets/sdks/sdk-compatibility.json index b68d12ee3..4751bef56 100644 --- a/src/datasets/sdks/sdk-compatibility.json +++ b/src/datasets/sdks/sdk-compatibility.json @@ -592,8 +592,8 @@ "path": "/docs/reference/sdks/server/dart", "category": "Server", "release": { - "href": "https://github.com/open-feature/dart-server-sdk/releases/tag/v0.0.13", - "version": "0.0.13", + "href": "https://github.com/open-feature/dart-server-sdk/releases/tag/v0.0.15", + "version": "0.0.15", "stable": false }, "spec": { From 1dc21e04071e1c4e9bbb2ff362e79d3dfd9630ab Mon Sep 17 00:00:00 2001 From: wadii Date: Mon, 5 Jan 2026 15:41:06 +0100 Subject: [PATCH 09/10] feat: added-link-to-php-provider Signed-off-by: wadii --- src/datasets/providers/flagsmith.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datasets/providers/flagsmith.ts b/src/datasets/providers/flagsmith.ts index 3ca69153e..f5d4ca969 100644 --- a/src/datasets/providers/flagsmith.ts +++ b/src/datasets/providers/flagsmith.ts @@ -38,7 +38,7 @@ export const Flagsmith: Provider = { { technology: 'PHP', vendorOfficial: true, - href: 'TBD', + href: 'https://github.com/open-feature/php-sdk-contrib/tree/main/providers/Flagsmith', category: ['Server'], }, { From 908213322c8c92ca70143e309d13e8410ed1b8a5 Mon Sep 17 00:00:00 2001 From: wadii Date: Mon, 5 Jan 2026 18:01:19 +0100 Subject: [PATCH 10/10] feat: reordered-alphabetically Signed-off-by: wadii --- src/datasets/providers/flagsmith.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/datasets/providers/flagsmith.ts b/src/datasets/providers/flagsmith.ts index f5d4ca969..9c934bc97 100644 --- a/src/datasets/providers/flagsmith.ts +++ b/src/datasets/providers/flagsmith.ts @@ -5,6 +5,12 @@ export const Flagsmith: Provider = { name: 'Flagsmith', logo: FlagsmithSvg, technologies: [ + { + technology: '.NET', + vendorOfficial: true, + href: 'https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Contrib.Providers.Flagsmith', + category: ['Server'], + }, { technology: 'Go', vendorOfficial: true, @@ -29,12 +35,6 @@ export const Flagsmith: Provider = { href: 'https://github.com/open-feature/js-sdk-contrib/tree/main/libs/providers/flagsmith', category: ['Server'], }, - { - technology: '.NET', - vendorOfficial: true, - href: 'https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Contrib.Providers.Flagsmith', - category: ['Server'], - }, { technology: 'PHP', vendorOfficial: true,