Feature flags, experiments, and remote configuration for Elixir.
Create an isolated instance with create_featurevisor/1, then evaluate flags,
variations, and variables against a Featurevisor schema version 2 datafile.
Summary
Functions
Registers an SDK module. Returns an idempotent removal function or nil.
Closes modules, subscriptions, listeners, caches, and the instance owner.
Creates an isolated Featurevisor instance.
Returns whether a feature is enabled.
Evaluates a feature flag and returns details.
Evaluates a variable and returns details.
Evaluates a variation and returns details.
Evaluates all or selected features.
Returns stored context merged with optional evaluation context.
Returns a feature definition.
Returns all feature keys. Ordering is not guaranteed.
Returns the current datafile revision.
Returns the informational datafile schema version.
Returns a segment definition.
Returns a variable value or nil. JSON variables are decoded.
Returns a list variable after runtime type checking.
Returns a boolean variable after runtime type checking.
Returns a finite numeric variable after runtime type checking.
Returns an integer variable after runtime type checking.
Returns a decoded JSON variable.
Returns variable keys for a feature.
Returns a map variable after runtime type checking.
Returns a string variable after runtime type checking.
Returns a variation value or nil.
Returns whether a feature defines variations.
Returns a Featurevisor handle for a running owner process or registered name.
Subscribes to an event and returns an idempotent unsubscribe function.
Removes every module with the supplied name.
Merges or replaces the stored context.
Merges or replaces the stored datafile.
Changes the diagnostic threshold.
Merges or replaces sticky evaluations.
Spawns a child instance with isolated context and sticky state.
Starts a supervised Featurevisor owner process.
Types
@type options() :: %{ optional(:datafile) => map() | String.t(), optional(:context) => map(), optional(:log_level) => Featurevisor.Diagnostic.level(), optional(:on_diagnostic) => (Featurevisor.Diagnostic.t() -> any()), optional(:sticky) => map(), optional(:modules) => [Featurevisor.Module.t()], optional(:name) => GenServer.name() }
@opaque t()
Functions
Registers an SDK module. Returns an idempotent removal function or nil.
Closes modules, subscriptions, listeners, caches, and the instance owner.
Creates an isolated Featurevisor instance.
Returns whether a feature is enabled.
Evaluates a feature flag and returns details.
Evaluates a variable and returns details.
Evaluates a variation and returns details.
Evaluates all or selected features.
Returns stored context merged with optional evaluation context.
Returns a feature definition.
Returns all feature keys. Ordering is not guaranteed.
Returns the current datafile revision.
Returns the informational datafile schema version.
Returns a segment definition.
Returns a variable value or nil. JSON variables are decoded.
Returns a list variable after runtime type checking.
Returns a boolean variable after runtime type checking.
Returns a finite numeric variable after runtime type checking.
Returns an integer variable after runtime type checking.
Returns a decoded JSON variable.
Returns variable keys for a feature.
Returns a map variable after runtime type checking.
Returns a string variable after runtime type checking.
Returns a variation value or nil.
Returns whether a feature defines variations.
@spec instance(GenServer.server()) :: t()
Returns a Featurevisor handle for a running owner process or registered name.
Subscribes to an event and returns an idempotent unsubscribe function.
Removes every module with the supplied name.
Merges or replaces the stored context.
Merges or replaces the stored datafile.
Changes the diagnostic threshold.
Merges or replaces sticky evaluations.
Spawns a child instance with isolated context and sticky state.
@spec start_link(options() | keyword()) :: GenServer.on_start()
Starts a supervised Featurevisor owner process.