react-client-sdk icon indicating copy to clipboard operation
react-client-sdk copied to clipboard

LDProvider should use the latest flags when it is mounted

Open bufferings opened this issue 1 year ago • 1 comments

Describe the bug

The LDProvider returned by asyncWithLDProvider keeps using the initial flags on mount even though the flags are updated.

To reproduce

  1. Call asyncWithLDProvider and it gets initial flags for example {}
  2. Mount the LDProvider and call identify to update the flag to something like {flag1: { value: true}}
  3. The ldClient keeps the latest flags {flag1: { value: true}} on memory. But the LDProvider closure keeps the initial flags {} 4. When we re-mount the LDProvider for some reason, it uses the initial flags for the initial value of the context.
  4. Call the identify again to get the latest flags. The {flag1: { value: true}} is fetched, but the ldClient says "The flags are the same as the current one, so I don't emit the change event".
  5. And the provider keeps the {} flags as its context.

Expected behavior

LDProvider should use the latest flags, which are the same as the ldClient keeps.

Additional context

I will send a pull request to explain the issue :)

bufferings avatar Feb 14 '24 11:02 bufferings

We are investigating this internally as #234809.

yusinto avatar Mar 14 '24 21:03 yusinto