FlagCommander 1.0.1
dotnet add package FlagCommander --version 1.0.1
NuGet\Install-Package FlagCommander -Version 1.0.1
<PackageReference Include="FlagCommander" Version="1.0.1" />
<PackageVersion Include="FlagCommander" Version="1.0.1" />
<PackageReference Include="FlagCommander" />
paket add FlagCommander --version 1.0.1
#r "nuget: FlagCommander, 1.0.1"
#:package FlagCommander@1.0.1
#addin nuget:?package=FlagCommander&version=1.0.1
#tool nuget:?package=FlagCommander&version=1.0.1
FlagCommander - Feature flags for .NET
A powerful and flexible feature flag solution for .NET applications, enabling seamless feature toggling, gradual rollouts, and A/B testing. This library helps teams control feature availability without redeploying code, improving agility and experimentation.
Features
- Easy-to-use API for managing feature flags
- Support for dynamic flag evaluation
- Actor-based and percentage-based targeting
- Integration-friendly with existing .NET applications
Get started with feature flagging today!
Usage
Register with the dependency injection container in your .NET application:
builder.Services.AddFlagCommander(options =>
{
// Currenntly supports in-memory storage (SqlLite), Postgres, MSSQL,
// MySQL, MongoDB and Redis as flag storage options
options.UseInMemoryRepository();
});
.....
// Optional FlagCommanderUI for management, requires `FlagCommanderUI` (`FlagCommanderUINet6` for .NET 6) NuGet package
builder.Services.AddFlagCommanderUI();
app.UseFlagCommanderUI(options =>
{
options
.WithAuthorizationRequired()
.WithRoutePrefix("flag-commander");
});
FlagCommander UI can be accessed by default at {YOUR_BASE_URL}/flag-commander, but it can be customized using the WithRoutePrefix
method. This page does not require authorization by default, but you can enable it using WithAuthorizationRequired()
.
Then in your code, you can inject IFlagCommander
to manage feature flags:
using FlagCommander;
public class FeatureDemo
{
private readonly IFlagCommander _flagCommander;
public FeatureDemo(IFlagCommander flagCommander)
{
_flagCommander = flagCommander;
}
public async Task RunAsync()
{
// Enable a feature flag
await _flagCommander.EnableAsync("NewFeature");
// Check if a feature is enabled
bool isEnabled = await _flagCommander.IsEnabledAsync("NewFeature");
if (isEnabled)
{
// Feature-specific logic
}
// Enable for a specific actor
var user = new User { Id = "user123" };
await _flagCommander.EnableAsync("BetaFeature", user, u => u.Id);
// Check for actor-based flag
bool isBetaEnabled = await _flagCommander.IsEnabledAsync("BetaFeature", user, u => u.Id);
// Disable a feature flag
await _flagCommander.DisableAsync("NewFeature");
}
private class User
{
public string Id { get; set; }
}
}
Contributions
Suggestions and contributions are welcome! Please open an issue or submit a pull request on GitHub.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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 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. |
-
net6.0
- Microsoft.Data.SqlClient (>= 5.2.3)
- Microsoft.Data.Sqlite (>= 9.0.4)
- Microsoft.Extensions.Options (>= 8.0.2)
- MongoDB.Bson (>= 3.4.0)
- MongoDB.Driver (>= 3.4.0)
- MongoDB.Driver.Core (>= 2.30.0)
- MySql.Data (>= 9.1.0)
- Npgsql (>= 9.0.3)
- StackExchange.Redis (>= 2.8.37)
-
net8.0
- Microsoft.Data.SqlClient (>= 5.2.3)
- Microsoft.Data.Sqlite (>= 9.0.4)
- Microsoft.Extensions.Options (>= 8.0.2)
- MongoDB.Bson (>= 3.4.0)
- MongoDB.Driver (>= 3.4.0)
- MongoDB.Driver.Core (>= 2.30.0)
- MySql.Data (>= 9.1.0)
- Npgsql (>= 9.0.3)
- StackExchange.Redis (>= 2.8.37)
-
net9.0
- Microsoft.Data.SqlClient (>= 5.2.3)
- Microsoft.Data.Sqlite (>= 9.0.4)
- Microsoft.Extensions.Options (>= 8.0.2)
- MongoDB.Bson (>= 3.4.0)
- MongoDB.Driver (>= 3.4.0)
- MongoDB.Driver.Core (>= 2.30.0)
- MySql.Data (>= 9.1.0)
- Npgsql (>= 9.0.3)
- StackExchange.Redis (>= 2.8.37)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on FlagCommander:
Package | Downloads |
---|---|
FlagCommanderUINet6
A powerful and flexible feature flag solution for .NET applications with GUI (for .NET 6) |
|
FlagCommanderUI
A powerful and flexible feature flag solution for .NET applications with GUI |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.1 | 95 | 8/13/2025 |