Object literals in React hooks create new references on every render, causing unnecessary re-computations:
// ❌ Bad: New object every render
useObjectVariationDetails('flag', { timeout: 5000, retries: 3 });- Unnecessary API calls to BKT client
- Performance degradation
- Memory pressure
Fixed useObjectVariationDetails with deep equality memoization:
// Deep equality check for defaultValue
const memoizedDefaultValue = useMemo(() => defaultValue, [
JSON.stringify(defaultValue)
]);// ✅ Good: Stable reference
const DEFAULT_CONFIG = { timeout: 5000, retries: 3 };
useObjectVariationDetails('flag', DEFAULT_CONFIG);
// ✅ Good: Memoized
const config = useMemo(() => ({ timeout: 5000, retries: 3 }), []);
useObjectVariationDetails('flag', config);Added memoization tests to verify:
- Same object content doesn't trigger multiple client calls
- Different content properly triggers re-evaluation
- Stable references returned for identical content