4.0.0 - November 1, 2024
Microsoft.FeatureManagement Updates
The packages associated with this release are
- Microsoft.FeatureManagement 4.0.0
- Microsoft.FeatureManagement.AspNetCore 4.0.0
- Microsoft.FeatureManagement.Telemetry.ApplicationInsights 4.0.0
Microsoft.FeatureManagement
Enhancements
Variant Feature Flags
A variant feature flag is an enhanced feature flag that supports multiple states or variations. While it can still be toggled on or off, it also allows for different configurations, ranging from simple primitives to complex JSON objects. Variant feature flags are particularly useful for feature rollouts, configuration rollouts, and feature experimentation (also known as A/B testing).
The new IVariantFeatureManager
has been introduced as the successor to the existing IFeatureManager
. It retains all the functionalities of IFeatureManager
while adding new GetVariantAsync
methods and supporting CancellationToken
for all methods.
IVariantFeatureManager featureManager;
...
Variant variant = await featureManager.GetVariantAsync(MyFeatureFlags.HelpText, CancellationToken.None);
model.Text = variant.Configuration.Value;
Note: If reading variant flags from App Configuration, version 8.0.0
or above for the Microsoft.Extensions.Configuration.AzureAppConfiguration
or Microsoft.Azure.AppConfiguration.AspNetCore
package is required.
For more details on Variants, see here.
Variant Service Provider
Variant feature flags can be used in conjunction with dependency injection to surface different implementations of a service for different users. This is accomplished by using the Variant Service Provider.
For more details on Variant Service Provider, see here
Telemetry
Telemetry provides observability into flag evaluations, offering insights into which users received specific flag results. This enables more powerful metric analysis, such as experimentation.
For more details on Telemetry, see here.
Microsoft Feature Management Schema
Added support for variant feature flags defined using Microsoft Feature Management schema. Variants and telemetry can be declared using Microsoft Feature Flag schema v2. Here is a Sample.
Performance Optimizations
The performance of the feature flag state evaluation has been improved by up to 20%, with a memory reduction of up to 30% for .NET 8 applications compared to the version 3.5.0 release.
Microsoft.FeatureManagement.AspNetCore
Enhancements
-
Adjusted the
.WithTargeting()
builder method to automatically addHttpContextAccessor
if it's not already added. -
Added
TargetingHttpContextMiddleware
which persists targeting context in the current activity. This is used when setting up Telemetry. -
Added support for variants in
FeatureTagHelper
. This allows MVC views to use the<feature>
tag to conditionally render content based on whether a specific variant of a feature is assigned.<feature name="FeatureX" variant="Alpha"> <p>This can only be seen if variant 'Alpha' of 'FeatureX' is assigned.</p> </feature>
For more details on ASP.NET views and variants, see here.
-
Updated
Microsoft.FeatureManagement
reference to4.0.0
. See the release notes for more information on the changes. -
Added support for .NET 9 as a target framework.
Breaking Change
- The
FeatureTagHelper
constructor now requires anIVariantFeatureManager
to support new variant functionality. While this class is typically not instantiated directly, any direct instantiation will need to be updated. - Removed .NET 7 as a target framework as .NET 7 is out of support.
Microsoft.FeatureManagement.Telemetry.ApplicationInsights
Enhancements
-
Added support for Application Insights telemetry. To publish feature flag evaluation data and tag outgoing events with targeting information, register the Application Insights telemetry publisher as shown below.
builder.Services.AddFeatureManagement() .AddApplicationInsightsTelemetry();
For more details on Application Insights Publishing, see here