diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/android-sdk.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/android-sdk.md
new file mode 100644
index 00000000000..cdab4142fb0
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/android-sdk.md
@@ -0,0 +1,194 @@
+---
+title: OpenFeature Provider for Android SDK
+sidebar_label: Android OpenFeature Provider
+sidebar_position: 1
+description: Integrate OpenFeature with Harness FME in your Android applications to evaluate feature flags, manage contexts, and track events using a standardized SDK.
+---
+
+Integrate your Android applications with Harness FME using the Android OpenFeature Provider, a standardized, vendor-agnostic feature flagging API. This provider implements the OpenFeature specification and bridges the OpenFeature SDK with the Harness FME Android SDK.
+
+This page walks you through installing, configuring, and using the Android OpenFeature provider to evaluate feature flags in your Android applications.
+
+### Prerequisites
+
+Before you begin, ensure you have the following:
+
+- A valid [Harness FME SDK key](/docs/feature-management-experimentation/sdks-and-infrastructure/#api-keys) for your project
+- An Android project targeting API Level 21 (Android 5.0 Lollipop) or later
+- Access to your project's `build.gradle` or `build.gradle.kts` file to add the provider dependency
+
+### Version compatibility
+
+| Component | Minimum Version |
+| --------------------------------- | ----------------------------------- |
+| Android | API Level 21 (Android 5.0 Lollipop) |
+| `@splitsoftware/split-openfeature-provider-android` | ≥ 1.0.0 |
+| OpenFeature Kotlin SDK | ≥ 0.7.0 |
+
+## Install the provider and dependencies
+
+Add the Harness FME OpenFeature provider dependency to your application's `build.gradle.kts` file.
+
+```kotlin
+dependencies {
+ implementation("io.split.openfeature:split-openfeature-android:1.0.0")
+}
+```
+
+Or, if you're using the Groovy DSL (`build.gradle`):
+
+```groovy
+dependencies {
+ implementation 'io.split.openfeature:split-openfeature-android:1.0.0'
+}
+```
+
+## Initialize the provider
+
+The Harness FME OpenFeature provider requires an Android application `Context` (for SDK initialization) and your Harness FME SDK Key.
+
+```kotlin
+import dev.openfeature.kotlin.sdk.OpenFeatureAPI
+import dev.openfeature.kotlin.sdk.ImmutableContext
+import io.split.openfeature.android.provider.SplitProvider
+
+// Create provider configuration
+val config = SplitProvider.Config(
+ applicationContext = applicationContext,
+ sdkKey = "YOUR_SDK_KEY"
+)
+
+// Create the FME provider
+val provider = SplitProvider(config = config)
+
+// Set the provider with an initial context containing a targeting key
+val initialContext = ImmutableContext(targetingKey = "user-123")
+OpenFeatureAPI.setProvider(provider, initialContext = initialContext)
+
+// Get a client and evaluate flags
+val client = OpenFeatureAPI.getClient()
+val showNewFeature = client.getBooleanValue("new-feature", false)
+```
+
+## Construct an evaluation context
+
+Provide an evaluation context with a targeting key to evaluate flags. The evaluation context passes targeting information such as user IDs, email addresses, or plan types for flag targeting.
+
+For example:
+
+```kotlin
+val context = ImmutableContext(
+ targetingKey = "user-123",
+ attributes = mapOf(
+ "email" to Value.String("user@example.com"),
+ "age" to Value.Integer(30),
+ "plan" to Value.String("premium")
+ )
+)
+
+val client = OpenFeatureAPI.getClient()
+val result = client.getBooleanDetails("premium-feature", false, context)
+```
+
+To set a targeting key during initialization:
+
+```kotlin
+val initialContext = ImmutableContext(targetingKey = "user-123")
+OpenFeatureAPI.setProvider(provider, initialContext = initialContext)
+```
+
+To change a targeting key at runtime:
+
+```kotlin
+val newContext = ImmutableContext(targetingKey = "user-456")
+OpenFeatureAPI.setEvaluationContext(newContext)
+```
+
+## Observe provider events
+
+The Harness FME OpenFeature provider emits events when provider state changes (for example, when flags update, configuration changes, or errors) occur. You can observe these events to update your application's behavior in real time.
+
+You can enable your application to:
+
+- Refresh feature-dependent UI when flags change
+- Gracefully handle degraded states (i.e., when the provider becomes stale)
+- Log or alert on configuration or network issues
+- Control initialization flows based on provider readiness
+
+For example:
+
+```kotlin
+import dev.openfeature.kotlin.sdk.events.OpenFeatureProviderEvents
+import kotlinx.coroutines.launch
+
+// Observe provider events
+lifecycleScope.launch {
+ provider.observe().collect { event ->
+ when (event) {
+ is OpenFeatureProviderEvents.ProviderReady -> {
+ // Provider is ready to evaluate flags
+ Log.d("Split", "Provider is ready")
+ }
+ is OpenFeatureProviderEvents.ProviderConfigurationChanged -> {
+ // Flag configuration has been updated
+ Log.d("Split", "Configuration changed")
+ }
+ is OpenFeatureProviderEvents.ProviderStale -> {
+ // Provider is serving cached data
+ Log.d("Split", "Provider is stale")
+ }
+ is OpenFeatureProviderEvents.ProviderError -> {
+ // An error occurred
+ Log.e("Split", "Provider error: ${event.error}")
+ }
+ }
+ }
+}
+```
+
+## Track events
+
+The Harness FME OpenFeature provider supports tracking user actions or conversion events directly from your Android application.
+
+To enable event tracking, your evaluation context must include the following:
+
+- A non-empty `targetingKey`
+- A [`TrafficType`](/docs/feature-management-experimentation/management-and-administration/fme-settings/traffic-types/) (for example, `"user"` or `"account"`)
+- A non-blank event name
+
+Optionally, you can include:
+
+Optionally, you can include a numeric value (defaults to 0) and additional event properties (prefers primitives such as string, number, boolean, or null). For more information, see [Sending Events](/docs/feature-management-experimentation/api/events/#event-record-fields).
+
+```kotlin
+// Set context with trafficType
+val context = ImmutableContext(targetingKey = "user-123")
+ .withTrafficType("user")
+
+OpenFeatureAPI.setEvaluationContext(context)
+
+// Track an event
+val client = OpenFeatureAPI.getClient()
+client.track("button_clicked")
+
+// Track with a value
+client.track(
+ "purchase_completed",
+ TrackingEventDetails(value = 99.99)
+)
+
+// Track with properties
+client.track(
+ "page_viewed",
+ TrackingEventDetails(
+ structure = ImmutableStructure(
+ mapOf(
+ "page" to Value.String("home"),
+ "referrer" to Value.String("google")
+ )
+ )
+ )
+)
+```
+
+For more information, go to the [Harness FME Android OpenFeature Provider GitHub repository](https://github.com/splitio/split-openfeature-provider-android/).
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/index.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/index.md
new file mode 100644
index 00000000000..680c127c1c2
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/index.md
@@ -0,0 +1,64 @@
+---
+title: OpenFeature Providers
+id: index
+slug: /feature-management-experimentation/sdks-and-infrastructure/openfeature
+sidebar_position: 1
+description: Learn about using Harness OpenFeature providers for feature management.
+---
+
+[OpenFeature](https://openfeature.dev/docs/reference/intro) offers a standardized, vendor-agnostic SDK for feature flagging that can integrate with a variety of third-party providers. Whether you're using an open-source or commercial solution, self-hosted or cloud-hosted, OpenFeature gives developers a unified API for consistent feature flag evaluation.
+
+OpenFeature SDKs provide flexible abstractions that make it easy to integrate feature flags into any application. Within your application, the feature flagging client uses the OpenFeature SDK to evaluate feature flags through the Evaluation API.
+
+Each flag evaluation passes an evaluation context, which provides relevant data about the application or user.
+
+```mermaid
+flowchart LR
+ %% Outer app box
+ subgraph YourApp["Your App"]
+ style YourApp fill:#D0E4FF,stroke:#0000FF,stroke-width:2px
+
+ %% Feature Flagging Client (yellow dotted box)
+ subgraph FeatureFlagClient["Feature Flagging Client"]
+ style FeatureFlagClient stroke:#FFD700,stroke-dasharray: 5 5
+
+ %% Puzzle piece: OpenFeature SDK
+ subgraph OpenFeatureSDK["OpenFeature SDK"]
+ style OpenFeatureSDK fill:#FFFF99,stroke:#FFD700
+
+ %% Flag Evaluation API inside SDK
+ FlagEvalAPI["Flag Evaluation API"]
+ end
+
+ %% OpenFeature Provider in second half of puzzle piece
+ OpenFeatureProvider["Harness FME OpenFeature Provider"]
+ end
+
+ %% Arrows from Flag Eval through Eval Context directly into FlagEvalAPI
+ FlagEval1["Flag Eval"] --> EvalCtx1["Eval Context"] --> FlagEvalAPI
+ FlagEval2["Flag Eval"] --> EvalCtx2["Eval Context"] --> FlagEvalAPI
+ end
+
+ %% External Harness FME Service in cloud
+ HarnessFME["Harness FME Service"]:::cloudStyle
+
+ %% Bidirectional arrow between OpenFeature Provider and Harness FME
+ OpenFeatureProvider <--> HarnessFME
+
+ %% Styling for cloud
+ classDef cloudStyle fill:#A4E5A4,stroke:#2E8B57,stroke-width:2px,shape:cloud
+```
+
+
+
+The OpenFeature Provider wraps the Harness FME SDK, bridging the OpenFeature SDK with the Harness Feature Management & Experimentation (FME) service. The provider maps OpenFeature's standardized interface to the FME SDK, which handles communication with Harness services to evaluate feature flags and retrieve configuration updates.
+
+## Use OpenFeature SDKs
+
+Harness FME offers official OpenFeature providers for the following SDKs.
+
+import { Section, openfeatureSDKs } from '@site/src/components/Docs/data/fmeOpenfeature';
+
+
+
+You can use these providers instead of the Harness FME SDK in your application.
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/java-sdk.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/java-sdk.md
new file mode 100644
index 00000000000..f0b112be362
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/java-sdk.md
@@ -0,0 +1,139 @@
+---
+title: OpenFeature Provider for Java SDK
+sidebar_label: Java OpenFeature Provider
+sidebar_position: 3
+description: Integrate OpenFeature with Harness FME in your Java applications to evaluate feature flags, manage contexts, and track events using a standardized SDK.
+---
+
+Integrate your Java applications with Harness FME using the Java OpenFeature Provider, a standardized, vendor-agnostic feature flagging API. This provider implements the OpenFeature specification and bridges the OpenFeature SDK with the Harness FME Java SDK.
+
+This page walks you through installing, configuring, and using the Java OpenFeature provider to evaluate feature flags in your Java applications.
+
+### Prerequisites
+
+Before you begin, ensure you have the following:
+
+- A valid [Harness FME SDK key](/docs/feature-management-experimentation/sdks-and-infrastructure/#api-keys) for your project
+- A Java environment running version 11 or later
+- Access to your Maven build configuration
+
+### Version compatibility
+
+| Component | Minimum Version |
+| ---------------------------------------- | ---------------- |
+| Java | 11+ |
+| `@splitsoftware/split-openfeature-provider-java` | ≥ 1.2.1 |
+| OpenFeature Java SDK | ≥ 1.0.0 |
+
+## Install the provider and dependencies
+
+Add the Harness FME OpenFeature provider dependency to your Maven build configuration.
+
+```java
+
+ io.split.openfeature
+ split-openfeature-provider
+ 1.2.1
+
+```
+
+## Initialize the provider
+
+You can instantiate and register the provider using your Harness FME SDK key.
+
+```java
+import dev.openfeature.sdk.OpenFeatureAPI;
+import io.split.openfeature.SplitProvider;
+
+OpenFeatureAPI api = OpenFeatureAPI.getInstance();
+api.setProviderAndWait(new SplitProvider(""));
+```
+
+Alternatively, if you want more control or need [advanced initialization](/docs/feature-management-experimentation/sdks-and-infrastructure/server-side-sdks/java-sdk/#configuration), you can create a `SplitClient` and provide it directly:
+
+```java
+import dev.openfeature.sdk.OpenFeatureAPI;
+import io.split.openfeature.SplitProvider;
+import io.split.client.SplitClient;
+import io.split.client.SplitClientConfig;
+import io.split.client.SplitFactoryBuilder;
+
+OpenFeatureAPI api = OpenFeatureAPI.getInstance();
+
+
+SplitClientConfig config = SplitClientConfig.builder()
+ .setBlockUntilReadyTimeout(10000)
+ .build();
+SplitClient splitClient = SplitFactoryBuilder.build("", config).client();
+api.setProviderAndWait(new SplitProvider(splitClient));
+```
+
+## Construct an evaluation context
+
+Provide an evaluation context with a targeting key to evaluate flags. The evaluation context passes targeting information such as user IDs, email addresses, or plan types for flag targeting.
+
+For example:
+
+```java
+Client client = api.getClient("CLIENT_NAME");
+
+EvaluationContext context = new MutableContext("");
+Boolean boolValue = client.getBooleanValue("boolFlag", false, context);
+```
+
+If the same targeting key is reused across evaluations, set the context at the client or API level:
+
+```java
+EvaluationContext context = new MutableContext("");
+client.setEvaluationContext(context)
+```
+
+Or globally:
+
+```java
+EvaluationContext context = new MutableContext("");
+OpenFeatureAPI.getInstance().setEvaluationContext(context)
+```
+
+Once the context is set at the client or API level, you don’t need to provide it for each evaluation.
+
+## Evaluate with details
+
+Use the `get*Details(...)` APIs to get flag values and metadata (such as variant, reason, error code, and configuration). The FME treatment configuration is returned as a raw JSON string under `flagMetadata["config"]`.
+
+For example:
+
+```java
+// boolean/string/number/object all have *Details variants:
+FlagEvaluationDetails details =
+ client.getStringDetails("my-flag", "fallback", ctx);
+
+String jsonConfig = details.getFlagMetadata().getString("config"); // ← Split treatment config
+```
+
+## Track events
+
+The Harness FME OpenFeature provider supports tracking user actions or conversion events directly from your Java application.
+
+To enable event tracking, your evaluation context must include the following:
+
+- A non-empty `targetingKey`
+- A [`trafficType`](/docs/feature-management-experimentation/management-and-administration/fme-settings/traffic-types/) (for example, `"user"` or `"account"`)
+- A non-blank event name
+
+Optionally, you can include a numeric value and additional event properties. For more information, see [Sending Events](/docs/feature-management-experimentation/api/events/#event-record-fields).
+
+For example:
+
+```java
+MutableContext ctx = new MutableContext("user-123");
+ctx.add("trafficType", new Value("user"));
+
+TrackingEventDetails details = new MutableTrackingEventDetails(19.99)
+ .add("plan", new Value("pro"))
+ .add("coupon", new Value("WELCOME10"));
+
+client.track("checkout.completed", ctx, details);
+```
+
+For more information, go to the [Harness FME Java OpenFeature Provider GitHub repository](https://github.com/splitio/split-openfeature-provider-java).
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/nodejs-sdk.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/nodejs-sdk.md
new file mode 100644
index 00000000000..9a740a3fbbf
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/nodejs-sdk.md
@@ -0,0 +1,168 @@
+---
+title: OpenFeature Provider for Node.js SDK
+sidebar_label: Node.js OpenFeature Provider
+sidebar_position: 4
+description: Integrate OpenFeature with Harness FME in your Node.js applications to evaluate feature flags, manage contexts, and track events using a standardized SDK.
+---
+
+Integrate your Node.js applications with Harness FME using the Node.js OpenFeature Provider, a standardized, vendor-agnostic feature flagging API. This provider implements the OpenFeature specification and bridges the OpenFeature SDK with the Harness FME Node.js SDK.
+
+This page walks you through installing, configuring, and using the Node.js OpenFeature provider to evaluate feature flags in your Node.js applications.
+
+### Prerequisites
+
+Before you begin, ensure you have the following:
+
+- A valid [Harness FME SDK key](/docs/feature-management-experimentation/sdks-and-infrastructure/#api-keys) for your project
+- A Node.js environment running version 14.x or later
+- Access to `npm` or `yarn` to install dependencies
+
+### Version compatibility
+
+| Component | Minimum Version |
+| ---------------------------------------- | ---------------- |
+| Node.js | 14.x+ |
+| `@splitsoftware/openfeature-js-split-provider` | ≥ 1.0.0 |
+| OpenFeature Node.js SDK | ≥ 1.0.0 |
+
+## Install the provider and dependencies
+
+Install the Harness FME OpenFeature provider and required peer dependencies:
+
+```bash
+npm install @splitsoftware/openfeature-js-split-provider
+npm install @splitsoftware/splitio
+npm install @openfeature/server-sdk
+```
+
+## Initialize the provider
+
+You can register the provider with OpenFeature in one of several ways, depending on your setup.
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+
+
+If you are using an SDK API key:
+
+```javascript
+const OpenFeature = require('@openfeature/server-sdk').OpenFeature;
+const OpenFeatureSplitProvider = require('@splitsoftware/openfeature-js-split-provider').OpenFeatureSplitProvider;
+
+const authorizationKey = ''
+const provider = new OpenFeatureSplitProvider(authorizationKey);
+OpenFeature.setProvider(provider);
+```
+
+
+
+
+If you are using a Split Factory:
+
+```javascript
+const OpenFeature = require('@openfeature/server-sdk').OpenFeature;
+const SplitFactory = require('@splitsoftware/splitio').SplitFactory;
+const OpenFeatureSplitProvider = require('@splitsoftware/openfeature-js-split-provider').OpenFeatureSplitProvider;
+
+const authorizationKey = ''
+const splitFactory = SplitFactory({core: {authorizationKey}});
+const provider = new OpenFeatureSplitProvider(splitFactory);
+OpenFeature.setProvider(provider);
+```
+
+
+
+
+If you are using a Split client directly (not recommended for new implementations):
+
+```javascript
+const OpenFeature = require('@openfeature/server-sdk').OpenFeature;
+const SplitFactory = require('@splitsoftware/splitio').SplitFactory;
+const OpenFeatureSplitProvider = require('@splitsoftware/openfeature-js-split-provider').OpenFeatureSplitProvider;
+
+const splitFactory = SplitFactory({
+ core: {
+ authorizationKey: ''
+ }
+});
+const provider = new OpenFeatureSplitProvider(splitFactory);
+OpenFeature.setProvider(provider);
+```
+
+:::info
+The recommended approach is to pass the `splitFactory` instance instead of a splitClient. This ensures consistency with the JS Web Provider and allows future access to additional `splitFactory` features beyond the client itself.
+:::
+
+
+
+
+## Construct an evaluation context
+
+Provide an evaluation context with a targeting key to evaluate flags. The evaluation context passes targeting information such as user IDs, email addresses, or plan types for flag targeting.
+
+For example:
+
+```javascript
+const client = openFeature.getClient('');
+
+const context: EvaluationContext = {
+ targetingKey: '',
+};
+const boolValue = await client.getBooleanValue('boolFlag', false, context);
+```
+
+If the same targeting key is reused across evaluations, set the context at the client level:
+
+```javascript
+const context: EvaluationContext = {
+ targetingKey: '',
+};
+client.setEvaluationContext(context)
+```
+
+Or at the API level:
+
+```javascript
+const context: EvaluationContext = {
+ targetingKey: '',
+};
+OpenFeatureAPI.getInstance().setCtx(context)
+```
+
+Once the context is set at the client or API level, you don't need to provide it for each evaluation.
+
+## Evaluate with details
+
+Use the `get*Details(...)` APIs to get flag values and metadata (such as variant, reason, error code, and configuration). The FME treatment configuration is returned as a raw JSON string under `flagMetadata["config"]`.
+
+For example:
+
+```javascript
+const booleanTreatment = await client.getBooleanDetails('boolFlag', false, context);
+const config = booleanTreatment.flagMetadata.config
+```
+
+## Track events
+
+The Harness FME OpenFeature provider supports tracking user actions or conversion events directly from your Node.js application.
+
+To enable event tracking, your evaluation context must include the following:
+
+- A non-empty `targetingKey`
+- A [`trafficType`](/docs/feature-management-experimentation/management-and-administration/fme-settings/traffic-types/) (for example, `"user"` or `"account"`)
+- A non-blank event name
+
+Optionally, you can include a numeric value (defaults to 0) and additional event properties (prefers primitives such as string, number, boolean, or null). For more information, see [Sending Events](/docs/feature-management-experimentation/api/events/#event-record-fields).
+
+For example:
+
+```javascript
+const context = { targetingKey: 'user-123', trafficType: 'account' }
+const details = { value: 19.99, plan: 'pro', coupon: 'WELCOME10' }
+
+client.track('checkout.completed', context, details)
+```
+
+For more information, go to the [Harness FME Node.js OpenFeature Provider GitHub repository](https://github.com/splitio/split-openfeature-provider-js).
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/sidebar.js b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/sidebar.js
new file mode 100644
index 00000000000..c90f36cc177
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/sidebar.js
@@ -0,0 +1,6 @@
+module.exports = [
+ "feature-management-experimentation/sdks-and-infrastructure/openfeature/android-sdk",
+ "feature-management-experimentation/sdks-and-infrastructure/openfeature/web-sdk",
+ "feature-management-experimentation/sdks-and-infrastructure/openfeature/java-sdk",
+ "feature-management-experimentation/sdks-and-infrastructure/openfeature/nodejs-sdk",
+];
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/web-sdk.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/web-sdk.md
new file mode 100644
index 00000000000..0ed14378ec0
--- /dev/null
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/web-sdk.md
@@ -0,0 +1,126 @@
+---
+title: OpenFeature Provider for Web SDK
+sidebar_label: Web OpenFeature Provider
+sidebar_position: 2
+description: Integrate OpenFeature with Harness FME in your web applications to evaluate feature flags, manage contexts, and track events using a standardized SDK.
+---
+
+Integrate your web applications with Harness FME using the Web OpenFeature Provider, a standardized, vendor-agnostic feature flagging API. This provider implements the OpenFeature specification and bridges the OpenFeature SDK with the Harness FME Browser SDK.
+
+This page walks you through installing, configuring, and using the Web OpenFeature provider to evaluate feature flags in your web applications.
+
+### Prerequisites
+
+Before you begin, ensure you have the following:
+
+- A valid [Harness FME SDK key](/docs/feature-management-experimentation/sdks-and-infrastructure/#api-keys) for your project
+- A modern browser environment that supports ES6 modules
+- Access to `npm` or `yarn` to install dependencies
+
+### Version compatibility
+
+| Component | Minimum Version |
+| ---------------------------------------------- | ---------------- |
+| Browser SDK (`@splitsoftware/splitio-browserjs`) | ≥ 1.0.0 |
+| `@splitsoftware/openfeature-web-split-provider` | ≥ 1.0.0 |
+| OpenFeature Web SDK | ≥ 1.0.0 |
+
+## Install the provider and dependencies
+
+Install the Harness FME OpenFeature provider and required peer dependencies:
+
+```bash
+npm install @splitsoftware/openfeature-web-split-provider
+npm install @splitsoftware/splitio-browserjs
+npm install @openfeature/web-sdk
+```
+
+## Initialize the provider
+
+Register the Harness FME OpenFeature provider by using a `SplitFactory` instance.
+
+For example:
+
+```javascript
+import { OpenFeature } from '@openfeature/web-sdk';
+import { SplitFactory } from '@splitsoftware/splitio-browserjs';
+import { OpenFeatureSplitProvider } from '@splitsoftware/openfeature-web-split-provider';
+
+const splitFactory = SplitFactory({
+ core: {
+ authorizationKey: ''
+ key: ''
+ }
+});
+const provider = new OpenFeatureSplitProvider(splitFactory);
+
+// Wait for the default SDK client for '' to be ready
+await OpenFeature.setProviderAndWait(provider);
+```
+
+## Construct an evaluation context
+
+Provide an evaluation context with a targeting key to evaluate flags. The evaluation context passes targeting information such as user IDs, email addresses, or plan types for flag targeting.
+
+For example:
+
+```javascript
+const context: EvaluationContext = {
+ targetingKey: '',
+ trafficType: 'account'
+};
+await OpenFeature.setContext(context)
+```
+
+## Evaluate with details
+
+Use the `get*Details(...)` APIs to get flag values and metadata (such as variant, reason, error code, and configuration). The FME treatment configuration is returned as a raw JSON string under `flagMetadata["config"]`.
+
+For example:
+
+```javascript
+const booleanTreatment = client.getBooleanDetails('boolFlag', false);
+const config = booleanTreatment.flagMetadata.config;
+```
+
+## Evaluate with attributes
+
+To include user or session attributes in flag evaluations, define them in the evaluation context before calling the evaluation methods.
+
+For example:
+
+```javascript
+const context = {
+ targetingKey: '',
+ trafficType: 'account',
+ plan: 'premium',
+ coupon: 'WELCOME10'
+};
+
+await OpenFeature.setContext(context);
+const booleanTreatment = client.getBooleanDetails('boolFlag', false);
+```
+
+## Track events
+
+The Harness FME OpenFeature provider supports tracking user actions or conversion events directly from your web application.
+
+To enable event tracking, your evaluation context must include the following:
+
+- A non-empty `targetingKey`
+- A [`trafficType`](/docs/feature-management-experimentation/management-and-administration/fme-settings/traffic-types/) (for example, `"user"` or `"account"`)
+- A non-blank event name
+
+Optionally, you can include a numeric value (defaults to 0) and additional event properties (prefers primitives such as string, number, boolean, or null). For more information, see [Sending Events](/docs/feature-management-experimentation/api/events/#event-record-fields).
+
+For example:
+
+```javascript
+const context = { targetingKey: 'user-123', trafficType: 'account' }
+const details = { value: 19.99, properties: { plan: 'pro', coupon: 'WELCOME10' }}
+
+await client.setContext(context)
+client.track('checkout.completed', details)
+```
+
+For more information, go to the [Harness FME Web OpenFeature Provider GitHub repository](https://github.com/splitio/split-openfeature-provider-web-js).
\ No newline at end of file
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/server-side-sdks/java-sdk.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/server-side-sdks/java-sdk.md
index 1d1333a5a8e..0727203ebc0 100644
--- a/docs/feature-management-experimentation/20-sdks-and-infrastructure/server-side-sdks/java-sdk.md
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/server-side-sdks/java-sdk.md
@@ -193,7 +193,7 @@ In the example below, we are rolling out a feature flag to users. The provided a
The `getTreatment` method supports five types of attributes: strings, numbers, dates, booleans, and sets. The proper data type and syntax for each are:
-* **Strings:** Use type String.
+* **Strings:** Use type `String`.
* **Numbers:** Use type `java.lang.Long` or `java.lang.Integer`.
* **Dates:** Express the value in `milliseconds since epoch`. In Java, `milliseconds since epoch` is of type `java.lang.Long`. For example, the value for the `registered_date` attribute below is `System.currentTimeInMillis()`, which is a long.
* **Booleans:** Use type `java.lang.boolean`.
@@ -342,7 +342,7 @@ val treatment: String = result.treatment()
-If you need to get multiple evaluations at once, you can also use the `getTreatmentsWithConfig` methods. These methods take the exact same arguments as the [getTreatments](#multiple-evaluations-at-once) methods but return a mapping of feature flag names to SplitResult instead of strings. Example usage below:
+If you need to get multiple evaluations at once, you can also use the `getTreatmentsWithConfig` methods. These methods take the exact same arguments as the [getTreatments](#multiple-evaluations-at-once) methods but return a mapping of feature flag names to `SplitResult` instead of strings. Example usage below:
@@ -540,13 +540,13 @@ The SDK has a number of knobs for configuring performance. Each knob is tuned to
| proxyUsername | Username to authenticate against the proxy server. | null |
| proxyPassword | Password to authenticate against the proxy server. | null |
| streamingEnabled | Boolean flag to enable the streaming service as default synchronization mechanism. In the event of an issue with streaming, the SDK falls back to the polling mechanism. If false, the SDK polls for changes as usual without attempting to use streaming. | true |
-| impressionsMode | Defines how impressions are queued on the SDK. Supported modes are OPTIMIZED, NONE, and DEBUG. In OPTIMIZED mode, only unique impressions are queued and posted to Harness; this is the recommended mode for experimentation use cases. In NONE mode, no impression is tracked in Harness FME and only minimum viable data to support usage stats is, so never use this mode if you are experimenting with that instance impressions. Use NONE when you want to optimize for feature flagging only use cases and reduce impressions network and storage load. In DEBUG mode, all impressions are queued and sent to Harness; this is useful for validations. Use DEBUG mode when you want every impression to be logged in Harness FME when trying to debug your SDK setup. This setting does not impact the impression listener which receives all generated impressions locally. | OPTIMIZED |
-| operationMode | Defines how the SDK synchronizes its data. Two operation modes are currently supported: - STANDALONE. - CONSUMER| STANDALONE |
-| storageMode | Defines what kind of storage the SDK is going to use. With MEMORY, the SDK uses its own storage and runs as STANDALONE mode. Set REDIS mode if you want the SDK to run with this implementation as CONSUMER mode. | MEMORY |
+| impressionsMode | Defines how impressions are queued on the SDK. Supported modes are `OPTIMIZED`, `NONE`, and `DEBUG`.
In `OPTIMIZED` mode, only unique impressions are queued and posted to Harness; this is the recommended mode for experimentation use cases.
In `NONE` mode, no impression is tracked in Harness FME and only minimum viable data to support usage stats is, so never use this mode if you are experimenting with that instance impressions.
Use `NONE` when you want to optimize for feature flagging only use cases and reduce impressions network and storage load.
In `DEBUG` mode, all impressions are queued and sent to Harness; this is useful for validations. Use `DEBUG` mode when you want every impression to be logged in Harness FME when trying to debug your SDK setup. This setting does not impact the impression listener which receives all generated impressions locally. | `OPTIMIZED` |
+| operationMode | Defines how the SDK synchronizes its data.
Two operation modes are currently supported:
- `STANDALONE` - `CONSUMER`| `STANDALONE` |
+| storageMode | Defines what kind of storage the SDK is going to use. With `MEMORY`, the SDK uses its own storage and runs as `STANDALONE` mode. Set `REDIS` mode if you want the SDK to run with this implementation as `CONSUMER` mode. | `MEMORY` |
| flagSetsFilter | This setting allows the SDK to only synchronize the feature flags in the specified flag sets, avoiding unused or unwanted flags from being synced on the SDK instance, bringing all the benefits from a reduced payload. | null |
| threadFactory | Defines what kind of thread the SDK is going to use. Allows the SDK to use Virtual Threads. | null |
-| inputStream | This setting allows the SDK supports InputStream to use localhost inside a JAR. | null |
-| FileTypeEnum | Defines which kind of file is going to be the inputStream. Supported files are YAML and JSON for inputStream. | null |
+| inputStream | This setting allows the SDK supports `InputStream` to use `localhost` inside a JAR. | null |
+| FileTypeEnum | Defines which kind of file is going to be the `inputStream`. Supported files are YAML and JSON for `inputStream`. | null |
To set each of the parameters defined above, use the following syntax:
diff --git a/docs/feature-management-experimentation/20-sdks-and-infrastructure/versioning-policy.md b/docs/feature-management-experimentation/20-sdks-and-infrastructure/versioning-policy.md
index ed567550367..cc33e08cdd0 100644
--- a/docs/feature-management-experimentation/20-sdks-and-infrastructure/versioning-policy.md
+++ b/docs/feature-management-experimentation/20-sdks-and-infrastructure/versioning-policy.md
@@ -59,7 +59,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `7.0.0` | 2022-05-26 | Actively support |
+| `7.0.0` | 2022-05-26 | Actively supported |
@@ -67,7 +67,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|---------------------|
-| `1.0.0` | 2025-02-25 | Actively support |
+| `1.0.0` | 2025-02-25 | Actively supported |
| `0.0.0` | 2025-01-21 | 2026-01-27 |
@@ -76,7 +76,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `6.0.0` | 2020-10-06 | Actively support |
+| `6.0.0` | 2020-10-06 | Actively supported |
@@ -84,7 +84,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `4.0.0` | 2020-08-19 | Actively support |
+| `4.0.0` | 2020-08-19 | Actively supported |
@@ -92,7 +92,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `11.0.0` | 2024-11-01 | Actively support |
+| `11.0.0` | 2024-11-01 | Actively supported |
| `10.0.0` | 2018-02-26 | 2025-01-04 |
@@ -101,7 +101,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `7.0.0` | 2021-11-23 | Actively support |
+| `7.0.0` | 2021-11-23 | Actively supported |
@@ -109,7 +109,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `2.0.0` | 2025-04-14 | Actively support |
+| `2.0.0` | 2025-04-14 | Actively supported |
| `1.1.0` | 2023-09-06 | 2025-01-25 |
@@ -118,7 +118,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `10.0.0` | 2024-06-27 | Actively support |
+| `10.0.0` | 2024-06-27 | Actively supported |
| `9.0.0` | 2021-05-03 | 2024-02-15 |
@@ -127,7 +127,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `8.0.0` | 2022-05-10 | Actively support |
+| `8.0.0` | 2022-05-10 | Actively supported |
@@ -141,7 +141,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `5.0.0` | 2024-11-01 | Actively support |
+| `5.0.0` | 2024-11-01 | Actively supported |
| `4.0.0` | 2024-01-04 | 2025-11-01 |
@@ -150,7 +150,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `3.0.0` | 2024-05-17 | Actively support |
+| `3.0.0` | 2024-05-17 | Actively supported |
| `2.0.1` | 2024-03-11 | 2024-05-17 |
@@ -159,7 +159,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `1.0.0` | 2024-11-01 | Actively support |
+| `1.0.0` | 2024-11-01 | Actively supported |
| `0.1.0` | 2021-03-30 | 2024-11-01 |
@@ -168,7 +168,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `0.1.0` | 2022-08-03 | Actively support |
+| `0.1.0` | 2022-08-03 | Actively supported |
@@ -176,7 +176,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `3.0.0` | 2024-11-01 | Actively support |
+| `3.0.0` | 2024-11-01 | Actively supported |
| `2.0.0` | 2019-02-01 | 2024-11-01 |
@@ -185,7 +185,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `11.0.0` | 2024-11-01 | Actively support |
+| `11.0.0` | 2024-11-01 | Actively supported |
| `10.0.0` | 2018-02-26 | 2025-11-01 |
@@ -194,7 +194,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `2.0.0` | 2024-11-01 | Actively support |
+| `2.0.0` | 2024-11-01 | Actively supported |
| `1.0.0` | 2020-01-24 | 2025-04-15 |
@@ -203,7 +203,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `1.0.0` | 2024-11-01 | Actively support |
+| `1.0.0` | 2024-11-01 | Actively supported |
| `0.0.1` | 2021-07-29 | 2025-11-01 |
@@ -212,7 +212,7 @@ import TabItem from '@theme/TabItem';
| Version | General Availability Date | Support End Date |
|-----------|---------------------------|---------------------|
-| `2.0.0` | 2024-11-14 | Actively support |
+| `2.0.0` | 2024-11-14 | Actively supported |
| `1.0.0` | 2020-01-24 | 2025-04-01 |
@@ -227,7 +227,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `1.0.1` | 2023-09-05 | Actively support |
+| `1.0.1` | 2023-09-05 | Actively supported |
@@ -235,7 +235,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `2.0.0` | 2019-09-23 | Actively support |
+| `2.0.0` | 2019-09-23 | Actively supported |
@@ -243,7 +243,7 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|---------------------|
-| `1.0.0` | 2025-05-28 | Actively support |
+| `1.0.0` | 2025-05-28 | Actively supported |
| `0.1.0` | 2022-01-11 | 2024-02-29 |
@@ -252,8 +252,44 @@ import TabItem from '@theme/TabItem';
| Version | GA Date | Support End Date |
|-----------|-------------|-------------------|
-| `5.0.0` | 2021-11-01 | Actively support |
+| `5.0.0` | 2021-11-01 | Actively supported |
+
+
+### OpenFeature providers
+
+
+
+
+
+| Version | GA Date | Support End Date |
+|-----------|-------------|-------------------|
+| `1.0.0` | 2025-09-30 | Actively supported |
+
+
+
+
+
+| Version | GA Date | Support End Date |
+|-----------|-------------|-------------------|
+| `1.0.0` | 2025-09-30 | Actively supported |
+
+
+
+
+| Version | GA Date | Support End Date |
+|-----------|-------------|---------------------|
+| `1.0.0` | 2025-10-07 | Actively supported |
+
+
+
+
+
+| Version | GA Date | Support End Date |
+|-----------|-------------|-------------------|
+| `1.0.0` | 2023-04-27 | Actively supported |
+
+
diff --git a/release-notes/feature-management-experimentation.md b/release-notes/feature-management-experimentation.md
index 47fffcd7be8..6e7292c9224 100644
--- a/release-notes/feature-management-experimentation.md
+++ b/release-notes/feature-management-experimentation.md
@@ -1,7 +1,7 @@
---
title: Feature Management & Experimentation release notes
sidebar_label: Feature Management & Experimentation
-date: 2025-10-22T10:00:00
+date: 2025-10-28T10:00:00
tags: ["fme", "feature management experimentation"]
sidebar_position: 11
---
@@ -12,10 +12,32 @@ import HarnessApiData from '../src/components/HarnessApiData/index.tsx';
These release notes describe recent changes to Harness Feature Management & Experimentation (FME).
-#### Last updated: October 22, 2025
+#### Last updated: October 28, 2025
## October 2025
+### [New Feature] OpenFeature Providers
+----
+#### 2025-10-28
+
+Harness FME supports [OpenFeature](https://openfeature.dev/), an open specification offering a vendor-agnostic API for feature flagging. Providers handle flag evaluations, enabling consistent, centralized control over feature flags across multiple SDKs and environments.
+
+This feature is valuable for organizations that want to:
+
+- Standardize feature flag behavior across services and applications
+- Reduce vendor lock-in by enabling flexible provider implementations
+- Integrate feature flags across multiple languages and platforms
+
+Harness FME offers providers for Android, Web, Java, and Node.js SDKs. Your application can integrate with either the Harness FME SDK or OpenFeature providers, depending on your organization’s requirements.
+
+#### Related documentation
+
+- [OpenFeature Providers](/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature)
+- [Android SDK](/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/android-sdk)
+- [Web SDK](/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/web-sdk)
+- [Java SDK](/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/java-sdk)
+- [Node.js SDK](/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/nodejs-sdk)
+
### [New Feature] Warehouse Native Experimentation in Beta
----
#### 2025-10-22
diff --git a/sidebars.ts b/sidebars.ts
index 7b2603e9014..e5a586baa68 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -1810,6 +1810,16 @@ const sidebars: SidebarsConfig = {
},
items: require('./docs/feature-management-experimentation/20-sdks-and-infrastructure/optional-infra/sidebar.js'),
},
+ {
+ type: 'category',
+ label: 'OpenFeature Providers',
+ className: 'sidebar-item-new',
+ link: {
+ type: 'doc',
+ id: 'feature-management-experimentation/sdks-and-infrastructure/openfeature/index',
+ },
+ items: require('./docs/feature-management-experimentation/20-sdks-and-infrastructure/openfeature/sidebar.js'),
+ },
{
type: 'category',
label: 'Examples',
diff --git a/src/components/Docs/data/fmeOpenfeature.js b/src/components/Docs/data/fmeOpenfeature.js
new file mode 100644
index 00000000000..0dfe83f0d31
--- /dev/null
+++ b/src/components/Docs/data/fmeOpenfeature.js
@@ -0,0 +1,74 @@
+import React from 'react';
+
+export const openfeatureSDKs = [
+ {
+ name: 'Android SDK',
+ img: '/provider-logos/android-logo.svg',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/android-sdk',
+ },
+ {
+ name: 'Web SDK',
+ img: '/provider-logos/browser-logo.svg',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/web-sdk',
+ },
+ {
+ name: 'Java SDK',
+ img: '/provider-logos/java-logo.png',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/java-sdk',
+ },
+ {
+ name: 'Node.js SDK',
+ img: '/provider-logos/nodejs-logo.png',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/nodejs-sdk',
+ },
+];
+
+// Helper to chunk items into rows of 4
+function chunkArray(array, size) {
+ return array.reduce((acc, _, i) =>
+ (i % size ? acc : [...acc, array.slice(i, i + size)]), []);
+}
+
+// Component to render SDK grid
+export function Section({ title, items }) {
+ const rows = chunkArray(items, 4);
+ return (
+ <>
+
+ );
+}
diff --git a/src/components/Docs/data/fmeSDKSData.js b/src/components/Docs/data/fmeSDKSData.js
index 31244616e29..51ba00c4a1b 100644
--- a/src/components/Docs/data/fmeSDKSData.js
+++ b/src/components/Docs/data/fmeSDKSData.js
@@ -2,7 +2,7 @@ import React from 'react';
export const clientSideSDKs = [
{
- name: 'Android',
+ name: 'Android SDK',
img: '/provider-logos/android-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/android-sdk',
},
@@ -12,7 +12,7 @@ export const clientSideSDKs = [
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/angular-utilities',
},
{
- name: 'Browser',
+ name: 'Browser SDK',
img: '/provider-logos/browser-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/browser-sdk',
},
@@ -22,27 +22,27 @@ export const clientSideSDKs = [
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/flutter-plugin',
},
{
- name: 'iOS',
+ name: 'iOS SDK',
img: '/provider-logos/ios-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/ios-sdk',
},
{
- name: 'JavaScript',
+ name: 'JavaScript SDK',
img: '/provider-logos/js-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/javascript-sdk',
},
{
- name: 'React',
+ name: 'React SDK',
img: '/provider-logos/react-native-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/react-sdk',
},
{
- name: 'React Native',
+ name: 'React Native SDK',
img: '/provider-logos/react-native-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/react-native-sdk',
},
{
- name: 'Redux',
+ name: 'Redux SDK',
img: '/provider-logos/redux-logo.svg',
link: '/docs/feature-management-experimentation/sdks-and-infrastructure/client-side-sdks/redux-sdk',
},
@@ -165,6 +165,29 @@ export const optionalInfra = [
},
];
+export const openfeatureProviders = [
+ {
+ name: 'Android SDK',
+ img: '/provider-logos/android-logo.svg',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/android-sdk',
+ },
+ {
+ name: 'Web SDK',
+ img: '/provider-logos/browser-logo.svg',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/web-sdk',
+ },
+ {
+ name: 'Java SDK',
+ img: '/provider-logos/java-logo.png',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/java-sdk',
+ },
+ {
+ name: 'Node.js SDK',
+ img: '/provider-logos/nodejs-logo.png',
+ link: '/docs/feature-management-experimentation/sdks-and-infrastructure/openfeature/nodejs-sdk',
+ },
+];
+
// Helper to chunk items into rows of 4
function chunkArray(array, size) {
return array.reduce((acc, _, i) =>
@@ -215,6 +238,7 @@ export default function SDKGrid() {
+
);
}
diff --git a/src/components/ToolTip/tooltips.json b/src/components/ToolTip/tooltips.json
index 72664c87e4d..f4e3920f773 100644
--- a/src/components/ToolTip/tooltips.json
+++ b/src/components/ToolTip/tooltips.json
@@ -13,6 +13,15 @@
}
},
"fme": {
+ "openfeature": {
+ "feature-flag": "A feature flag is a conditional toggle in Harness FME that enables or disables specific functionality without deploying new code. It allows for controlled feature rollouts, A/B testing, and quick rollbacks if issues arise.",
+ "targeting-key": "A unique identifier used to target specific users or entities when evaluating feature flags. It helps determine which variation of a flag should be served based on predefined rules and conditions.",
+ "evaluation-api": "The Evaluation API is the main interface developers use to interact with feature flags. It enables applications to evaluate feature flags and adapt behavior based on the results, while supporting customization and integration with additional tools.",
+ "evaluation-context": "The Evaluation Context holds contextual information used during flag evaluation. It can include static data (like application or host identifiers) and dynamic data (such as a client IP address), which can be passed explicitly or propagated automatically. Static and dynamic values can be merged for richer, more targeted evaluations.",
+ "provider": "An OpenFeature Provider wraps the Harness FME SDK, acting as a bridge between the OpenFeature SDK and the FME SDK. It translates OpenFeature function calls into operations handled by the FME SDK, which communicates with Harness services to evaluate flags and retrieve configuration updates.",
+ "hook": "Hooks let you inject custom behavior at various points in the flag evaluation lifecycle. They can be used for validation, modifying the evaluation context, logging, telemetry, or custom functionality to extend the SDK.",
+ "events": "Events allow your application to respond to changes in provider state or flag configuration, such as readiness changes, errors, or updates to flag values."
+ },
"warehouse-native": {
"metric": "A quantifiable measure used to track and assess the performance of a specific aspect of an experiment. In Warehouse Native, metrics are defined in Harness FME.",
"experiment": "A controlled test to evaluate the impact of different variations on user behavior or system performance. In Warehouse Native, experiments are defined in Harness FME.",