Features  /  Registry

Feature Registry

The Registry is the master list of every feature your SDK has reported — "Features detected by the SDK. Manage visibility and targeting remotely." Each row is one feature; its Status is the default everyone sees unless a plan or targeting rule overrides it. Everything here is per-environment — you're editing whichever of Test / Live is selected above.

The status of a feature

The Status dropdown on each row is the heart of the Registry. Six of the seven are static — the same for everyone. The seventh, targeted, hands resolution over to your plan and targeting rules.

StatusEveryone seesSDK resolves to
ActiveThe feature, on and usableenabled
NewOn, with a NEW badgenew
BetaOn, with a BETA badgebeta
Coming SoonA visible but inert teasercoming_soon
GreyedA locked padlockgreyed
HiddenNothing — fully hidden (kill switch)hidden
TargetedDepends — resolved per userper plan / targeting rules
hidden always wins — it's the kill switch, and plan/targeting rules never touch it. targeted is the only status that defers to per-user rules. The static six show the same thing to everyone while the paywall is off — once it's on, every non-hidden status is still plan-gated: a plan rule resolves it per plan, and with no rule it locks for everyone.
Changing a Status rewrites the feature's direct plan rules. Setting a static status (Active / New / Beta / …) cascades that visibility onto every direct plan rule of the feature in the current environment — per-plan cells you set in the Plans matrix are overwritten (pack rules are left alone; targeted and hidden don't cascade).

Reading the table

Above the table, status tiles (Total, Active, New, Beta, Coming Soon, Greyed, Targeted, Hidden) count features by status — click one to filter. The Active / Archived sub-tabs switch between live and archived features. Each row has these columns:

ColumnWhat it shows
IDA short serial id like #42 — searchable.
FeatureThe slug, plus platform badges (Python, Swift…) and state badges: JUST ADDED (< 24 h), STALE (not seen in 30 d while active), PENDING DEPLOY (Live edit not yet deployed).
Last seenWhen the SDK last reported this feature.
PLANSFor targeted features, a rule-based badge; for plan-gated features, the plan badges (dimmed “via pack” if inherited); or 🔒 locked — no plan when the paywall is on but nothing grants access. The button opens per-feature plan gating.
StatusThe dropdown described above (read-only in the Archived view).

Find and organize

ControlWhat it does
SearchMatch by name substring or serial id — e.g. #42 or 42.
Group byNone, or Slug prefix — groups features by everything before the first -, so ai-model and ai-model-api both fall under ai, and a debug-* family folds under debug. Each group is collapsible, with a Set group status… control once it has 2+ features. The choice persists per app.
Bulk actionsSelect rows to change status, gate to plans, or archive/restore/delete several at once.
When the paywall is on, a banner counts features with no plan assigned: every visible status needs a plan, so a planless visible feature is locked (🔒 greyed) for everyone. Only hidden stays hidden. Assign plans right here — the ⚡ gate on a row, or Gate to plans… in the bulk bar after selecting features — or in the Plans matrix. All three grant access.

Discover, archive, delete, clear

ActionEffect
Discover FeaturesForces connected test instances to re-report now. See Discovery.
ArchiveSoft-hides a feature into the Archived tab without deleting it. The SDK re-discovering it (test) un-archives it.
DeleteRemoves the feature across both Test and Live — per-env state, pack memberships, and per-user overrides. A test build re-registers the slug as hidden on its next ping; live builds are read-only.
🗑 Clear all featuresWipes the entire registry for the app. Documented in Environments.

Next

Registry — Features — Onelo Docs