diff --git a/blog/2026-08-12-mid-2026-update.md b/blog/2026-08-12-mid-2026-update.md new file mode 100644 index 000000000..7f10e8e1a --- /dev/null +++ b/blog/2026-08-12-mid-2026-update.md @@ -0,0 +1,149 @@ +--- +title: 'OpenFeature Mid-2026 Update: Platform-Native Feature Flags, a New TC Member, and Spec v0.9.0' +description: 'Six large platforms shipped feature flag services supporting OpenFeature, new vendors joined the ecosystem, Nicklas Lundin joined the Technical Committee, and specification v0.9.0 shipped.' +date: 2026-08-12 +categories: ['OpenFeature', 'Feature Flags', 'CloudNative', 'Specification'] +tags: [update, ecosystem, governance, spec] +slug: 'openfeature-mid-2026-update' +authors: ['jonathannorris'] +# image: /img/blog/2026-08-12-mid-2026-update/.png +--- + +It has been a busy few months since the [KubeCon EU 2026 recap](/blog/kubecon-eu-2026-recap). +Six large platforms shipped feature flag services supporting OpenFeature, more vendors joined the ecosystem, the Technical Committee grew, and we shipped the largest specification release in over two years. + + + +## Platform-Native Feature Flags + +The biggest news of the last year is not something we built. +Six well-known platforms launched feature flag services of their own, and each chose OpenFeature as a critical part of its product offering. + +- **[Datadog](https://docs.datadoghq.com/feature_flags/)** launched in late 2025 and describes its product as "built on the OpenFeature standard," now supporting OpenFeature providers across eight languages. + Coverage spans server-side [Java](https://docs.datadoghq.com/feature_flags/server/java), [Node.js](https://docs.datadoghq.com/feature_flags/server/nodejs), [Python](https://docs.datadoghq.com/feature_flags/server/python), and [Ruby](https://docs.datadoghq.com/feature_flags/server/ruby), plus client-side [JavaScript](https://docs.datadoghq.com/feature_flags/client/javascript), [React](https://docs.datadoghq.com/feature_flags/client/react), [iOS](https://docs.datadoghq.com/feature_flags/client/ios), and [Android](https://docs.datadoghq.com/feature_flags/client/android/). +- **[Vercel Flags](https://vercel.com/blog/vercel-flags-platform-native-feature-flags)** became generally available in April, with an OpenFeature provider. + Their [docs](https://vercel.com/docs/flags/vercel-flags/sdks/openfeature) scope it to server-side use, with their own Flags SDK covering client-side and framework-native cases. +- **[Cloudflare Flagship](https://blog.cloudflare.com/flagship/)** was announced in April and reached public beta in May, with providers for both the Workers runtime and the browser. + Evaluation happens inside the Workers runtime rather than over the network, and the provider also runs on Node.js, Bun, and Deno. +- **[Google Cloud App Lifecycle Manager](https://cloud.google.com/blog/products/application-development/new-feature-flags-in-applifecycle-manager)** added feature flags in May, now in public preview. + Google describes it as "built on the OpenFeature standard, utilizing industry-standard SDKs and the flagd evaluation engine," making it an adopter of the OpenFeature [flagd](https://flagd.dev/) evaluation engine alongside the API. + Notably, there is no Google-specific provider: their [quickstart](https://docs.cloud.google.com/saas-runtime/docs/flags/flags-quickstart) uses the community flagd provider as-is, with guides for Python, Java, and Go. +- **[Mixpanel](https://mixpanel.com/blog/mixpanel-experimentation-feature-flags/)** launched feature flags alongside its experimentation suite in June. + Its eight OpenFeature providers cover server-side [Go](https://github.com/mixpanel/mixpanel-go/tree/main/openfeature), [Java](https://github.com/mixpanel/mixpanel-java/tree/master/openfeature-provider), [JavaScript](https://github.com/mixpanel/mixpanel-node/tree/master/packages/openfeature-server-provider), [Python](https://github.com/mixpanel/mixpanel-python/tree/master/openfeature-provider), and [Ruby](https://github.com/mixpanel/mixpanel-ruby/tree/master/openfeature-provider), plus client-side [JavaScript](https://github.com/mixpanel/mixpanel-js/tree/master/packages/openfeature-web-provider), [Swift](https://github.com/mixpanel/mixpanel-swift-openfeature), and [Kotlin](https://github.com/mixpanel/mixpanel-android/tree/master/openfeature-provider). +- **[Octopus Deploy](https://octopus.com/blog/feature-flags-public-preview)** added feature flags in July, in public preview for Octopus Cloud customers. + Its documentation states that "Octopus Feature Flags rely on OpenFeature as the client SDK," with [providers](https://octopus.com/docs/feature-flags/providers) for server-side [.NET](https://github.com/OctopusDeploy/openfeature-provider-dotnet) and [Java](https://github.com/OctopusDeploy/openfeature-provider-java), plus [TypeScript](https://github.com/OctopusDeploy/openfeature-provider-ts-web) in the browser. + +This is what a standard is for. +Each of these teams shipped a product without inventing new APIs and SDKs, so application code stays portable and teams remain free to move between them. +We expect this trend to continue and welcome more vendors building on OpenFeature. + +## New Vendors in the Ecosystem + +Alongside the platforms above, eight more projects shipped their first OpenFeature providers: + +- **[ConfigDirector](https://configdirector.com/)** added JavaScript for both + [browser](https://docs.configdirector.com/sdks/browser/openfeature-web) and [server](https://docs.configdirector.com/sdks/server/openfeature-node). +- **[Feat](https://feat.so)** added JavaScript for both + [client](https://github.com/feathq/openfeature-web) and [server](https://github.com/feathq/js-sdk), + plus [Dart](https://github.com/feathq/openfeature-dart). +- **[Featureflip](https://featureflip.io/)** added [JavaScript and .NET](https://featureflip.io/docs/integrations/openfeature/). +- **[Featurevisor](https://featurevisor.com/)** [added providers](https://featurevisor.com/blog/openfeature-providers/) across seven languages: + JavaScript for [Node.js](https://github.com/featurevisor/featurevisor/tree/main/packages/openfeature-provider-node) + and the [browser](https://github.com/featurevisor/featurevisor/tree/main/packages/openfeature-provider-web), + plus [Go](https://github.com/featurevisor/featurevisor-go/tree/main/openfeature), + [Java](https://github.com/featurevisor/featurevisor-java/tree/main/featurevisor-openfeature), + [PHP](https://github.com/featurevisor/featurevisor-php/blob/main/src/OpenFeatureProvider.php), + [Python](https://github.com/featurevisor/featurevisor-python/blob/main/src/featurevisor/openfeature.py), + [Ruby](https://github.com/featurevisor/featurevisor-ruby/blob/main/lib/featurevisor-openfeature.rb), + and [Swift](https://github.com/featurevisor/featurevisor-swift2/tree/main/Sources/FeaturevisorOpenFeature). +- **[Pendo](https://www.pendo.io/)** added JavaScript providers for + [server](https://www.npmjs.com/package/@pendo/openfeature-server-provider) and [web](https://www.npmjs.com/package/@pendo/openfeature-web-provider). +- **[Rollgate](https://rollgate.io/)** added a + [JavaScript server provider](https://github.com/rollgate/sdks/tree/main/packages/openfeature-server-provider). +- **[Superposition](https://juspay.io/open-source/superposition)** added server-side + [Java](https://github.com/juspay/superposition/tree/main/clients/java/openfeature-provider), + [JavaScript](https://github.com/juspay/superposition/tree/main/clients/javascript/open-feature-provider), + [Python](https://github.com/juspay/superposition/tree/main/clients/python/provider), + and [Rust](https://github.com/juspay/superposition/tree/main/crates/superposition_provider), + plus client-side [Kotlin](https://juspay.io/open-source/superposition/docs/providers/openfeature/java/). +- **[Switchbox](https://switchbox.dev/)** added + [JavaScript](https://github.com/ignat14/switchbox-sdk-js/tree/main/packages/openfeature), + [React](https://switchbox.dev/docs/sdk/openfeature), + and [Python](https://github.com/ignat14/switchbox-sdk-python/tree/main/providers/openfeature) providers. + +Existing vendors expanded their language coverage: + +- **[Flagsmith](https://www.flagsmith.com/)** added [Kotlin](https://github.com/Flagsmith/flagsmith-openfeature-provider-kotlin) and [PHP](https://github.com/open-feature/php-sdk-contrib/tree/main/providers/Flagsmith). +- **[GO Feature Flag](https://gofeatureflag.org/)** added [Rust](https://gofeatureflag.org/docs/sdk/server_providers/openfeature_rust). +- **[PostHog](https://posthog.com/)** added official + [Node.js](https://github.com/PostHog/posthog-js/tree/main/packages/openfeature-node-provider), + [web](https://github.com/PostHog/posthog-js/tree/main/packages/openfeature-web-provider), + and [Python](https://github.com/PostHog/posthog-python/tree/main/openfeature-provider) providers, + where its JavaScript coverage had previously been community maintained. +- **[Unleash](https://www.getunleash.io/)** now maintains + [seven official providers in beta](https://docs.getunleash.io/release-notes/2026/8/5#openfeature-providers-in-beta) + under its own organization, covering Node.js, PHP, Python, Ruby, Rust, Swift, and Android. + On the community side, a new + [.NET provider](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Providers.Unleash) + landed in the OpenFeature organization, and the web provider gained [Angular](https://github.com/open-feature/js-sdk-contrib/blob/main/libs/providers/unleash-web/README.md#angular-framework) + and [React](https://github.com/open-feature/js-sdk-contrib/blob/main/libs/providers/unleash-web/README.md#react-framework) support. + +If your company has a provider that is not listed, [let us know](https://github.com/open-feature/openfeature.dev/issues/new?assignees=&labels=provider&projects=&template=document-provider.yaml&title=%5BProvider%5D%3A+) and we will add it to the [ecosystem directory](/ecosystem). + +## Welcoming Nicklas Lundin to the Technical Committee + +[Nicklas Lundin](https://github.com/nicklasl) has joined the OpenFeature [Technical Committee](/community/tech-committee-charter/). +Nicklas is based in Stockholm and works at Spotify on [Confidence](https://confidence.spotify.com/), an experimentation and feature flagging platform supporting OpenFeature. +He has been a dedicated contributor for several years and has driven much of the development and refinement of our mobile SDKs. + +## Specification v0.9.0 + +[Specification v0.9.0](https://github.com/open-feature/spec/releases/tag/v0.9.0) is our first spec release since v0.8.0 in March 2024. + +The most consequential change ([spec#314](https://github.com/open-feature/spec/pull/314)) stabilizes the evaluation and provider sections and hardens hooks, events, and evaluation context. +If you build providers or SDKs, the surfaces you depend on most are now considerably more settled. + +The release also gathers up work that had been accumulating: +[tracking](https://github.com/open-feature/spec/pull/268), +a [logging hook](https://github.com/open-feature/spec/pull/269), +[hook data](https://github.com/open-feature/spec/pull/273), +a [multi-provider appendix](https://github.com/open-feature/spec/pull/264), +and an [observability appendix](https://github.com/open-feature/spec/pull/287) with refreshed OpenTelemetry semantic conventions. +Two changes are worth calling out for implementers. +[Isolated API instances](https://github.com/open-feature/spec/pull/368) mean the global singleton is no longer mandatory, which unblocks micro-frontends, dependency injection, and test isolation. +[Provider lifecycle](https://github.com/open-feature/spec/pull/385) is now event-driven, so providers own their own status rather than having the SDK infer it, closing a class of initialization races. + +Three changes are breaking ([spec#280](https://github.com/open-feature/spec/pull/280), [spec#306](https://github.com/open-feature/spec/pull/306), and [spec#360](https://github.com/open-feature/spec/pull/360)), so please read the release notes before upgrading a provider or SDK implementation. + +Fourteen people made their first contribution to the specification in this release. + +## Also Shipped + +- **OFREP gained push updates.** Version 0.3.0 ([protocol#67](https://github.com/open-feature/protocol/pull/67)) added SSE event streams, and [protocol#77](https://github.com/open-feature/protocol/pull/77) accepted three ADRs covering push notifications, [cache-first local persistence](https://github.com/open-feature/protocol/pull/75), and [turning off default timer polling](https://github.com/open-feature/protocol/pull/69). +- **A new C++ SDK.** The [C++ SDK](/docs/reference/sdks/server/cpp) cut its [first release](https://github.com/open-feature/cpp-sdk/releases) in June and is already at v0.1.3, with hooks, evaluation options, and the global API. +- **flagd shipped [0.16.0](https://github.com/open-feature/flagd/releases/tag/flagd%2Fv0.16.0) and [0.16.1](https://github.com/open-feature/flagd/releases/tag/flagd%2Fv0.16.1)**, adding custom sync headers ([flagd#1960](https://github.com/open-feature/flagd/pull/1960), [flagd#1969](https://github.com/open-feature/flagd/pull/1969)), incremental gRPC updates ([flagd#1922](https://github.com/open-feature/flagd/pull/1922)), and content-hash deduplication ([flagd#1991](https://github.com/open-feature/flagd/pull/1991)), alongside a sustained run of reliability fixes. +- **The OpenFeature Operator reached [v0.9.2](https://github.com/open-feature/open-feature-operator/releases/tag/v0.9.2).** Note that v0.9.0 moved to [native sidecar containers](https://github.com/open-feature/open-feature-operator/pull/807) and now requires Kubernetes 1.29 or later. +- **Isolated API instances landed across five SDKs.** [.NET](https://github.com/open-feature/dotnet-sdk/pull/740), [PHP](https://github.com/open-feature/php-sdk/pull/171), and [Java](https://github.com/open-feature/java-sdk/pull/1928) have shipped them in releases, with [Go](https://github.com/open-feature/go-sdk/pull/492) and [Kotlin](https://github.com/open-feature/kotlin-sdk/pull/243) merged and awaiting a release. + Library authors, micro-frontends, and parallel test suites no longer have to share one process-global singleton. +- **"DISABLED is a successful evaluation" rolled out to five flagd cores.** [JavaScript](https://github.com/open-feature/js-sdk-contrib/pull/1558), [Java](https://github.com/open-feature/java-sdk-contrib/pull/1800), [Go](https://github.com/open-feature/go-sdk-contrib/pull/896), [Python](https://github.com/open-feature/python-sdk-contrib/pull/395), and [.NET](https://github.com/open-feature/dotnet-sdk-contrib/pull/671) all shipped the change, each with a major version bump on the core library. + A disabled flag now resolves successfully and returns your default rather than surfacing an error. +- **Long support arrived in the JVM SDKs.** [Java](https://github.com/open-feature/java-sdk/pull/1985) and [Kotlin](https://github.com/open-feature/kotlin-sdk/pull/225) both added a 64-bit integer type, closing a gap where large flag values overflowed. +- **New providers.** Azure App Configuration ([JavaScript](https://github.com/open-feature/js-sdk-contrib/pull/1575)), localStorage ([JavaScript](https://github.com/open-feature/js-sdk-contrib/pull/1518)), Optimizely ([Go](https://github.com/open-feature/go-sdk-contrib/pull/802), with Java reaching 1.0.0), and GCP Secret Manager and Parameter Manager ([Java](https://github.com/open-feature/java-sdk-contrib/pull/1772)). +- **Three breaking changes worth checking before you upgrade.** Python's `set_provider()` is now non-blocking with a new `set_provider_and_wait()` ([python-sdk#595](https://github.com/open-feature/python-sdk/pull/595)), fractional bucketing was overhauled ([js-sdk-contrib#1501](https://github.com/open-feature/js-sdk-contrib/pull/1501)) in a way that changes which users land in which variant, and the OFREP web provider [turned default polling off](https://github.com/open-feature/js-sdk-contrib/pull/1510). + +## Where We Could Use Help + +The work that moves the ecosystem furthest is rarely a single fix in a single SDK. +These are the larger efforts where an extra pair of hands changes the outcome, and each one has a per-language issue you can pick up. + +- **[Specification v0.9.0 compliance](https://github.com/open-feature/spec/releases/tag/v0.9.0) is open in all ten SDKs.** Until each one works through its checklist, the same OpenFeature version behaves differently depending on which language your service is written in. + There is a tracking issue per SDK: [JavaScript](https://github.com/open-feature/js-sdk/issues/1441), [Java](https://github.com/open-feature/java-sdk/issues/1999), [.NET](https://github.com/open-feature/dotnet-sdk/issues/792), [Go](https://github.com/open-feature/go-sdk/issues/526), [Python](https://github.com/open-feature/python-sdk/issues/618), [Ruby](https://github.com/open-feature/ruby-sdk/issues/300), [Kotlin](https://github.com/open-feature/kotlin-sdk/issues/250), [Swift](https://github.com/open-feature/swift-sdk/issues/122), [Rust](https://github.com/open-feature/rust-sdk/issues/137), and [PHP](https://github.com/open-feature/php-sdk/issues/182). +- **[A cross-language conformance suite for providers](https://github.com/open-feature/spec/issues/417).** Every provider is verified differently today, or not at all, which is the root cause of most of the parity gaps below. + This is the highest-leverage project on the list. +- **[Hashing consistency in flagd's fractional evaluation](https://github.com/open-feature/flagd/issues/1737), open across eleven repos.** Until every flagd provider agrees on how it buckets, the same user can land in different variants depending on which SDK evaluates the flag. +- **[OFREP SSE streaming](https://github.com/open-feature/js-sdk-contrib/issues/1498) is unimplemented in six ecosystems.** The protocol supports push updates now, but most OFREP users are still waiting on a poll interval to see a flag change. +- **[Bringing multi-provider up to parity with the JavaScript reference](https://github.com/open-feature/spec/issues/316).** Most SDKs now have a multi-provider, but a few features from the JavaScript implementation did not make it across, so [Java](https://github.com/open-feature/java-sdk/issues/1882), [Kotlin](https://github.com/open-feature/kotlin-sdk/issues/211), and [Swift](https://github.com/open-feature/swift-sdk/issues/109) each have some catching up to do. +- **[Bound-domain initialization](https://github.com/open-feature/spec/issues/403)** is still open in Go, .NET, Kotlin, Rust, and Swift. + +Come find us on [CNCF Slack](https://cloud-native.slack.com/archives/C0344AANLA1), at our [bi-weekly community meetings](/community/#community-meetings), or on [GitHub](https://github.com/open-feature). +We will be at [KubeCon NA 2026](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/) in Salt Lake City this November.