# OpenFeature | Sentry for Java

The [OpenFeature](https://openfeature.dev/) integration tracks feature flag evaluations produced by the OpenFeature SDK. This SDK is supported by a broad range of feature flagging providers. For the full list, visit [OpenFeature's ecosystem page](https://openfeature.dev/ecosystem?instant_search%5BrefinementList%5D%5Btype%5D%5B0%5D=Provider\&instant_search%5BrefinementList%5D%5BallTechnologies%5D%5B0%5D=Java).

The flag evaluations are held in memory and are sent to Sentry on error and transaction events. **At the moment, we only support boolean flag evaluations.**

## [Install](https://docs.sentry.io/platforms/java/integrations/openfeature.md#install)

To install use:

```groovy
implementation 'io.sentry:sentry-openfeature:8.33.0'
```

For other dependency managers, check out the [central Maven repository](https://search.maven.org/artifact/io.sentry/sentry-openfeature).

Before using this integration, you need to install and instrument the [OpenFeature Java SDK](https://openfeature.dev/docs/reference/technologies/server/java) in your app. Learn more by reading OpenFeature's [SDK docs](https://openfeature.dev/docs/reference/technologies/server/java) and [provider docs](https://openfeature.dev/docs/reference/concepts/provider).

## [Configure](https://docs.sentry.io/platforms/java/integrations/openfeature.md#configure)

Add `SentryOpenFeatureHook` to your OpenFeature setup:

```java
import dev.openfeature.sdk.OpenFeatureAPI;
import io.sentry.openfeature.SentryOpenFeatureHook;

OpenFeatureAPI api = OpenFeatureAPI.getInstance();

api.addHooks(new SentryOpenFeatureHook());
```

## [Verify](https://docs.sentry.io/platforms/java/integrations/openfeature.md#verify)

The integration is tested by evaluating a feature flag using your OpenFeature SDK before capturing an exception:

```java
import dev.openfeature.sdk.OpenFeatureAPI;
import io.sentry.Sentry;

OpenFeatureAPI api = OpenFeatureAPI.getInstance();
var client = api.getClient();

boolean flagValue = client.getBooleanValue("test-flag", false);

Sentry.captureException(new Exception("Something went wrong!"));
```

Open your Sentry project and confirm that your error event has recorded the feature flag "test-flag" and its value "false".

##### Next Steps

* **Track feature flag evaluations in other parts of your codebase.** If needed, you can set up evaluation tracking for more than one SDK. [Read the docs](https://docs.sentry.io/product/issues/issue-details/feature-flags.md#set-up-evaluation-tracking) to learn more.
* **Set up your change tracking webhook.** In order to take full advantage of the feature flag capabilities Sentry offers there is an additional setup step needed. Your feature flag provider needs to notify Sentry when a feature flag definition has changed. A Sentry webhook URL can be registered with your provider. Learn [how](https://docs.sentry.io/product/issues/issue-details/feature-flags.md#set-up-change-tracking).
