Dynatrace.OpenFeature
0.0.2-alpha
Prefix Reserved
dotnet add package Dynatrace.OpenFeature --version 0.0.2-alpha
NuGet\Install-Package Dynatrace.OpenFeature -Version 0.0.2-alpha
<PackageReference Include="Dynatrace.OpenFeature" Version="0.0.2-alpha" />
<PackageVersion Include="Dynatrace.OpenFeature" Version="0.0.2-alpha" />
<PackageReference Include="Dynatrace.OpenFeature" />
paket add Dynatrace.OpenFeature --version 0.0.2-alpha
#r "nuget: Dynatrace.OpenFeature, 0.0.2-alpha"
#:package Dynatrace.OpenFeature@0.0.2-alpha
#addin nuget:?package=Dynatrace.OpenFeature&version=0.0.2-alpha&prerelease
#tool nuget:?package=Dynatrace.OpenFeature&version=0.0.2-alpha&prerelease
Dynatrace OpenFeature Provider for .NET
The official Dynatrace OpenFeature provider for .NET server-side applications.
The provider evaluates flags in-process: on initialization it fetches your flag configuration from the Dynatrace CDN and keeps it up to date in the background, so evaluations are local and do not make a network call.
Status: Early alpha — not yet ready for production use. The flag configuration is refreshed by polling every 10 seconds; push-based change notifications (SSE) are not implemented yet.
Installation
dotnet add package Dynatrace.OpenFeature --version 0.0.2-alpha # x-release-please-version
Usage
using Dynatrace.OpenFeature;
using OpenFeature;
using OpenFeature.Model;
await Api.Instance.SetProviderAsync(new DynatraceProvider(Environment.GetEnvironmentVariable("DT_SDK_KEY")!));
var client = Api.Instance.GetClient();
var context = EvaluationContext.Builder().SetTargetingKey("user-123").Build();
bool enabled = await client.GetBooleanValueAsync("my-flag", false, context);
// On shutdown:
await Api.Instance.ShutdownAsync();
Once the provider is registered, all flag evaluation goes through the OpenFeature API. See the OpenFeature .NET SDK documentation for evaluation contexts, hooks, events, and the rest of the SDK surface.
Configuration
Pass a DynatraceProviderOptions as the second constructor argument:
var options = new DynatraceProviderOptions
{
ConfigOrigin = "https://cdn.eu.fm.dynatracelabs.com",
MetricsOrigin = "https://metrics.eu.fm.dynatracelabs.com",
Logger = loggerFactory.CreateLogger("Dynatrace.OpenFeature"),
};
await Api.Instance.SetProviderAsync(new DynatraceProvider(sdkKey, options));
| Option | Type | Default | Description |
|---|---|---|---|
ConfigOrigin |
string? |
derived from SDK key | Override the flag configuration origin (scheme, host and optional port; no path). |
MetricsOrigin |
string? |
derived from SDK key | Override the evaluation metrics ingest origin (scheme, host and optional port; no path). /v1/metrics is appended. |
MetricsFlushInterval |
TimeSpan |
30 seconds | How often aggregated evaluation metrics are sent. Zero or negative values fall back to the default with a warning. |
Logger |
ILogger? |
none | Receives lifecycle messages and flag configuration schema warnings. |
Evaluation metrics
The provider counts every flag evaluation made through the OpenFeature client, by flag key, variant, reason and error
code in 10-second buckets, and sends the aggregate to the Dynatrace metrics endpoint in the background. It is flushed
periodically, when many distinct flags have accumulated, when a new flag configuration is loaded, and on shutdown, so
call Api.Instance.ShutdownAsync() before your application exits to deliver the final batch. Evaluations are never
slowed by this: recording is in-memory, and delivery happens off the evaluation path.
Contributing
See CONTRIBUTING.md.
License
Apache 2.0 — see LICENSE.
| 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 was computed. 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 was computed. 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 was computed. 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 was computed. 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. |
-
.NETStandard 2.0
- OpenFeature (>= 2.14.1)
- OpenFeature.Providers.Flagd.Core (>= 1.0.0)
- System.Collections.Immutable (>= 10.0.5)
- System.Text.Json (>= 10.0.5)
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 |
|---|---|---|
| 0.0.2-alpha | 0 | 10/26/2026 |