Skip to content

Commit 7025ddb

Browse files
committed
fix: Fix a race condition when handling multiple flag updates.
1 parent 28eab3e commit 7025ddb

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/provider.tsx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,22 @@ class LDProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
5757
ldClient.on('change', (changes: LDFlagChangeset) => {
5858
const reactOptions = this.getReactOptions();
5959
const updates = getFlattenedFlagsFromChangeset(changes, targetFlags);
60-
const unproxiedFlags = {
61-
...this.state.unproxiedFlags,
62-
...updates,
63-
};
60+
6461
if (Object.keys(updates).length > 0) {
65-
this.setState((prevState) => ({
66-
...prevState,
67-
unproxiedFlags,
68-
...getFlagsProxy(ldClient, unproxiedFlags, reactOptions, targetFlags),
69-
}));
62+
this.setState((prevState: ProviderState) => {
63+
const unproxiedFlags = {
64+
...prevState.unproxiedFlags,
65+
...updates,
66+
};
67+
return {
68+
...prevState,
69+
unproxiedFlags: {
70+
...prevState.unproxiedFlags,
71+
...updates,
72+
},
73+
...getFlagsProxy(ldClient, unproxiedFlags, reactOptions, targetFlags),
74+
}
75+
});
7076
}
7177
});
7278
};

0 commit comments

Comments
 (0)