Repository navigation
Release Notes - FeatureOne v6.0.0
Release Date: August 16, 2026
Version: 6.0.0
Type: Major Release
Packages: FeatureOne · FeatureOne.SQL · FeatureOne.File
Summary
FeatureOne v6.0.0 is a major milestone release that adds full CNCF OpenFeature Specification (v1.x) compliance. The provider ships inside the core FeatureOne package under the FeatureOne.OpenFeature namespace — there is no separate package. FeatureOne now offers two equally supported APIs over the same evaluation engine: the native IFeatures API and the OpenFeature provider.
Key Features
- FeatureOneProvider: OpenFeature
FeatureProviderimplementation supporting Boolean, String, Integer, Double, and Structure flag evaluations. Non-boolean resolvers are projections of the boolean result, not multivariate values. - Context Mapping: Maps OpenFeature
EvaluationContext(TargetingKeyand attributes — strings, booleans, numbers, dates, lists, structures) to FeatureOne user claims. - Dependency Injection: ASP.NET Core DI extensions (
AddFeatureOneOpenFeature), with global provider registration performed by anIHostedServiceat startup and an options overload for hook configuration. - Provider Lifecycle:
InitializeAsyncvalidates store availability and reportsProviderStatus.Error; a missing store surfaces asProviderNotReadyrather thanFlagNotFound. - Custom Condition Registration:
ConditionDeserializer.Register<T>("Name")for user-definedIConditiontypes, preserving the deny-by-default type allow list. - Core Interoperability:
FeatureStoreproperty exposed onFeaturesfacade.
Target Frameworks
.NETStandard 2.1.NET 9.0.NET 10.0
Test Verification
- 260 out of 260 tests passed across
FeatureOne.Tests(183),FeatureOne.OpenFeature.Tests(49),FeatureOne.File.Tests(12), andFeatureOne.SQL.Tests(16).
Backward Compatibility
The native API surface is fully backward compatible. Two behavioural changes:
- Condition deserialization failures now throw
FeatureOneConfigurationException(derived fromException) instead of a bareException. RelationalConditionnow compares numeric claim values arithmetically rather than lexicographically, and implements the previously deadLessThanoperator. Toggles relying on the old behaviour will evaluate differently.
See ReleaseNotes.v6.0.0.md for the full list, including bugs fixed in this release.