Optimus

v1 · TypeScript · zero-dep core

Feature flags that stay put once you raise them.

One evaluation engine. Deterministic bucketing. React, Angular, and SSR adapters that share the same core instead of reimplementing it.

Get startednpm install @useoptimus/core
evaluate('checkout-redesign', ctx)
control
  • user_5b88
  • user_a771
variant A
  • user_3d01
  • user_e04c
variant B
  • user_18a2
  • user_92fe
  • user_c710
  • user_f923

Same id, same seed, same bucket — every time, across every server. Reseeding remaps the whole rollout deterministically; nothing here is random per-request.

What's actually different

trueby default

Three primitives, not eight engines

Boolean, variant, and value flags share one evaluation path. Kill switches, A/B tests, and dynamic config are just presets over the same core.

trueby default

SSR without double evaluation

The server evaluates once and serializes a snapshot. The client hydrates from it — no re-run on mount, no flicker.

falseby default

No hidden salting responsibility

Bucketing keys are yours to configure; the salt composition (id:flag:seed) is the library's job, always. You can't forget it.

trueby default

Zero framework deps in core

@useoptimus/core never imports React, Angular, or window. Run it in a Worker, a Node server, or a browser — same engine, same result.

One core, thin adapters

React

@useoptimus/react

Angular

@useoptimus/angular

Node / SSR

@useoptimus/node