Featurevisor OpenFeature provider for Elixir
This Hex package adapts the Featurevisor Elixir SDK to the official OpenFeature Elixir SDK.
Installation
def deps do
[
{:featurevisor, "~> 1.2"},
{:featurevisor_openfeature, "~> 1.2"},
{:open_feature, "~> 0.1.3"}
]
end
The provider is a separate package, so applications that only use
featurevisor do not install or compile OpenFeature.
The supported upstream SDK is open_feature 0.1.3, the latest stable Hex
release. It requires no change to the provider's Elixir 1.15 minimum.
Usage
Create a provider that owns its Featurevisor instance:
provider =
FeaturevisorOpenFeature.Provider.new(
featurevisor_options: %{datafile: datafile}
)
{:ok, provider} = OpenFeature.set_provider(provider)
client = OpenFeature.get_client()
enabled =
OpenFeature.Client.get_boolean_value(client, "checkout", false,
context: %{"targetingKey" => "user-123"}
)
You can also pass an existing Featurevisor instance. The provider borrows it and does not close it:
provider = FeaturevisorOpenFeature.Provider.new(featurevisor: f)
Featurevisor supports several evaluation types through one OpenFeature key:
| OpenFeature key | Featurevisor evaluation |
|---|---|
checkout |
Flag for feature checkout |
checkout:variation |
Variation for feature checkout |
checkout:title |
Variable title inside feature checkout |
variable:supportEmail |
Global variable supportEmail |
targeting_key_field, key_separator, variation_key, and
global_variable_prefix customize this mapping. The targeting key maps to
userId by default. The provider accepts "targetingKey",
"targeting_key", and :targeting_key in the OpenFeature context.
The provider implements boolean, string, number, and map resolution.
Featurevisor reasons and evaluation metadata are mapped to OpenFeature
resolution details. Missing definitions, type mismatches, and invalid
datafiles use standard OpenFeature errors. Replacing an invalid datafile with
a valid one recovers the provider.
If initial registration fails, update the provider's Featurevisor instance with
a valid datafile and call OpenFeature.set_provider again. OpenFeature 0.1.3
does not register a provider whose initialisation fails. Once registered, valid
updates recover evaluation without registering again, including an unchanged
accepted datafile after a rejection.
Calling shutdown/1 releases provider subscriptions. It also closes a
Featurevisor instance created by the provider, but never closes a borrowed
instance.
The current OpenFeature Elixir SDK does not expose provider tracking. Featurevisor modules and diagnostics continue to run inside the Featurevisor instance.
See the Featurevisor Elixir SDK documentation and the shared OpenFeature provider guide for more details.