fix: cleanup event-emitter subscriptions in provider hooks#392
Open
fix: cleanup event-emitter subscriptions in provider hooks#392
Conversation
talissoncosta
approved these changes
Apr 20, 2026
Contributor
talissoncosta
left a comment
There was a problem hiding this comment.
Looks good, just one question. Not blocking
| useEffect(() => { | ||
| if (!flagsmith) return | ||
| setRenderRef(getRenderKey(flagsmith, flags, traits)) | ||
| const unsubscribe = events.on('event', () => { |
Contributor
There was a problem hiding this comment.
Quick question: was the switch from events.once => events.on intentional?
Just want to make sure you're aware it's a behavior change: in the old code each render re-registered a once listener (because useRef's arg evaluates every render), so the hook reacted on every emit incidentally.
With events.on, it's a single persistent subscription. Same net behavior for consumers as far as I can tell, but wanted to flag it in case you hadn't spotted it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thanks for submitting a PR! Please check the boxes below:
docs/if required so people know about the feature.Changes
Closes #390
Hooks were rendering at render time instead than in an effect and the cleanup paths did not remove all registered listeners
useFlagsmithLoadinganduseFlags: subscribe inside useEffect with emitter.on's returned unsubscribe as cleanup. Removes render-time events.on and multi subscriptionHow did you test this code?
main(pre-fix)useFlagsmithLoading, one fromuseFlags)fix/react-subscription-leak