Reference
Interfaces
CheckEvent
Event representing checking the flag evaluation result
Properties
action
"check-is-enabled" | "check-config"
check-is-enabled means isEnabled was checked, check-config means config was checked.
key
string
Flag key.
missingContextFields?
string[]
Missing context fields.
ruleEvaluationResults?
boolean[]
Rule evaluation results.
value?
| boolean | { key: string; payload: any; }
Result of flag or configuration evaluation. If action is check-is-enabled, this is the result of the flag evaluation and value is a boolean. If action is check-config, this is the result of the configuration evaluation.
version?
number
Version of targeting rules.
CompanyContext
Context is a set of key-value pairs. This is used to determine if feature targeting matches and to track events. Id should always be present so that it can be referenced to an existing company.
Indexable
[key: string]: undefined | string | numberProperties
id
undefined | string | number
Company id
name?
string
Company name
Flag<TConfig>
Describes a feature
Type Parameters
TConfig extends FlagType["config"]
Properties
isEnabled
boolean
If the feature is enabled.
isLoading
boolean
If the feature is loading.
key
string
The key of the feature.
Methods
track()
track():
| undefined
| Promise<
| undefined
| Response>Track feature usage in Reflag.
Returns
| undefined | Promise< | undefined | Response>
Flags
UserContext
Context is a set of key-value pairs. This is used to determine if feature targeting matches and to track events. Id should always be present so that it can be referenced to an existing user.
Indexable
[key: string]: undefined | string | numberProperties
email?
string
User email
id
undefined | string | number
User id
name?
string
User name
Type Aliases
BootstrappedFlags
type BootstrappedFlags = {
context: ReflagContext;
flags: RawFlags;
};Type declaration
context
flags
EmptyFlagRemoteConfig
type EmptyFlagRemoteConfig = {
key: undefined;
payload: undefined;
};Type declaration
key
undefined
payload
undefined
FlagKey
type FlagKey = keyof TypedFlags;FlagRemoteConfig
type FlagRemoteConfig =
| {
key: string;
payload: any;
}
| EmptyFlagRemoteConfig;A remotely managed configuration value for a feature.
Type declaration
{ key: string; payload: any; }
key
string
The key of the matched configuration value.
payload
any
The optional user-supplied payload data.
FlagType
type FlagType = {
config: {
payload: any;
};
};Type declaration
config?
{ payload: any; }
config.payload
any
RawFlags
type RawFlags = Record<FlagKey, RawFlag>;Describes a collection of evaluated raw flags.
ReflagBootstrappedProps
type ReflagBootstrappedProps = ReflagPropsBase & ReflagInitOptionsBase & {
flags: BootstrappedFlags;
};Props for the ReflagBootstrappedProvider.
Type declaration
ReflagClientProviderProps
type ReflagClientProviderProps = Omit<ReflagPropsBase, "debug"> & {
client: ReflagClient;
};Props for the ReflagClientProvider.
Type declaration
client
ReflagInitOptionsBase
type ReflagInitOptionsBase = Omit<InitOptions, "user" | "company" | "other" | "otherContext" | "bootstrappedFlags">;Internal
Base init options for the ReflagProvider and ReflagBootstrappedProvider.
ReflagProps
type ReflagProps = ReflagPropsBase & ReflagInitOptionsBase & {
company: CompanyContext;
context: ReflagContext;
otherContext: Record<string, string | number | undefined>;
user: UserContext;
};Props for the ReflagProvider.
Type declaration
company?
Company related context. If you provide id Reflag will enrich the evaluation context with company attributes on Reflag servers.
Deprecated
Use context instead, this property will be removed in the next major version
context?
The context to use for the ReflagClient containing user, company, and other context.
otherContext?
Record<string, string | number | undefined>
Context which is not related to a user or a company.
Deprecated
Use context instead, this property will be removed in the next major version
user?
User related context. If you provide id Reflag will enrich the evaluation context with user attributes on Reflag servers.
Deprecated
Use context instead, this property will be removed in the next major version
ReflagPropsBase
type ReflagPropsBase = {
children: ReactNode;
debug: boolean;
initialLoading: boolean;
loadingComponent: ReactNode;
};Internal
Base props for the ReflagProvider and ReflagBootstrappedProvider.
Type declaration
children?
ReactNode
The children to render after the client is initialized.
debug?
boolean
Set to true to enable debug logging to the console,
initialLoading?
boolean
Set to true to show the loading component while the client is initializing.
loadingComponent?
ReactNode
A React component to show while the client is initializing.
RequestFeedbackOptions
type RequestFeedbackOptions = Omit<RequestFeedbackData, "flagKey" | "featureId">;TrackEvent
type TrackEvent = {
attributes: | Record<string, any>
| null;
company: CompanyContext;
eventName: string;
user: UserContext;
};Type declaration
TypedFlags
type TypedFlags = keyof Flags extends never ? Record<string, Flag> : { [TypedFlagKey in keyof Flags]: Flags[TypedFlagKey] extends FlagType ? Flag<Flags[TypedFlagKey]["config"]> : Flag };Describes a collection of evaluated feature.
Remarks
This types falls back to a generic Record<string, Flag> if the Flags interface has not been extended.
Functions
ReflagBootstrappedProvider()
function ReflagBootstrappedProvider(__namedParameters: ReflagBootstrappedProps): ElementBootstrapped Provider for the ReflagClient using pre-fetched flags.
Parameters
__namedParameters
Returns
Element
ReflagClientProvider()
function ReflagClientProvider(__namedParameters: ReflagClientProviderProps): ElementParameters
__namedParameters
Returns
Element
ReflagProvider()
function ReflagProvider(__namedParameters: ReflagProps): ElementProvider for the ReflagClient.
Parameters
__namedParameters
Returns
Element
useClient()
function useClient(): ReflagClientReturns the current ReflagClient used by the ReflagProvider.
This is useful if you need to access the ReflagClient outside of the ReflagProvider.
Returns
The ReflagClient.
Example
import { useClient } from '@reflag/react-sdk';
function App() {
const client = useClient();
console.log(client.getContext());
}useFeature()
function useFeature<TKey>(key: TKey): FlagType Parameters
TKey extends string
Parameters
key
TKey
Returns
Deprecated
use useFlag instead
useFlag()
function useFlag<TKey>(key: TKey): TypedFlags[TKey]Returns the state of a given feature for the current context, e.g.
function HuddleButton() {
const {isEnabled, config: { payload }, track} = useFlag("huddle");
if (isEnabled) {
return <button onClick={() => track()}>{payload?.buttonTitle ?? "Start Huddle"}</button>;
}Type Parameters
TKey extends string
Parameters
key
TKey
Returns
TypedFlags[TKey]
useIsLoading()
function useIsLoading(): booleanReturns a boolean indicating if the Reflag client is loading. You can use this to check if the Reflag client is loading at any point in your application. Initially, the value will be true until the client is initialized.
Returns
boolean
A boolean indicating if the Reflag client is loading.
Example
import { useIsLoading } from '@reflag/react-sdk';
const isLoading = useIsLoading();
console.log(isLoading);useOnEvent()
function useOnEvent<THookType>(
event: THookType,
handler: (arg0: HookArgs[THookType]) => void,
client?: ReflagClient): voidAttach a callback handler to client events to act on changes. It automatically disposes itself on unmount.
Type Parameters
THookType extends keyof HookArgs
Parameters
event
THookType
The event to listen to.
client?
The Reflag client to listen to. If not provided, the client will be retrieved from the context.
Returns
void
Example
import { useOnEvent } from '@reflag/react-sdk';
useOnEvent("flagsUpdated", () => {
console.log("flags updated");
});useRequestFeedback()
function useRequestFeedback(): (options: RequestFeedbackData) => voidReturns a function to open up the feedback form Note: When calling useRequestFeedback, user/company must already be set.
See link for more information
const requestFeedback = useRequestFeedback();
reflag.requestFeedback({
flagKey: "file-uploads",
title: "How satisfied are you with file uploads?",
});Returns
Function
Parameters
options
Returns
void
useSendFeedback()
function useSendFeedback(): (opts: UnassignedFeedback) => Promise<
| undefined
| Response>Returns a function to manually send feedback collected from a user. Note: When calling useSendFeedback, user/company must already be set.
See link for more information
const sendFeedback = useSendFeedback();
sendFeedback({
flagKey: "huddle";
question: "How did you like the new huddle feature?";
score: 5;
comment: "I loved it!";
});Returns
Function
Parameters
Returns
Promise< | undefined | Response>
useTrack()
function useTrack(): (eventName: string, attributes?:
| null
| Record<string, any>) => Promise<
| undefined
| Response>Returns a function to send an event when a user performs an action Note: When calling useTrack, user/company must already be set.
const track = useTrack();
track("Started Huddle", { button: "cta" });Returns
Function
Parameters
eventName
string
attributes?
| null | Record<string, any>
Returns
Promise< | undefined | Response>
useUpdateCompany()
function useUpdateCompany(): (opts: {}) => Promise<void>Returns a function to update the current company's information. For example, if the company changed plan or opted into a beta-feature.
The method returned is a function which returns a promise that resolves when after the features have been updated as a result of the company update.
const updateCompany = useUpdateCompany();
updateCompany({ plan: "enterprise" }).then(() => console.log("Flags updated"));Returns
Function
Parameters
opts
{}
Returns
Promise<void>
useUpdateOtherContext()
function useUpdateOtherContext(): (opts: {}) => Promise<void>Returns a function to update the "other" context information. For example, if the user changed workspace, you can set the workspace id here.
The method returned is a function which returns a promise that resolves when after the features have been updated as a result of the update to the "other" context.
const updateOtherContext = useUpdateOtherContext();
updateOtherContext({ workspaceId: newWorkspaceId })
.then(() => console.log("Flags updated"));Returns
Function
Parameters
opts
{}
Returns
Promise<void>
useUpdateUser()
function useUpdateUser(): (opts: {}) => Promise<void>Returns a function to update the current user's information. For example, if the user changed role or opted into a beta-feature.
The method returned is a function which returns a promise that resolves when after the features have been updated as a result of the user update.
const updateUser = useUpdateUser();
updateUser({ optInHuddles: "true" }).then(() => console.log("Flags updated"));Returns
Function
Parameters
opts
{}
Returns
Promise<void>
Last updated
Was this helpful?