Streamlit: Build interactive data apps in Python
Python framework for reactive data web applications.
Learn more about streamlit
import streamlit as st\nst.title('Hello World')\nst.write('My first app')

Script-based architecture
Streamlit apps are written as linear Python scripts rather than requiring a separate frontend framework or client-server architecture. The framework handles re-execution and state management automatically when users interact with widgets.
Live editing workflow
Changes to the Python script are reflected in the browser immediately through file watching and hot reloading. This allows developers to iterate on app logic and UI simultaneously without manual restart cycles.
Integrated deployment platform
Community Cloud provides a managed hosting option specifically designed for Streamlit apps, handling deployment, scaling, and sharing without requiring separate infrastructure configuration or DevOps setup.
import streamlit as st
import pandas as pd
st.title('Sales Dashboard')
st.write('Welcome to the dashboard')
data = pd.DataFrame({
'product': ['A', 'B', 'C'],
'sales': [100, 250, 175]
})
st.dataframe(data)Adds advanced layout controls (width/height) to chart APIs, custom dark theme support, and widget identity now uses `key` parameter for several components.
- –Set `width` and `height` on `st.plotly_chart`, `st.vega_lite_chart`, `st.altair_chart`, `st.pydeck_chart`, `st.map`, and built-in charts for precise sizing.
- –Configure custom dark themes via `theme.base` and light/dark sections; widgets like `st.slider`, `st.radio`, `st.color_picker` now use `key` as primary identity.
Breaking: `key` now primary identity for most input widgets; `st.write` and `st.plotly_chart` drop `**kwargs` support.
- –Update code relying on widget identity by label—`st.checkbox`, `st.toggle`, `st.number_input`, `st.text_input`, `st.text_area`, `st.selectbox`, `st.multiselect`, `st.time_input`, `st.date_input`, and buttons now use `key` as main identity.
- –Replace `**kwargs` in `st.plotly_chart` with explicit `config` dict and remove any `**kwargs` passed to `st.write`.
Release notes do not specify changes; this appears to be a maintenance patch with no documented breaking changes, fixes, or features.
- –Review the full changelog link if you need to understand what changed between 1.49.0 and 1.49.1.
- –No action required unless you encounter issues; consider this a routine patch update.
Related Repositories
Discover similar tools and frameworks used by developers
AI-Trader
LLM agent benchmarking framework for autonomous market trading.
paperless-ngx
Self-hosted OCR document archive with ML classification.
presentation-ai
AI-powered slide generator with multi-model integration and themes.
dinov2
PyTorch vision transformers pretrained on 142M unlabeled images.
whisper.cpp
Lightweight, cross-platform speech recognition engine delivering real-time transcription with minimal dependencies and optimized inference performance.