Skip to content

How showwhat compares

showwhat takes a specification-first approach to feature flags. Most alternatives are platforms: a dashboard, a database, an SDK that polls a server. showwhat is a portable definition format, an evaluation engine, and a visual editor.

Emulating OpenAPI + Swagger for configuration rules

Similar to how OpenAPI defines API contracts as a spec with tooling (Swagger UI, codegen) built around it, showwhat does the same for feature flags and remote config.

showwhatSaaS platformsOSS platforms
ApproachSpecification-firstPlatform-firstPlatform-first
TypeFormat + engine (npm)Managed SaaSSaaS or self-hosted
Source of truthYAML/JSON files (Git)Vendor databaseVendor database
PriceFree (MIT)Free tier + paidFree tier + paid
InfrastructureNoneVendor-hostedVendor or self-hosted
Vendor lock-inNoneYesPartial (OSS core)
Config valuesAny typeBoolean, string, number, JSONVaries by platform
GovernanceGit (PRs, history, branch protection)Built-in RBAC + auditRBAC + audit (often paid tiers)
DashboardYAML + configuratorYesYes
Percentage rolloutsVia custom conditionsYesYes
User targetingVia custom conditionsYes (segments + rules)Yes (identities, attributes)

SaaS platforms: e.g. LaunchDarkly. OSS platforms: e.g. Flagsmith, GrowthBook, Unleash. See each provider's pricing page for current details.

When to use a platform instead

showwhat is stateless and Git-native by design. Many of these platform features can be achieved with additional tooling around the core library.

However, if you need out-of-the-box enterprise multi-team governance, built-in A/B testing analytics, real-time streaming, or managed identity storage, consider using a platform.

When showwhat fits

  • You want a portable definition format that lives in version control
  • Git workflows (PRs, branch protection, commit history) are your governance model
  • You need config values beyond booleans (objects, arrays, nested structures)
  • You prefer no infrastructure to operate or vendor to depend on
  • You want to extend the condition system with your own evaluators via registerEvaluators()
  • You need OpenFeature compatibility to serve flags to any language