-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: provider initialization #169
Conversation
@@ -37,13 +39,13 @@ const FlagProvider: React.FC<React.PropsWithChildren<IFlagProvider>> = ({ | |||
const [flagsReady, setFlagsReady] = React.useState( | |||
Boolean( | |||
unleashClient | |||
? customConfig?.bootstrap && customConfig?.bootstrapOverride !== false | |||
? (customConfig?.bootstrap && customConfig?.bootstrapOverride !== false) || unleashClient.isReady?.() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this the only significant line here? Why do we need these other changes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's about adding the ability to pass initialized client. Error state is also needed to make sure state kept in React SDK is matching the one from initialized client
client.current.off('recovered', clearErrorCallback) | ||
client.current.stop(); | ||
client.current.off('recovered', clearErrorCallback); | ||
if (stopClient) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need a stopClient property?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you're passing an initialized client, you will probably also not want it to stop when React part of the app stops - in microfrontends for example
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you will probably also not want it to stop when React part of the app stops - in microfrontends for example
(Sorry for jumping to the discussion) This is exactly what I was trying to achieve before creating the referenced issue - so I can say that this is an actual use case for sure ➕
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense. Thank you for clarifying.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a bug where the flagsReady status, returned from the useFlagsStatus hook, remains false even when an already started Unleash client is passed to the Unleash flag provider. This occurred despite the client being initialized and ready.
Closes #168
About the changes