Steps To Reproduce
- schedule two updates using "default priority" scope (eg. from within setTimeout)
- let one of the updates be handled through
useSyncExternalStore and let the other one be handled through regular setState
Link to code example:
https://codesandbox.io/s/interesting-chatterjee-9ed8hj?file=/src/App.js (without unstable_batchedUpdates)
https://codesandbox.io/s/prod-glitter-51vwm1?file=/src/App.js (with unstable_batchedUpdates)
The current behavior
The useSyncExternalStore update gets flushed and committed before the other one has a chance to be committed to the screen. This doesn't allow me to read the updated state of the committed DOM of the children components from within the Parent's effect
The expected behavior
I would expect to be able to "join" this sync update of the useSyncExternalStore somehow. Ideally, I wouldn't have to wrap both with unstable_batchedUpdates. It would be cool if I could just schedule a single update with the same priority. If I understand correctly multiple updates coming from different useSyncExternalStore updates can be batched together (it doesn't work like flushSync, so it doesn't literally immediately flush the scheduled update) - and I would just like to hop on that train with my second update.
I could live with the solution based on unstable_batchedUpdates but that doesn't seem to work either.
Steps To Reproduce
useSyncExternalStoreand let the other one be handled through regularsetStateLink to code example:
https://codesandbox.io/s/interesting-chatterjee-9ed8hj?file=/src/App.js (without
unstable_batchedUpdates)https://codesandbox.io/s/prod-glitter-51vwm1?file=/src/App.js (with
unstable_batchedUpdates)The current behavior
The
useSyncExternalStoreupdate gets flushed and committed before the other one has a chance to be committed to the screen. This doesn't allow me to read the updated state of the committed DOM of the children components from within the Parent's effectThe expected behavior
I would expect to be able to "join" this sync update of the
useSyncExternalStoresomehow. Ideally, I wouldn't have to wrap both withunstable_batchedUpdates. It would be cool if I could just schedule a single update with the same priority. If I understand correctly multiple updates coming from differentuseSyncExternalStoreupdates can be batched together (it doesn't work likeflushSync, so it doesn't literally immediately flush the scheduled update) - and I would just like to hop on that train with my second update.I could live with the solution based on
unstable_batchedUpdatesbut that doesn't seem to work either.