in packages/react/src/index.tsx [103:128]
export function useEvaluateFlag<T extends Value>(
path: string,
defaultValue: T,
confidence?: Confidence,
): FlagEvaluation<T>;
export function useEvaluateFlag<T extends Value>(
path: string,
defaultValue: T,
// eslint-disable-next-line react-hooks/rules-of-hooks
confidence = useConfidence(),
): FlagEvaluation<T> {
const evaluation = confidence.evaluateFlag(path, defaultValue);
const [, setState] = useState(() => Value.serialize(confidence.getContext()));
useEffect(() => {
return confidence.subscribe(() => {
setState(Value.serialize(confidence.getContext()));
});
});
if ('then' in evaluation) {
if (isServer) {
throw Object.assign(new Error('Flags are not fetched in SSR'), { digest: 'BAILOUT_TO_CLIENT_SIDE_RENDERING' });
}
throw evaluation;
}
return evaluation;
}