Skip to main content

AG Grid component for Streamlit — interactive tables, editing, filtering & more.

Project description

streamlit-aggrid-v2

PyPI version License: MIT Python 3.10+ Streamlit

Open in Streamlit

AG Grid component for Streamlit - interactive tables, editing, filtering, sorting, grouping & more.

Built on AG Grid v34.3.1 with Streamlit Custom Components v2.

Acknowledgments

This project is a continuation of streamlit-aggrid, originally created by Pablo Fonseca. Huge thanks to Pablo for building and maintaining the first version that the Streamlit community relied on for years.

Install

pip install streamlit-aggrid-v2

Note: The Python import stays st_aggrid - only the pip install name changed.

Quick Start

from st_aggrid import AgGrid
import pandas as pd

df = pd.read_csv(
    "https://raw.githubusercontent.com/fivethirtyeight/data/master/airline-safety/airline-safety.csv"
)
AgGrid(df)
streamlit run your_app.py

Why v2?

The original streamlit-aggrid is built on Streamlit's legacy iframe-based component model (CCv1). Migrating to CCv2 is a significant architectural change - this rewrite does that while keeping the same Python API.

streamlit-aggrid (original) streamlit-aggrid-v2
Component model CCv1 - iframe + postMessage CCv2 - direct DOM rendering
AG Grid version v31 v34.3.1
Themes 3 themes, no dark mode for quartz 4 themes, automatic dark/light detection
Build toolchain webpack / CRA Vite + ESM
React React 17 React 18
Known bugs 25 open issues in codebase All 25 fixed
Event listener cleanup Leaks on unmount Proper cleanup via componentWillUnmount
State management Direct this.state.api mutation gridApiRef pattern (React-safe)
Style/script injection Duplicates on re-render Deduplicated
Mutable defaults grid_response={}, update_on=[] Fixed with None + inline init
Path handling Wrong variable, missing method Corrected
Custom themes Not supported StAggridTheme with color schemes, icon sets, params
Maintenance Inactive since 2023 Active, semantic versioning, CI/CD
Python API from st_aggrid import AgGrid Same - fully backward compatible

Migration: Change pip install streamlit-aggrid to pip install streamlit-aggrid-v2. No code changes needed.

Features

  • No iframes - AG Grid renders directly in the Streamlit DOM via CCv2, eliminating postMessage overhead.
  • Theming - All four AG Grid themes (quartz, alpine, balham, material) with automatic dark/light mode detection and automatic font matching to Streamlit's theme (--st-font). Custom themes via StAggridTheme with color schemes, icon sets, and param overrides.
  • Editing - Cell editing with singleClickEdit, value parsers, and change detection.
  • Row selection - Single, multiple, and checkbox selection with pre-selected rows.
  • Filtering & sorting - Column filters, floating filters, quick search, and multi-column sort.
  • Column configuration - Pinning, resizing, reordering, auto-sizing, and column groups via GridOptionsBuilder.
  • Cell renderers - Custom cell rendering with JsCode (stars, badges, progress bars, buttons).
  • Row styling - Conditional row/cell styling via getRowStyle, rowClassRules, and cellStyle.
  • Enterprise features - Row grouping, pivot mode, status bar, side bar, Excel export, cell selection, sparklines (requires AG Grid license).
  • Data return modes - AS_INPUT, FILTERED, FILTERED_AND_SORTED, MINIMAL, and CUSTOM via the collector pattern.
  • Modern build - Vite + ESM replaces the legacy webpack/CRA toolchain.
  • Bug fixes - 25 bugs fixed from the original codebase.
  • Backward compatible - Existing AgGrid(), GridOptionsBuilder, JsCode code works with just a pip install change.

API Overview

from st_aggrid import AgGrid, GridOptionsBuilder, JsCode
from st_aggrid import GridUpdateMode, DataReturnMode, ColumnsAutoSizeMode

# Build grid options from a DataFrame
gb = GridOptionsBuilder.from_dataframe(df)
gb.configure_pagination(paginationAutoPageSize=True)
gb.configure_selection("multiple", use_checkbox=True)
gb.configure_default_column(filter=True, sortable=True, floatingFilter=True)
grid_options = gb.build()

# Render the grid
response = AgGrid(
    df,
    gridOptions=grid_options,
    height=400,
    theme="quartz",                          # or "alpine", "balham", "material"
    update_mode=GridUpdateMode.MODEL_CHANGED,
    data_return_mode=DataReturnMode.FILTERED_AND_SORTED,
    allow_unsafe_jscode=True,                # required for JsCode renderers
)

# Access results
selected_rows = response.selected_rows
filtered_data = response.data

Live Demo

Check out the full showcase with 13 interactive examples:

st-aggrid.streamlit.app

AI copilot skill

A ready-to-use Claude Code / Claude Agent SDK skill lives at skills/streamlit-aggrid-v2/SKILL.md. Copy that folder into your project's .claude/skills/ (or the equivalent for your AI tool) and your copilot will know how to build grids with GridOptionsBuilder, wire up JsCode renderers, pick the right DataReturnMode, theme the grid, build tree-data views, and avoid common gotchas — without re-reading the whole repo every conversation.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_aggrid_v2-0.1.5.tar.gz (55.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streamlit_aggrid_v2-0.1.5-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file streamlit_aggrid_v2-0.1.5.tar.gz.

File metadata

  • Download URL: streamlit_aggrid_v2-0.1.5.tar.gz
  • Upload date:
  • Size: 55.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for streamlit_aggrid_v2-0.1.5.tar.gz
Algorithm Hash digest
SHA256 27c61684fa41f36762c83e6c084d23840964036a222e06abdcb5416233111d24
MD5 2d689476dde4e11e988823b3c4c81a62
BLAKE2b-256 3a83ec58e5bc84e6c19c993124aac0820752a3e2c65eff9db0a0c9f8c71059f2

See more details on using hashes here.

File details

Details for the file streamlit_aggrid_v2-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_aggrid_v2-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0464326e2580c283f40ec26de81d087b60ab34761707a9d2dc860317e613ec13
MD5 9f65855ed637a49ee5f69a8348887c00
BLAKE2b-256 3508680cc47b7488267b2fdbc2ba954b80484d8f7508a1f9cf4a572ea6bfb3c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page