Multipage app not running st.set_page_config when going directly to subpage

Hi.
When I start the app and go directly to

http://localhost:8051/subpage

the wide layout that is set in st.set_page_config is not applied. If I then go to the root page and back to subpage it has updated with the wide layout.

Is there a way to make st.set_page_config run on subpages when that is the landing page?

1 Like

Not sure if streamlit updated or if I had the st.set_page_config not on line 2 before, but now it works setting st.set_page_config at line 2 after importing streamlit.

1 Like

I ran into exactly this problem using streamlit 1.12.2. Is there a systematic solution to this problem?

I’ll try to put together a minimal case to reproduce the bug and follow up.

Unfortunately, each page is evaluated and run as a separate app, other than the navigation sidebar, so running set_page_config doesn’t automatically apply unless you run it on the subpage. However, as you can see, it does β€œstick”, so that if you set it on one page, it continues on the following pages unless you set it to a different value. We are looking into ideas for making improvements to multipage apps to include shared functionality for cases exactly like this.

For now, one solution is to make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.

Make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.

Thanks @blackary ! Here’s a hacky approach that worked just fine for my purposes, in case someone else finds it helpful:

import streamlit

def set_streamlit_page_config_once():
    try:
        streamlit.set_page_config(layout="wide")
    except streamlit.errors.StreamlitAPIException as e:
        if "can only be called once per app" in e.__str__():
            # ignore this error
            return
        raise e

Then I import and call set_streamlit_page_config_once() at the top of each files in pages/

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.