A portable YAML/JSON format, an evaluation engine, and a visual configurator. No platform required.
npm install showwhat Like OpenAPI and Swagger, but for feature flags.
A specification-first approach where the definition file is the source of truth, not a vendor database.
Definitions are plain YAML or JSON. Store them in Git, serve from an API, or embed inline. The format stays the same everywhere.
Built-in primitives for strings, numbers, datetimes, and booleans.
Shorthand types for environments and time windows. Add your own with registerEvaluators().
PR reviews are your approval process. Commit history is your audit log. Branch protection is your RBAC. No separate dashboard to operate.
The definition format is the contract between your config authors and your runtime. Write it in YAML or JSON, evaluate it with one function call.
definitions:
checkout_v2:
variations:
- value: true
conditions:
- type: env
value: prod
- value: falseimport { showwhat, MemoryData } from "showwhat";
const data = await MemoryData.fromYaml(yaml);
const result = await showwhat({
key: "checkout_v2",
context: { env: "prod" },
options: { data },
});
result.value; // true Load definitions from memory, files, or your own API. The DefinitionReader interface stays the same.
Rules resolve top-to-bottom. Time windows, environment matching, and catch-all defaults compose in the same definition. No special syntax. No separate scheduling interface.
definitions:
maintenance_mode:
variations:
- value: "Deployment in progress"
conditions:
- type: env
value: prod
- type: startAt
value: "2026-03-03T02:00Z"
- type: endAt
value: "2026-03-03T07:00Z"
- value: nullThe core uses Web Standard APIs only. Zero Node.js-specific dependencies. Pick your runtime, import, and go.
import { showwhat, MemoryData } from "showwhat";
import { readFile } from "node:fs/promises";
const yaml = await readFile("./flags.yaml", "utf-8");
const data = await MemoryData.fromYaml(yaml);
const result = await showwhat({
key: "checkout_v2",
context: { env: "prod" },
options: { data },
});npm install showwhat