Session_state seems to be dropping some data

You can’t pass a widget’s value directly in a callback, but the widget’s value can be accessed within the callback using its key with a call to Session State.

You can either have a callback which hardcodes the key it needs to copy from, or you can pass the key itself into a callback that you use on multiple widgets. I do something like that here.