Self-Hosted Feature Flags: When Running Your Own Wins
Self-hosted feature flags trade a license fee for an availability problem: your kill switch ends up inside the blast radius it exists to protect you from.
- self-hosting
- architecture
- best-practices
Notes on feature flags, releases, and engineering from the Featureflip team.
Self-hosted feature flags trade a license fee for an availability problem: your kill switch ends up inside the blast radius it exists to protect you from.
Run feature flag config through git: where it lives, what a reviewer checks, how CI applies it, and why some configuration drift is correct and should stay.
OpenFeature feature flags in Node.js and .NET: set up the Featureflip provider, map evaluation context correctly, and keep your call sites vendor-neutral.
Manage feature flags as code with the Featureflip Terraform provider: declare projects, flags, and targeting in .tf files, and know what to leave out.
A feature flag outage is survivable when SDKs evaluate from cache and fall back to your defaults. The costly failure is an SDK that never reconnects after.
The Featureflip MCP server lets Claude Code, Cursor, and other AI agents create flags, ramp rollouts, and clean up stale ones without leaving your editor.
Feature flags for AI apps: put the model, prompt, and settings behind one flag, roll a new LLM out with sticky bucketing, and keep a fail-safe kill switch.
Create projects, flags, and targeting rules programmatically with the Featureflip feature flag API. Seed flags in CI, sync environments, build internal tools.
Feature flag naming conventions that hold up: the anatomy of a good key, how to enforce it in CI, how to scale it by team size, and how to fix bad names.
A dark launch ships a feature to production with nobody seeing it. A soft rollout then reveals it a few users at a time. How to run both with feature flags.
Python feature flags without the pre-fork trap: local in-memory evaluation, why Gunicorn and uWSGI silently freeze flags, and where to build the client.
Go feature flags with a pure-Go SDK: no cgo, no dependencies, in-process evaluation with no per-request network call, goroutine-safe reads, clean shutdown.
Node.js feature flags in a long-lived server: one shared client, local in-memory evaluation, readiness gating on boot, and a clean shutdown on SIGTERM.
Next.js feature flags without the hydration flash: evaluate in a Server Component or getServerSideProps, then seed the client hook so it keeps updating live.
React feature flags with a provider and a useFeatureFlag hook that re-renders on change, plus user targeting and tests that never touch the network.
Feature flag flat pricing versus per-seat and usage-based: how each model scales as your team and traffic grow, with a real cross-vendor cost comparison.
Build vs buy feature flags: a homegrown one starts as an if-statement, then grows into targeting, SDKs, audit logs, and cleanup nobody owns. What each costs.
Progressive delivery has two pillars: release progression and progressive delegation. How feature flags turn a deploy into a dial you can turn up slowly.
Eight feature flag best practices for production teams: lifecycle tagging, flat decisions, both-state testing, progressive rollouts, observability, and cleanup.
Featureflip supports first-class prerequisite flags. A child flag stays off until its parent serves the right variation, with no application-side gating.
Nine feature flag anti-patterns behind real outages — Knight Capital's $460M loss, Slack's day-long cascade, Google Cloud's June 2025 crash. Each with a fix.
Most feature flags are never removed, and one reused bit cost Knight Capital $460M. The four-step playbook to clean up flag debt safely.
Env vars configure where the process runs; flags decide what each request sees. Decision rule, comparison table, and 4 production gotchas inside.