Schema
Last updated
Last updated
Your project's schema defines your:
Flags, i.e. their names and types
Input types for targeting logic, e.g. User
, Organization
, Environment
, e.g. SignUpEvent
, PurchaseEvent
, etc, with payload fields, e.g. revenueAmount
You can build your schema visually in the Schema view or write it in . For example, the following schema defines:
A Boolean
feature flag called showNewEditor
Input types called User
and Organization
to use in flag targeting logic
An event type called PurchaseEvent
that contains the context
in its payload
A Void
event trigger flag called purchase
which we can use to log the PurchaseEvent
You can define arbitrarily complex types for your inputs. For example, the User
input type can have a field with a list of roles:
In addition to simple Boolean
feature flags, you can have flags with String
, Int
and Float
types, and custom enum
, object and list types. For example, you can define the following flags on the Root
type:
Instead of adding new input types and targeting attributes to the top-level Context
, you can add them directly to specific flags.
This is useful if a targeting attribute is only relevant to a specific flag, as it avoids polluting the top-level scope with it, and ensures it can't be accidentally used in the targeting logic of other flags.
It also lets you pass different attribute values to a flag in the same browser session. So you can have flags that depend on the session state like user input, selected options, the current view, etc.
For example, you can define a priceId
flag that depends on the provided usageAmount
:
You can manage by marking flags as deprecated in your schema from the Hypertune UI or in GraphQL with the @deprecated
directive.
To make large changes to your schema, e.g. sweeping refactors, you can use Git-style branches and pull requests to easily .