Hey Streamlit community!
I’m excited to share a new component I’ve been working on that solves a problem I personally ran into: resizable columns in Streamlit.
What it does:
- Drop-in replacement for
st.columns
with the same API - Adds draggable resize handles between columns
- Column widths persist across app reruns
- Supports all existing
st.columns
parameters (gap, alignment, border, etc.)
Why I built it:
I was looking for a way to create resizable columns in Streamlit but couldn’t find any existing extensions that provided this functionality. Since I needed it for my own projects, I decided to build it myself and share it with the community. You know how it goes - if you can’t find it on Stack Overflow, you become the Stack Overflow answer .
Watch those columns dance!
Quick example:
import streamlit as st
from streamlit_adjustable_columns import adjustable_columns
# Works exactly like st.columns - but with resize handles!
col1, col2, col3 = adjustable_columns(3, labels=["📊 Charts", "📋 Data", "⚙️ Settings"])
with col1:
st.metric("Sales", "$1,234", "12%")
col2.write("This column can be resized!")
col3.button("Settings")
No more “my columns are too wide/narrow” complaints from users! They can fix it themselves now.
Installation:
pip install streamlit-adjustable-columns
One pip install away from column freedom!
The component is MIT licensed and available on PyPI. I’d love to hear your feedback and see what you build with it!
GitHub: GitHub - danieljannai/streamlit-adjustable-columns: A Streamlit custom component for creating columns with adjustable widths using draggable resize handles.
PyPI: Client Challenge
Has anyone else been wishing for resizable columns in Streamlit? What use cases do you have in mind?
P.S. If you’re still using fixed-width columns in 2024, don’t worry - I won’t judge. But maybe it’s time to let your users have some control?