Since about 23:48 UTC on Nov 3, 2026, several of my Community Cloud apps load only part of the way and then spin indefinitely. One app on the same account still works perfectly. I’ve ruled out my app code as far as I can and would appreciate someone looking at the hosting side.
Apps
- https://snowanalytics-people2projects.streamlit.app (brand-new deploy tonight, same repo as below)
- https://snow-analytics-demo-skillscheduler.streamlit.app (deleted and redeployed tonight)
- https://snow-analytics-demo-jewelry.streamlit.app (also intermittent)
- https://snow-analytics-demo-scheduler.streamlit.app (works reliably; for comparison)
Environment (current)
- Python 3.14.10 (Cloud default; I chose 3.12 in Advanced settings but the log still shows 3.14.10)
streamlit==1.56.0(Tornado),pandas==3.1.0,extra-streamlit-components==0.1.80,reportlab==5.1.0- Private GitHub repo; the build log is clean (dependencies install, no errors)
What happens The page stays on the spinner. Inside the app iframe (/~/+/), document.readyState stays "interactive", and several of Streamlit’s own frontend files under /~/+/static/js/ never finish downloading (for example ErrorElement.*.js, useRequiredContext.*.js, emotion-is-prop-valid.*.js). Earlier, with other versions, the result was a TypeError: Failed to fetch dynamically imported module .../~/+/static/js/TextInput.*.js on the login page, or Markdown with unsafe_allow_html=True rendering as raw text (presumably because rehype-raw didn’t load).
Evidence that it isn’t the app code
-
The same static file alternately hangs and succeeds. From the browser on the brand-new app, fetching three of Streamlit’s own static files twice each in a row (10-second timeout):
ErrorElement.xCwUz6pJ.js HUNG 10013msuseRequiredContext.C6MAk7EW.js HUNG 10002mslib.B_Qh5M3c.js 200 112msErrorElement.xCwUz6pJ.js 200 110msuseRequiredContext.C6MAk7EW.js 200 113mslib.B_Qh5M3c.js 200 110msThese are static files served before any app script runs, and the app had a single visitor.
-
/_stcore/healthdrops requests on the affected apps but not on the working one.curl -4 -m 8, 12–15 requests each, same network, same minute (000= no response within 8 s):jewelry: 200 200 200 200 000 000 200 200 000 200 200 200 200 200 200skill: 200 000 200 200 200 200 200 200 200 200 200 200 200 200 200pest: 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200A static JS file on the skill app with plain
curlfailed 6 of 12 at the worst point. A public CDN file fetched from the same machine at the same time succeeded 8 of 8. -
The app runs correctly locally on the identical versions (Python 3.14, Streamlit 1.56.0): login, multipage navigation,
st.dialogand the data editor all work, with no errors in the server log. -
A fresh deploy under a new subdomain behaves the same, so it doesn’t seem tied to old sessions or one app’s state. Reboots helped only briefly.
-
streamlitstatus.comshowed “All Systems Operational” throughout.
Possibly related library issues I hit while troubleshooting (reporting in case they’re useful):
- Streamlit 1.58.0 with starlette 1.10.0 (what an unpinned rebuild installs): the log repeatedly shows
RuntimeError: Expected ASGI message 'http.response.start', but got 'http.response.body'fromstarlette_static_routes→starlette_gzip_middleware.py(_MediaAwareGZipResponder.send_with_compression). On Cloud, static paths are under/~/+/static/, so_should_bypass_static_gzipdoesn’t match them and they go through the gzip subclass. That subclass appears to assume pre-1.5 starlette behavior. Pinningstarlette==1.4.1removed those errors locally. - Streamlit 1.66.x binds the IPv6 wildcard
::by default (Uvicorn server started on :::8501). On Cloud those apps never loaded at all; the same app on 1.58 bound0.0.0.0and was reachable.
What I’ve tried: pinning Streamlit to 1.58.0, 1.66.0 (with server.address = "0.0.0.0") and 1.56.0; pinning starlette; rebooting; deleting and redeploying; deploying a second copy under a new subdomain; testing in incognito.
Is there a known problem with static file delivery on Community Cloud right now, or anything else I should try? Happy to provide full logs.