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 | 223 | 8/13/2025 |