Since the release of Streamlit Components, we’ve been thrilled to read the many new widgets and integrations to external librairies you have suggested and published! There’s so many ideas around, we wanted to reference them all in one place, and make it easy for you to contribute to the growing Streamlit Components ecosystem!
Say hello to the first Streamlit community-driven wiki post, which you can freely edit to help track down components ideas or currently in development.
How can I contribute?
Contributing to this wiki is easy and open to anyone (at least if you hung on the forum enough to get to Trust Level 1). It’s a click away from the Edit button on the bottom left of the post!
- If you have an idea for a Streamlit Component, you can create a new post for it in the forum and then reference it in this wiki
- Want to try implementing a component, but you need some inspiration? Browse through the ideas, settle on one then move it into the
In Development
section.- It’s also a good way to find projects currently in development you can contribute to!
- When the component is ready for general use (even if there’s still features to add and bugs to track down), drop it in the
Published
section so other users find out about it and test it!- Hopefully we’re able to have them appear in the featured gallery too .
- Are you using a different combination of technologies to develop your components and want to share it with the community? Share your template under the
Component Templates
section or check other’s workflows. - If you’re hesitant in editing the wiki, you can put a comment and we’ll add it into the page
Feel free to add your own ideas for structuring it!
Published
-
Streamlit_sql: Quick and easy CRUD interface for sqlalchemy. (Post, GitHub, PyPI, Docs)
-
Streamlit-STL: Display 3D models from STL files in a simple way! (Post, GitHub, PyPI, Demo)
-
Streamlit Forna Container: Display an RNA secondary structure using a force directed graph layout. (Post, GitHub, PyPI, Demo)
-
Streamlit Multimodal Chat Input: This is a custom component that allows you to upload images and files through a chat interface. (Post, GitHub, PyPI )
-
Streamlit RxDB Dataframe: Custom
streamlit
component connecting local browserindexedDB
database asRxDB
collection asdataframe
(Post, GitHub, PyPI ) -
Streamlit Chunk File Uploader: This is a custom component that allows you to split files and send them from your browser to Streamlit (Post, GitHub, PyPI )
-
Streamlit Ldap Authenticator: A streamllit component to peform authorization grant using active directory (Post ,,)
-
Streamlit RSA Authenticator UI: A streamlit component that encrypt user information including password at the client browser before transmit to server using RSA algorithm. (Post, , )
-
Streamlit Cookies Controller: A streamlit component to get, set and remove client browser cookie for the site. (Post, , )
-
Streamlit OAuth: A streamlit component to perform general OAuth authorization grant flow (Post, GitHub, PyPI, Examples)
-
Streamlit WordCloud - A simple component to display a WordCloud using D3JS. Enhance your Streamlit apps with dynamic word clouds (GitHub, PyPI)
-
Streamlit Monaco - Integrate the Monaco editor (powered by Visual Studio Code) into Streamlit for an enhanced code editing experience (Post, GitHub, PyPI, Demo App)
-
Streamlit Pannellum - A Streamlit component for displaying interactive panorama images (Post, PyPI)
-
Streamlit Dynamic Filters: A Streamlit component giving you dynamic multiselect filters. (PyPI, GitHub, Demo App)
-
Supabase Connector - A Streamlit connection component to connect Streamlit to Supabase Storage, Database, and Auth (Post, GitHub, PyPI, Example App)
-
Streamlit Navigation Bar - A component that allows you to place a navigation bar in your Streamlit app (Post, GitHub, PyPI, Example App).
-
Streamlit Theme - A component that returns the active theme of the Streamlit app (Post, GitHub, PyPI, Example App)
-
Streamlit Overlay - Simplify adding overlays to images (Post, GitHub, PyPI)
-
Streamlit Calendar – Component to show calendar view using
FullCalendar
with support for Streamlit light/dark theme and simpledateClick
/eventClick
callback (Post, GitHub, PyPI, Example App) -
Streamlit Login Form – Component to Supabase connected user login forms for Streamlit apps (Post, GitHub, PyPI, Example App)
-
Streamlit Image Annotation – Component for image annotation (Post, GitHub, PyPI, Example App)
-
Streamlit Star Rating – Component to let a user give a star rating (Post, GitHub, PyPI, Example App)
-
Streamlit Tree Selector – multi-select component with nested options (Post, GitHub, PyPI, Example App)
-
streamlit-image-coordinates – return the coordinates of clicks on an image (Post, GitHub, PyPI, Example App)
-
st-pages – set up multipage apps without fiddling with filenames (Post, GitHub, PyPI, Example App)
-
NLU (GitHub)
-
HiPlot (GitHub)
-
spaCy (GitHub)
-
Drawable canvas (GitHub)
-
Leaflet reactless template to return coords on map click (Post, GitHub)
-
STqdm – tqdm-like progress bar for streamlit (Post, GitHub, PyPi)
-
Streamlit-tags – a new way to do add tags and enter keywords (Post, GitHub,PyPi)
-
Google Charts (GitHub)
-
Extra Streamlit Components – Includes browser cookies management (GitHub, PyPi)
-
Server-wide state objects shared across sessions (Post, GitHub)
-
Plost – a deceptively simple plotting component. (Post, GitHub, Demo+Docs)
-
Hydralit Components – Responsive navbar and more to come (Post, GitHub, PyPi, Demo)
-
Pyvis – stvis component for rendering pyvis interactive graphs (Post, GitHub)
-
st_btn_select – button based selection and minimalist navbar (Post, GitHub)
-
Streamlit-Authenticator – a secure authentication module to validate user credentials in a Streamlit application. (Post, GitHub, PyPi)
-
ITables – DataFrames as Interactive DataTables (Post, GitHub, share)
-
Streamlit SHAP – provides a wrapper to display SHAP plots in Streamlit (Post, GitHub, PyPi)
-
Barfi – Flow Based Programming component for Streamlit (Post, GitHub, Docs, PyPi)
-
Streamlit components for FirstLanguage NLP API (Post, GitHub , Demo, PyPi, WebSite)
-
streamlit-d3graph – a simple component to display
d3graph
network graphs in Streamlit apps (Post, GitHub, PyPi) -
Sidebar tabs for on-hover-custom-navigation bar (Post, GitHub, PyPi)
-
Streamlit Elements – Build draggable and resizable dashboards with Material UI, Nivo charts, Monaco (VSCode), and more (Post, GitHub, PyPi)
-
Streamlit Audio Recorder – enables recording audio from the client’s mic in apps that are deployed to the web. (via browser Media-API, REACT-based) (GitHub)
-
Streamlit custom notification component with the function to close it (Post, GitHub, PyPi)
-
Prettier notification box, sibling of this: (Post, GitHub, PyPi).
-
streamlit-image-zoom: Presents a Python Streamlit component that wraps HTML, CSS, and JS code, enabling the creation of an interactive image zoom application. (GitHub, Demo)
-
Streamlit pagination – add pages to the bottom of your app to navigate data (Post, GitHub, PyPi)
-
Streamlit User Authentication – streamlit-login-auth-ui – Connect your streamlit application to a pre-built and secure Login/ Sign-Up page (Post, GitHub, PyPi)
-
Login authentication (Oauth) and localStorage access in Streamlit, synchronous communication – streamlit-ws-localstorage – Simple way of providing Oauth logins like Linkedin, Google etc without having to specify redirect urls: (Post, GitHub, PyPi)
-
Text input that returns as you type (Post, GitHub, Demo, PyPi)
-
streamlit-image-select – An image select component for Streamlit (Post, GitHub, Demo, PyPi)
-
streamlit-js-eval - Evaluate arbitrary JavaScript expressions and capture the result in Streamlit. (Post, PyPI, GitHub, Demo)
-
streamlit-ext - sync widget’s value with url & download button which won’t cause rerun and some useful functions (Post, GitHub, PyPi)
-
stpyvista - Show 3D visualizations from PyVista in Streamlit (Post, GitHub, PyPI, Demos).
-
streamlit-datalist - Like Streamlit’s selectboxes but accepts custom inputs! (Post, GitHub, PyPi)
-
streamlit-keycloak: User authentication and single sign-on in your app using Keycloak (Post, GitHub, PyPi)
-
streamlit-back-camera-input: Camera input with back camera as default (Post, GitHub, PyPi)
-
streamlit-qrcode-scanner: QRCode & Barcode scanner base html5qrcode (Post, GitHub, PyPi)
-
streamlit-tesseract-scanner: OCR scanner use tesseract (Post, GitHub, PyPi)
-
ML user feedback collection with streamlit (Post, GitHub, PyPi)
-
streamlit-qs: Effortless permalinks and auto-APIs for your application (Post, GitHub, PyPi, Demo)
-
streamlit-antd-components: A streamlit component to display Antd-Design widgets (Post, GitHub, PyPi, Demo)
-
pygwalker: It can turning your datas into a no-code user interface for visual exploration (Post, Github, Pypi, Demo)
-
Streamlit Supabase Connector: A Streamlit connection component to connect Streamlit to Supabase Storage and Database (Post , GitHub, Example App)
-
Streamlit Slides: A streamlit component to present your streamlit scripts as slides with prev/next arrows (Pypi, GitHub, Example App).
-
Streamlit PDF Viewer: A streamlit component to render and decorate PDF documents. (Pypi, GitHub, Example App).
Component Templates
- Svelte (Post, GitHub)
- Vue.js + Vite (Post, GitHub)
- Vue.js + Webpack (Post, GitHub)
- Streamlit Next.js Component, Auth0 Authentication (latest tutorial), (deprecated: Post, deprecated: doc, deprecated: GitHub)
- Simple Authentication for Streamlit Apps (Post, GitHub)
- Hydralit for Multi-Page Streamlit Apps (Post, GitHub, PyPi, demo)
- React with hooks and function-based components (Post, GitHub)
- Create components with pure JS (no framework) (Post)
- Cookecutter components for simple JS components (Post, GitHub)
Tutorials
- Official Youtube tutorial part 1 - part 2
- Youtube tutorial by James Briggs part 1 setup - part 2 MUI Card - part 3 publishing
- Youtube tutorial by @andfanilo link
- Scatterplot selection with Plotly.js link
- Full community tutorial by @andfanilo link
- Introduction to components for Auth0 by @asehmi part 1
- Integrating Elm components in Streamlit by @kantuni link
- Deep dive in creating Streamlit-WebRTC by @whitphx link
- Creating a simple bidrectional component by @blackary link
In development
- Quill editor (Post, GitHub)
- Cytoscape.js (Post) - looking for users
- Label Studio frontend for data annotation (Post, GitHub)
- JSME (Post)
- TensorBoard (GitHub)
- Notifications (Post, GitHub)
- Streamlit-sync: sync widgets between sessions and persist on disk (Post, GitHub, share)
- link_button - A simple way to link a button to a URL. (Post, GitHub, Demo)
- st_radial - A custom component to show metrics. (Post, GitHub, Demo)
- st-card - A component for displaying KPI metrics in your apps(Post, GitHub, Demo)
- streamlit_apex_charts - A wrapper over ApexCharts.js(Post,GitHub,Demo)
- Charticulator (Post, GitHub) - Component to render charticulator templates with streamlit
- Streamlit-Survey (Post, Github) - Survey components for Streamlit Apps
Ideas in discussion
- Material UI React Table (Post)
- WYSIWYG HTML editor (Post)
- Selection in canvas (Post)
- 3D mesh visualizer with VTK (Post)
- Ipywidgets (Post)
- Network visualization : Networkx / Pyvis (post Pyvis)
- TensorflowJS (Post)
- Tableau Software / Power BI embed (issue)
- Vega (GitHub)
- ThreeJS (Post)
- Display PDF (issue)
- Streamint text_input (Post)
- Chart.js (issue)
- HighCharts (issue)
- jsroot (issue)
- RadioSets (Post)