To your point 5, you may be interested in the discussion about changing keyed widget behavior. Session state ālosingā parameters is tied to the widget cleanup process and Iām guessing thatās what you came across. Namely, when a widget is not rendered on the screen, itās data gets deleted (including its value in session state). This is entirely expected, and you mentioned a solution that āinterruptsā the cleanup process thereby keeping the keys. (My usual preferred solution is to treat all data assigned to widget keys as transient and have separate keys for keeping data between pages. This also keeps the solution on the page with the affected key and doesnāt require a copy-paste script at the top of every page in the app. )