Monorepository for the RolloutCtrl JavaScript/TypeScript SDK ecosystem — feature flag and action evaluation platform with local evaluation, metric aggregation, and framework integrations.
| Package | Description |
|---|---|
| @rolloutctrl/evaluator | Pure, dependency-free evaluation engine. Strategies, segments, rules, percentage rollouts, variant assignment. No networking or I/O. |
| @rolloutctrl/js-sdk | Browser-focused SDK. Local evaluation, config polling, localStorage persistence, metric aggregation, context resolution. |
| @rolloutctrl/node-sdk | Server-side Node.js SDK. Local evaluation, config polling, metric aggregation. Uses Node.js APIs (node:events, fetch). |
| @rolloutctrl/react-sdk | React integration layer. Hooks (useFlag, useVariant, usePermission) and components (Flag, Permission). Thin wrapper over @rolloutctrl/js-sdk. |
- nodejs-express — Express app using
@rolloutctrl/node-sdkfor feature flag evaluation. - vite-react-ts — Vite + React + TypeScript app using
@rolloutctrl/react-sdkand@rolloutctrl/js-sdk. - html — Plain HTML page using
@rolloutctrl/js-sdkdirectly from a CDN, no bundler or build step.
@rolloutctrl/evaluator (pure evaluation engine, no dependencies)
▲
│
@rolloutctrl/js-sdk (browser) @rolloutctrl/node-sdk (server)
▲
│
@rolloutctrl/react-sdk (React hooks & components)
All SDKs perform local evaluation — no HTTP request is made per flag check. Configuration is fetched on startup and polled at a configurable interval. Metrics (flag exposures, strategy matches, variant exposures) are aggregated with deduplication and flushed periodically.
- Package manager: Yarn 4 (Berry) with
node-moduleslinker - Build: tsup (CJS + ESM + dts)
- Test: Jest
- Lint:
tsc --noEmit - Language: TypeScript 5+
# Install dependencies
yarn install
# Build all packages
yarn build
# Run all tests
yarn test
# Lint all packages
yarn lint# Build
yarn workspace @rolloutctrl/evaluator build
# Test
yarn workspace @rolloutctrl/js-sdk test
# Watch mode
yarn workspace @rolloutctrl/node-sdk test:watchMIT