OpenFeature.Providers.Flagd.Core
1.0.0
Prefix Reserved
dotnet add package OpenFeature.Providers.Flagd.Core --version 1.0.0
NuGet\Install-Package OpenFeature.Providers.Flagd.Core -Version 1.0.0
<PackageReference Include="OpenFeature.Providers.Flagd.Core" Version="1.0.0" />
<PackageVersion Include="OpenFeature.Providers.Flagd.Core" Version="1.0.0" />
<PackageReference Include="OpenFeature.Providers.Flagd.Core" />
paket add OpenFeature.Providers.Flagd.Core --version 1.0.0
#r "nuget: OpenFeature.Providers.Flagd.Core, 1.0.0"
#:package OpenFeature.Providers.Flagd.Core@1.0.0
#addin nuget:?package=OpenFeature.Providers.Flagd.Core&version=1.0.0
#tool nuget:?package=OpenFeature.Providers.Flagd.Core&version=1.0.0
flagd .NET Core
The in-process flagd flag evaluation engine for .NET.
This package contains only the evaluation logic: parsing a flagd flag configuration and resolving flags against it,
including targeting rules and the custom flagd operators (fractional, sem_ver, starts_with, ends_with) and
shared $evaluators. It performs no I/O. Fetching, syncing and watching flag configurations is left to the
concrete provider.
If you want to evaluate flags from a flagd service or a file, use OpenFeature.Providers.Flagd instead. Use this package when you are building your own flagd-compatible provider and want to reuse the evaluation engine.
Requirements
- open-feature/dotnet-sdk v2.9.0 or later, below v3.0.0
Install
dotnet add package OpenFeature.Providers.Flagd.Core
Usage
using OpenFeature.Model;
using OpenFeature.Providers.Flagd.Core;
var core = new FlagdCore();
// Load a flagd flag configuration. Returns the keys of the flags that were added, removed or changed.
IReadOnlyList<string> changedKeys = core.SetConfigurations(flagConfigurationJson);
// Flag-set metadata, e.g. a "version" supplied by the flag source
var metadata = core.GetFlagSetMetadata();
// All currently loaded flag keys
IReadOnlyList<string> allKeys = core.GetFlagKeys();
// Resolve flags synchronously
var context = EvaluationContext.Builder().SetTargetingKey("user-1").Set("email", "me@example.com").Build();
ResolutionDetails<bool> details = core.ResolveBoolean("my-flag", false, context);
ResolveBoolean, ResolveString, ResolveInteger, ResolveDouble and ResolveStructure return
ResolutionDetails<T> and throw the OpenFeature FeatureProviderException subtypes (for example flag not found or type
mismatch) that a provider is expected to surface to the SDK.
Thread safety
A FlagdCore instance is safe for concurrent use. Flags can be resolved from any number of threads while another thread
calls SetConfigurations; each resolution sees either the previous or the new configuration in full, never a mix of both.
Invalid configurations
SetConfigurations throws a ParseErrorException when the configuration cannot be parsed. The previously loaded flags
and metadata are left untouched, so a failed update never leaves the engine empty.
Schema validation
Flag configurations can additionally be checked against the flagd flags and targeting JSON schemas. Validation only logs warnings, it never rejects a configuration. It is off until the schemas are loaded, which is asynchronous:
var core = new FlagdCore(new FlagdCoreOptions { Logger = logger });
await core.InitializeAsync();
Logger is the only option. FlagdCore itself performs no I/O, so constructing and using it
without calling InitializeAsync never touches the network or the file system.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- JsonLogic (= 6.0.2)
- murmurhash (>= 1.0.3)
- NJsonSchema (>= 11.0.0)
- OpenFeature (>= 2.9.0 && <= 2.99999.0)
- Semver (>= 3.0.0)
-
.NETStandard 2.0
- JsonLogic (= 6.0.2)
- Microsoft.CSharp (>= 4.7.0)
- murmurhash (>= 1.0.3)
- NJsonSchema (>= 11.0.0)
- OpenFeature (>= 2.9.0 && <= 2.99999.0)
- Semver (>= 3.0.0)
-
net10.0
- JsonLogic (= 6.0.2)
- murmurhash (>= 1.0.3)
- NJsonSchema (>= 11.0.0)
- OpenFeature (>= 2.9.0 && <= 2.99999.0)
- Semver (>= 3.0.0)
-
net8.0
- JsonLogic (= 6.0.2)
- murmurhash (>= 1.0.3)
- NJsonSchema (>= 11.0.0)
- OpenFeature (>= 2.9.0 && <= 2.99999.0)
- Semver (>= 3.0.0)
-
net9.0
- JsonLogic (= 6.0.2)
- murmurhash (>= 1.0.3)
- NJsonSchema (>= 11.0.0)
- OpenFeature (>= 2.9.0 && <= 2.99999.0)
- Semver (>= 3.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 32 | 10/7/2026 |