| theme | ./ |
|---|---|
| layout | cover |
Standardizing Feature Flagging for Everyone
A CNCF Incubating project bringing a standardized, vendor-agnostic API for feature flagging across languages and platforms.
An open specification for feature flagging
An open specification that provides a vendor-agnostic, community-driven API for feature flagging that works with your favorite feature flag management tool or in-house solution.
- Vendor-agnostic - works with any feature flag backend
- Community-driven - governed by the CNCF
- Standardized - consistent API across languages and platforms
- Extensible - hooks, providers, and evaluation context
Feature flags are a software development technique that allows you to change the behavior of your application without modifying the source code.
- Gradual rollouts - release features to a percentage of users
- A/B testing - experiment with different implementations
- Kill switches - instantly disable problematic features
- Environment configuration - different behavior per environment
Supporting every major language and framework
Official SDKs available across multiple ecosystems.
::right::
- Server-side: Go, Java, .NET, Python, PHP, Ruby, Rust
- Client-side: JavaScript, React, Angular, Swift, Kotlin, Dart
- Community: Growing ecosystem of providers and hooks
layout: image-right image: https://cover.sli.dev
A simple example of evaluating a feature flag with OpenFeature:
import { OpenFeature } from '@openfeature/server-sdk'
const client = OpenFeature.getClient()
const showBanner = await client.getBooleanValue(
'show-banner',
false,
{ targetingKey: 'user-123' }
)
if (showBanner) {
renderBanner()
}layout: image-left image: https://cover.sli.dev
Providers are the bridge between OpenFeature and your feature flag backend.
- Implement the Provider interface
- Register with
OpenFeature.setProvider() - Supports lifecycle events (ready, error, stale)
- Multiple named providers for different domains
OpenFeature provides a unified API that abstracts the feature flag evaluation process.
The new Tracking API enables experimentation support within OpenFeature.
| Feature | Status |
|---|---|
| Boolean evaluation | Stable |
| String evaluation | Stable |
| Number evaluation | Stable |
| Object evaluation | Stable |
| Tracking API | Experimental |
| Flag metadata | Stable |
Avoid vendor lock-in and adopt a standardized approach to feature flagging.
- Consistent developer experience
- Easy provider switching
- Built-in extensibility via hooks
::right::
Backed by the CNCF and supported by major vendors:
- Flagsmith
- LaunchDarkly
- Split
- CloudBees
- Dynatrace
- And many more...
Semantic Conventions for Feature Flagging
Standardized observability for feature flag evaluations through Semantic Conventions.
import { OpenFeature } from '@openfeature/server-sdk'
import { TracingHook } from '@openfeature/open-telemetry-hooks'
// Register the tracing hook globally
OpenFeature.addHooks(new TracingHook())
// All flag evaluations now emit OpenTelemetry spans
const client = OpenFeature.getClient()
const value = await client.getBooleanValue('my-flag', false)Visit openfeature.dev for documentation and guides
Join us on GitHub and help build the standard
Chat with us on #openfeature in CNCF Slack
Learn more at openfeature.dev