text: Title: New st.query_params doesn't persist state in URL after page refresh while deprecated st.experimental_set_query_params does
  Body: ### Checklist
  
  - [x] I have searched the [existing issues](https://github.com/streamlit/streamlit/issues) for similar issues.
  - [x] I added a very descriptive title to this issue.
  - [x] I have provided sufficient information below to help reproduce this issue.
  
  ### Summary
  
  The new `st.query_params` API does not maintain state in URL parameters after page refresh, while the deprecated `st.experimental_get/set_query_params` methods work correctly.
  
  This is blocking migration from experimental to stable API for applications that rely on URL parameters for state management.
  
  
  ### Reproducible Code Example
  
  ```Python
  ###########################
  # login_experimental_api.py
  ###########################
  import streamlit as st
  
  st.set_page_config(page_title="Login State Test - Experimental API")
  
  # Initialize login state
  if "is_logged" not in st.session_state:
      query_params = st.experimental_get_query_params()
      st.session_state.is_logged = query_params.get("logged_in", ["False"])[0] == "True"
  
  # Display current state
  st.write("Current login state:", st.session_state.is_logged)
  st.write("Current query parameters:", st.experimental_get_query_params())
  
  if st.button("Login"):
      st.session_state.is_logged = True
      st.experimental_set_query_params(logged_in="True")
      st.rerun()
  
  st.markdown("---")
  st.markdown("""
  ### How to test:
  1. Click "Login" - you'll see the state change to logged in
  2. Note the URL parameters change
  3. Refresh the page - the state persists
  4. Check URL parameters - they are maintained
  
  This demonstrates that the deprecated `st.experimental_set_query_params` 
  maintains state in URL parameters after page refresh.
  """)
  
  
  ##################
  # login_new_api.py
  ##################
  import streamlit as st
  
  st.set_page_config(page_title="Login State Test - New API")
  
  # Initialize login state
  if "is_logged" not in st.session_state:
      st.session_state.is_logged = st.query_params.get("logged_in", ["False"])[0] == "True"
  
  # Display current state
  st.write("Current login state:", st.session_state.is_logged)
  st.write("Current query parameters:", dict(st.query_params))
  
  if st.button("Login"):
      st.session_state.is_logged = True
      st.query_params.logged_in = "True"
      st.rerun()
  
  st.markdown("---")
  st.markdown("""
  ### How to test:
  1. Click "Login" - you'll see the state change to logged in
  2. Note the URL parameters change
  3. Refresh the page - the state is lost
  4. Check URL parameters - they are also lost
  
  This demonstrates that the new recommended `st.query_params` API 
  doesn't maintain state in URL parameters after page refresh.
  """)
  ```
  
  ### Steps To Reproduce
  
  1. Run the attached minimal example files
  2. Click "Login" - state will persist after refresh in `login_experimental_api.py`
  3. Click "Login" - state will be lost after refresh in `login_new_api.py`
  
  ### Expected Behavior
  
  `streamlit run login_new_api.py` should keep the session. 
  
  ### Current Behavior
  
  Using old API Streamlit page shows yellow alerts:
  ```
  Please replace st.experimental_get_query_params with st.query_params.
  
  st.experimental_get_query_params will be removed after 2024-04-11.
  
  Refer to our [docs page](https://docs.streamlit.io/develop/api-reference/caching-and-state/st.query_params) for more information.
  ```
  
  
  Whilst terminal throws deprecation warnings with the same content:
  ```
  $ streamlit run login_experimental_api.py
  
    You can now view your Streamlit app in your browser.
  
    Local URL: http://localhost:8501
    Network URL: http://10.0.100.20:8501
  
    For better performance, install the Watchdog module:
  
    $ xcode-select --install
    $ pip install watchdog
              
  2025-02-15 01:25:14.734 Please replace `st.experimental_get_query_params` with `st.query_params`.
  
  `st.experimental_get_query_params` will be removed after 2024-04-11.
  
  Refer to our [docs page](https://docs.streamlit.io/develop/api-reference/caching-and-state/st.query_params) for more information.
  2025-02-15 01:25:14.734 Please replace `st.experimental_get_query_params` with `st.query_params`.
  
  `st.experimental_get_query_params` will be removed after 2024-04-11.
  
  Refer to our [docs page](https://docs.streamlit.io/develop/api-reference/caching-and-state/st.query_params) for more information.
  
  
  
  ```
  
  ### Is this a regression?
  
  - [x] Yes, this used to work in a previous version.
  
  ### Debug info
  
  - Streamlit version: `Streamlit, version 1.39.0`
  - Python version: `Python 3.12.9`
  - Operating System: `macOS 15.2`
  - Browser: Brave Browser, Safari, Google Chrome
  ```
  ❯ streamlit version
  Streamlit, version 1.39.0
  ❯ python --version
  Python 3.12.9
  ❯ sw_vers
  ProductName:            macOS
  ProductVersion:         15.2
  BuildVersion:           24C101
  ```
  
  ### Additional Information
  
  _No response_