Feature flags

Type-safe, powerful feature flags and configuration

Ship faster and more often

  • Ship work-in-progress code behind flags instead of building up large pull requests that are hard to review and merge.
  • Gradually roll out features to subsets of users and instantly turn them off when there are errors.
  • A/B test features to ensure they don't regress business, product or system metrics.

Type-safe

  • No more guessing if your flag should be in kebab-case or camelCase. Auto-generated, type-safe code gives you code completion in your IDE.
  • Prevent runtime errors from flag typos.
  • Instantly find all references of a flag to quickly understand the impact of changing it.
  • Clean up flags with confidence. Just remove them from your GraphQL query, rerun codegen and fix all the type errors.
  • Avoid raw strings in your code and having to parse integer or enum flags.
  • Exhaustively switch on enum flags.
  • Type-safety built into the logic editor UI prevents typos like invalid countries and languages.

Object-oriented

  • Group flags in object hierarchies to pass around related flags together and give them short, namespaced names — no more frontend_editor_macOS-arm64_v2.
  • Move targeting to the object level to manage what combinations of values are possible — avoid breaking the UI by disabling top_navbar and side_navbar at the same time.
  • Browse the object hierarchy in the UI to easily discover and find flags without needing to ask someone for the exact flag name.

Powerful

  • Define flags of any type in your GraphQL schema. Use Int flags for prices, limits and timeouts, String flags for in-product copy, Enum flags for multiple states and structured objects for more complex configuration.
  • Use Hypertune for more than just feature flags. Manage content, plans and pricing, rules and limits, magic numbers and backend jobs.
  • The UI implements a functional language under the hood so there's no limit to the logic you can express. Nest logic and define variables and functions for things like user segments.
  • Understand your logic. See live analytics of how many users pass each targeting condition or fall into each test arm.
  • Pass your logic any arguments you want, like the current organisation, project, environment, promo_code, locale, etc, not just user attributes.

Advanced analytics, A/B testing and machine learning

  • Insert an A/B/n test in your flag logic in under a minute.
  • Flexibly combine testing and targeting logic, e.g. to nest logic within test arms or to set up a long term holdout across many short term tests.
  • Use machine learning to decide the best flag setting automatically. Make your configuration multi-dimensional to find the best combination of flags.
  • Reuse tests and ML loops across different flags.
  • Create and track events, and define compound metrics from them to evaluate tests and optimize ML loops.
  • Build a funnel from your events, tests and ML loops to see drop-off and conversion rates.

Reliable

  • No more figuring out what combination of flag changes broke your product. Your whole config is tracked in a single, unified version history.
  • One-click rollbacks to known good states.
  • Fault tolerant with both build-time and hardcoded fallbacks to guarantee your customers a reliable product experience.
  • All flag evaluation methods are synchronous. No awaiting promises that aren't guaranteed to resolve.
  • Only needs to communicate with Hypertune on startup, not every flag evaluation.

Performant

  • Only loads the flags you actually use in your app.
  • Flag logic is delivered via a global network of edge servers for minimum network latency.
  • Only fetches flag logic once and then evaluates it locally for near-zero latency — no need to make a network request for every flag call.
  • Optionally initialize using local fallbacks to minimize time to First Contentful Paint (FCP).

Debuggable

  • Debug flag values for specific users and get realtime logs for every SDK operation.
  • The SDK is open source and easy to inspect yourself.