@@ -124,7 +124,7 @@ type ProviderContextType = {
124124 } ;
125125 provider : boolean ;
126126 activeFlags : Set < string > ;
127- registerActiveFlag : ( flagKey : string ) => void ;
127+ registerActiveFlag : ( flagKey : string , element ?: HTMLElement ) => void ;
128128 unregisterActiveFlag : ( flagKey : string ) => void ;
129129} ;
130130
@@ -188,6 +188,7 @@ export function ReflagProvider({
188188 const [ featuresLoading , setFlagsLoading ] = useState ( true ) ;
189189 const [ rawFlags , setRawFlags ] = useState < RawFlags > ( { } ) ;
190190 const [ activeFlags , setActiveFlags ] = useState < Set < string > > ( new Set ( ) ) ;
191+ const [ flagElements , setFlagElements ] = useState < Map < string , HTMLElement > > ( new Map ( ) ) ;
191192
192193 const clientRef = useRef < ReflagClient > ( ) ;
193194 const contextKeyRef = useRef < string > ( ) ;
@@ -235,13 +236,23 @@ export function ReflagProvider({
235236 // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run once
236237 } , [ contextKey ] ) ;
237238
238- const registerActiveFlag = useCallback ( ( flagKey : string ) => {
239+ const registerActiveFlag = useCallback ( ( flagKey : string , element ?: HTMLElement ) => {
239240 setActiveFlags ( ( prev ) => {
240241 const newSet = new Set ( prev ) . add ( flagKey ) ;
241242 // Sync with browser SDK client
242243 clientRef . current ?. setActiveFlags ( newSet ) ;
243244 return newSet ;
244245 } ) ;
246+
247+ if ( element ) {
248+ setFlagElements ( ( prev ) => {
249+ const newMap = new Map ( prev ) ;
250+ newMap . set ( flagKey , element ) ;
251+ // Sync with browser SDK client
252+ clientRef . current ?. setFlagElements ( newMap ) ;
253+ return newMap ;
254+ } ) ;
255+ }
245256 } , [ ] ) ;
246257
247258 const unregisterActiveFlag = useCallback ( ( flagKey : string ) => {
@@ -252,6 +263,14 @@ export function ReflagProvider({
252263 clientRef . current ?. setActiveFlags ( newSet ) ;
253264 return newSet ;
254265 } ) ;
266+
267+ setFlagElements ( ( prev ) => {
268+ const newMap = new Map ( prev ) ;
269+ newMap . delete ( flagKey ) ;
270+ // Sync with browser SDK client
271+ clientRef . current ?. setFlagElements ( newMap ) ;
272+ return newMap ;
273+ } ) ;
255274 } , [ ] ) ;
256275
257276 const context : ProviderContextType = {
0 commit comments