Deploy anytime. Release when you're ready.
Keep your IFeatureManager, FeatureGate, and feature tag helper code, change flags without redeploying, and skip the Azure subscription.
Why Developers Choose FeatureFlags.app
🔧 Built for Microsoft's Feature Management libraries
IFeatureManager, IFeatureManagerSnapshot, [FeatureGate], and the <feature> tag helper work as they always have.
Flags use Microsoft's built-in Targeting and TimeWindow filters, so there is no new evaluation model to learn.
🚀 Release features without redeploying
Gradually roll out changes, turn off problematic features without a deploy, and schedule features with time windows.
Changes reach your apps within your refresh interval (15 minutes by default).
☁️ No Azure subscription required
Your app can run on Azure, AWS, GCP, or your own servers. FeatureFlags.app is a hosted service, so there is nothing to set up or run besides the client package.
⚡ Evaluated inside your app
Flags are read from an in-memory copy that refreshes in the background, so checks never wait on the network, and your app keeps using the last-known-good copy during an outage.
Set the refresh interval to balance network calls against how quickly changes reach your apps.
🔒 Your users' data stays in your app
Because evaluation happens in your app, user identities and evaluation results are never sent to FeatureFlags.app. The client only downloads your flag definitions.
Stop Redeploying Just to Toggle Features
Modern teams shouldn't redeploy applications just to:
- Disable broken features.
- Release gradually.
- Test production safely.
From a Redeploy to a Dashboard
Your flag-checking code doesn't change. Only where the flags come from does.
Before: flags in appsettings.json
{
"FeatureManagement": {
"NewCheckout": true
}
}
Changing a flag means editing the file and redeploying.
After: flags in the dashboard
using Acmi.FeatureFlags.Client;
var builder = WebApplication.CreateBuilder(args);
builder.AddFeatureFlags();
{
"FeatureFlags": {
"ApiBaseEndpoint": "https://featureflags.app/api/",
"ApiKey": "[from user secrets or environment variables]"
}
}
Change a flag in the dashboard and your apps pick it up within their refresh interval (15 minutes by default, configurable).
Your code stays the same
[FeatureGate("NewCheckout")]
public IActionResult Checkout() => View();
// or check the flag yourself
if (await featureManager.IsEnabledAsync("NewCheckout")) {
// new checkout
}
<feature name="NewCheckout">
<a href="/checkout">Check out</a>
</feature>
How It Works
- Configure: Create feature flags and API keys through the web UI.
- Integrate: Add the client library to your ASP.NET Core applications (.NET 10 or later).
- Control: Easily toggle features on/off, or create more complex rules.
Feature Comparison
Last verified: October 9, 2026, against each vendor's public pricing and documentation. Plans and prices change, so check the vendor before you decide.
Built For Modern .NET Teams
- Development teams seeking a simple, no-frills feature flag solution.
- Teams already using Microsoft.FeatureManagement that want to change flags without editing config files and redeploying.
- Teams without Azure that don't want to adopt an Azure subscription just to manage flags.
What if it goes away?
A hosted service should be easy to leave, so:
- The client is MIT-licensed. See it on GitHub.
- Flags use Microsoft's standard format, so they load in plain Microsoft.FeatureManagement.
- Export any environment to standard JSON on every plan, even while you are over your flag limit.
- Service health is public on the status page.
Ready to Get Started?
Check out the Quick Start Guide
to add it to your ASP.NET Core application.