Welcome to the community and thanks for your detailed question! It seems likely that what you’re experiencing is due to how Streamlit reruns the entire script from top to bottom on any user interaction, including clicking links or updating query parameters. This is Streamlit’s default behavior and, as of now, there is no built-in way to update only a part of the page without a full rerun—partial updates (like in React) aren’t natively supported yet.