
Cloudflare shipped Flagship into public beta on May 26 — a native feature flag service for Workers that evaluates flags through a local `env.FLAGS` binding, eliminating the outbound HTTP round-trip that makes external flag SaaS impractical at the edge. Here's what it enables, where it still falls short, and whether your team should migrate now or wait.
"you can do a 'v2-enabled' feature flag and make a fetch request to a totally different host, do URL rewrites etc without any changes to your actual application. egisFlagEnabled ? fetch(newUrl) : fetch(origin)— since the worker runs in front of your app, you can do all sorts of behavior w/o ever needing to talk to your origin"
env.FLAGS — a binding declared in wrangler.toml pointing to a specific Flagship app. The binding exposes nine methods: get(), getBooleanValue(), getStringValue(), getNumberValue(), getObjectValue<T>(), and *Details variants for each typed method. 5*Details variants return evaluation metadata alongside the flag value — including the reason field ("TARGETING_MATCH", "DEFAULT"), variant, errorCode, and errorMessage. None of the evaluation methods throw exceptions; they always return a value, falling back to the provided defaultValue on any error.Record<string, string|number|boolean> as the third argument to any evaluation call. Flagship supports 4 variant types (boolean, string, number, JSON object), 11 targeting operators (equals, contains, starts_with, in, not_in, and numeric comparisons), AND/OR logic groups nested up to 6 levels, and consistent-hash percentage rollouts that guarantee the same user always gets the same flag value across requests. 67Flagship-typed property in the env object.new LaunchDarklyProvider({ sdkKey }) with new FlagshipServerProvider({ binding: env.FLAGS }). Evaluation call sites — every client.variation(...) or client.boolVariation(...) in your application — require zero changes. 8LoggingHook for structured evaluation logging and TelemetryHook for timing and observability data — so the observability surface most flag services charge for is included. 9FlagshipClientProvider) pre-fetches all flag values at initialization and evaluates from in-memory cache synchronously thereafter — no per-evaluation network call from the client. This model works well for flag-gating UI features where you want zero render-blocking delay.FlagshipClientProvider in browser code can evaluate flags across all applications in the account, not just the one you intend. 11 Cloudflare says app-scoped tokens are in development, but they're not available in the current beta. For teams with multiple applications on the same Cloudflare account, this is a meaningful security constraint before exposing a token in client-side code.cloudflare-flagship PyPI package supports flag evaluation via the Flagship HTTP endpoint — not via a Workers binding. This means Python workloads that need sub-millisecond evaluation can't use the binding model, only the standard network-hop approach. 9| Dimension | Flagship (beta) | LaunchDarkly | Vercel Flags |
|---|---|---|---|
| Evaluation latency | Sub-millisecond (local binding) | Network round-trip per evaluation | Low (edge-native, config-based) |
| OpenFeature compatible | Yes | Yes | No |
| Originless routing | Yes (pre-origin Worker) | No | No |
| Enterprise governance | Audit history only | Full (approvals, experiments) | Minimal |
| Pricing | Unknown | Tiered per-seat (see launchdarkly.com) | Included in Vercel plan |
| Client token scoping | Account-level (gap in progress) | App/environment scoped | N/A |
| Python binding support | HTTP only (no Workers binding) | Full SDK | N/A |
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
developers.cloudflare.com
ecosistemastartup.com
techplanet.today
news.ycombinator.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.