# streamlit-aggrid
[![Open in Streamlit][share_badge]][share_link] [![GitHub][github_badge]][github_link] [![PyPI][pypi_badge]][pypi_link] [![Downloads][downloads_badge]][downloads_link]
> [!IMPORTANT]
> 💡 **Support the Development of streamlit-aggrid!**  
> This project is the result of countless hours of dedication by a solo Python developer. If you find it useful, consider giving back to help keep it alive and thriving.  
> 
> ### Ways to Contribute:
> - **[Donate via PayPal](https://www.paypal.com/donate?hosted_button_id=8HGLA4JZBYFPQ):** A quick and secure way to show your support.  
> 
> Every contribution, no matter the size, makes a difference and helps ensure the continued improvement of this project. Thank you for your generosity! 🙌
> For sponsoring, development support, features prioritization you can [email me](mailto:pablo.fonseca+staggrid@gmail.com).
[Live examples](https://staggrid-examples.streamlit.app/) and documentation on Streamlit Cloud.
---
**AgGrid** is an awesome grid for web frontend. More information in [https://www.ag-grid.com/](https://www.ag-grid.com/). Consider purchasing a license from Ag-Grid if you are going to use enterprise features!
Current AgGrid version is [34.3.1](https://www.ag-grid.com/archive/34.3.1/)
# Install
```
pip install streamlit-aggrid
```
# Quick Use
Create an example.py file
```python
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)
```
Run :
```shell
streamlit run example.py
```
# Demo
Grid data is sent back to streamlit and can be reused in other components. In the example below a chart is updated on grid edition.

# Development Notes
Version 1.2.0
 - Added `server_sync_strategy` parameter to control data synchronization between server and client
 - Deprecates try_to_convert_back_to_original_types, now grid will always try to keep proper datatypes when editing data.
 - Upgrades internal ag-grid to version 34.3.1
 - post1: fixes empty data initialization.
Version 1.1.9
 - Updates internal grid to 34.2.0
 - Fixes BigInt serialization bug, caused by the new PyArrow serialization.
Version 1.1.8
- **Major refactor**: Introduced collector-based architecture for grid data return processing
- Added new `DataReturnMode.CUSTOM` allowing custom JavaScript data collection logic
- Improved data serialization and handling of complex data types (data is now transfered using Streamlit`s ArrowTable protobuff)
- Enhanced performance for large datasets through optimized data processing
- Added comprehensive test suite for grid return functionality
- Added deprecation warnings for `GridUpdateMode` (use `update_on` parameter instead)
- Enhanced documentation with detailed parameter descriptions
Version 1.1.7
- Updates inner Ag-Grid to v. 34.0.2
- Fixes a bug related to moving columns with grandTotalRow present
Version 1.1.5
- Fix licensing when not using License bundled with AgCharts.
- Added option for fullscreen mode.
- Refactored grid toolbar.
Version 1.1.4
- onGridReady Event fires when set in grid Options.
- Fixes grid return when data input data is Json.
- post1 fixes packaging bug caused by poetry update to 2.1.2
Version 1.1.3
- fixes enterprise modules being enabled by default. (If using enterprise features, buy a license from Ag Grid.)
- fixes grid initialization when neither data nor gridOptions are set.
- 1.1.3.post1 fixes [#317](https://github.com/PablocFonseca/streamlit-aggrid/issues/317)
Version 1.1.2
- adds PR #308 - Callbacl functionality
Version 1.1.1
- Solves [#306](https://github.com/PablocFonseca/streamlit-aggrid/issues/306) and [#305](https://github.com/PablocFonseca/streamlit-aggrid/issues/305)
Version 1.1.0
- Updated AgGrid to version 32.3
- Added partial support for the aggrid [Theming](https://www.ag-grid.com/javascript-data-grid/theming/) - Check [example](https://staggrid-examples.streamlit.app/Themes)
- Cleaned project dependencies (Altair < 5)
Version 1.0.5
- Updated AgGrid to version 31.3
Version 1.0.4
- Added information on the event that triggered app rerun
Version 1.0.2
- Moved a lot of response processment to python side.
- Changed grid return object.
- Fix bugs and code cleanup.
> [!WARNING]
> v1.0.0 breaks compatibility with previous versions and many people reached me to say that it is unstable.  
> Main changes are on gridReturn object as I'm moving heavy processment to python side.  
> I'm working to stabilize it, if you find any issues, please open a topic on the issue tracker  
> with a reproductile example, if possible.  
> Meanwhile use the last v.0.3.4 if things are not working for you! I hope to have everything fixed soon.
Version 0.3.5
- Merged many PR, thanks everybody.
- Grid State can be saved and retrieved. Many people requested this one. Live Example [Here](https://staggrid-examples.streamlit.app/?example=%27Grid%20State%27)
Version 0.3.4
- Added quickfilter
- Added Excel Export Module
- Bugfixes (an probably introduced new ones :/)
- Code cleanup
- Updated Ag-Grit to 29.1.0 (including ag-grid-react) which will cause direct HTML returns to stop rendering ([#198](https://github.com/PablocFonseca/streamlit-aggrid/issues/198)). Use a [cellRenderer](https://www.ag-grid.com/javascript-data-grid/component-cell-renderer/) instead.
Version 0.3.3
- Fixes [#132](https://github.com/PablocFonseca/streamlit-aggrid/issues/132)
- Fixes [#131](https://github.com/PablocFonseca/streamlit-aggrid/issues/131) and [#130](https://github.com/PablocFonseca/streamlit-aggrid/issues/130)
- Added Sparklines [#118](https://github.com/PablocFonseca/streamlit-aggrid/issues/118)
- Changed Grid Return to support [#117](https://github.com/PablocFonseca/streamlit-aggrid/issues/117)
- Rebuilt streamlit theme
Version 0.3.0
- Merged some PR (Thanks everybody!) check PR at github!
- Added class parsing in React Side, so more advanced CellRenderers can be used. (Thanks [kjakaitis](https://github.com/kjakaitis))
- Added gridOptionsBuilder.configure_first_column_as_index() to, well, style the first columns as an index (MultiIndex to come!)
- Improved serialization performance by using simpler pandas to_json method (PR #62, #85)
- Added option to render plain json instead of pd.dataframes
- gridOptions may be loaded from file paths or strings
- gridReturn is now a @dataclass with rowIndex added to selected_rows, (previous version returned only the selected data, now you can know which row was selected)
- Changed GridReturnMode behavior. Now update_on accepts a list of gridEvents that will trigger a streamlit refresh, making it possible to subscribe to any [gridEvent](https://www.ag-grid.com/javascript-data-grid/grid-events/).
- Removed dot-env and simplejson dependencies.
- Other smaller fixes and typos corrections.
Version 0.2.3
- small fixes
- Merged PR #44 and #25 (thanks [msabramo](https://github.com/msabramo) and [ljnsn](https://github.com/ljnsn))
- Merged PR #58 - allow nesting dataframes. Included an example in exampes folder.
Version 0.2.2
- Updated frontend dependencies to latest version
- Corrected text color for better viz when using streamlit theme (thanks [jasonpmcculloch](https://github.com/jasonpmcculloch))
- Switched default theme to Balham Light ('light'), if you want to use streamlit theme set `theme='streamlit'` on agGrid call
Version 0.2.0
- Support Themes
- Incorporated Pull Requests with fixes and pre-select rows (Thanks [randomseed42](https://github.com/randomseed42) and [msabramo](https://github.com/msabramo))
- You can use strings instead of importing GridUpdateMode and DataReturnMode enumerators
- it works fine with st.forms!
- new theme example in example folder
Version 0.1.9
- Small fixes
- Organized examples folder
Version 0.1.8
- Fixes a bug that breaks the grid when NaN or Inf values are present in the data
Version 0.1.7
- Fixes a bug that happened when converting data back from the grid with only one row
- Added license_key parameter on AgGrid call.
Version 0.1.6
- Fixes issue [#3](https://github.com/PablocFonseca/streamlit-aggrid/issues/3)
- Adds support for timedelta columns check [example][share_link]
Version 0.1.5
- small bug fixes
- there is an option to avoid grid re-initialization on app update (check fixed_key_example.py on examples folder or [here](https://share.streamlit.io/pablocfonseca/streamlit-aggrid/main/examples/fixed_key_example.py))
Version 0.1.3
- Fixed bug where cell was blank after edition.
- Added enable_enterprise_modules argument to AgGrid call for enabling/disabling [enterprise features](https://www.ag-grid.com/documentation/javascript/licensing/)
- It is now possible to inject js functions on gridOptions. Enabling advanced customizations such as conditional formatting (check 4<sup>th</sup> column on the [example](share_link))
Version 0.1.2
- added customCurrencyFormat as column type
Version 0.1.0:
- I worked a little bit more on making the example app functional.
- Couple configuration options for update mode (How frontend updates streamlit) and for data returns (grid should return data filtered? Sorted?)
- Some basic level of row selection
- Added some docstrings specially on gridOptionsBuilder methods
- Lacks performance for production. JS Client code is slow...
[share_badge]: https://static.streamlit.io/badges/streamlit_badge_black_white.svg
[share_link]: https://staggrid-examples.streamlit.app/
[github_badge]: https://badgen.net/badge/icon/GitHub?icon=github&color=black&label
[github_link]: https://github.com/PablocFonseca/streamlit-aggrid
[pypi_badge]: https://badgen.net/pypi/v/streamlit-aggrid?icon=pypi&color=black&label?
[pypi_link]: https://www.pypi.org/project/streamlit-aggrid/
[downloads_badge]: https://img.shields.io/pypi/dm/streamlit-aggrid
[downloads_link]: https://pypi.org/project/streamlit-aggrid/#files
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": "https://github.com/PablocFonseca/streamlit-aggrid",
    "name": "streamlit-aggrid",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "streamlit, ag-grid, component",
    "author": "Pablo Fonseca",
    "author_email": "pablo.fonseca+pip@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/00/b6/643a83f2654d3fae7b203686a00357b8346bf09d32a9001b8b1e19920c4f/streamlit_aggrid-1.2.0.post1.tar.gz",
    "platform": null,
    "description": "# streamlit-aggrid\n\n[![Open in Streamlit][share_badge]][share_link] [![GitHub][github_badge]][github_link] [![PyPI][pypi_badge]][pypi_link] [![Downloads][downloads_badge]][downloads_link]\n\n> [!IMPORTANT]\n> \ud83d\udca1 **Support the Development of streamlit-aggrid!**  \n> This project is the result of countless hours of dedication by a solo Python developer. If you find it useful, consider giving back to help keep it alive and thriving.  \n> \n> ### Ways to Contribute:\n> - **[Donate via PayPal](https://www.paypal.com/donate?hosted_button_id=8HGLA4JZBYFPQ):** A quick and secure way to show your support.  \n> \n> Every contribution, no matter the size, makes a difference and helps ensure the continued improvement of this project. Thank you for your generosity! \ud83d\ude4c\n\n> For sponsoring, development support, features prioritization you can [email me](mailto:pablo.fonseca+staggrid@gmail.com).\n\n[Live examples](https://staggrid-examples.streamlit.app/) and documentation on Streamlit Cloud.\n\n---\n\n**AgGrid** is an awesome grid for web frontend. More information in [https://www.ag-grid.com/](https://www.ag-grid.com/). Consider purchasing a license from Ag-Grid if you are going to use enterprise features!\n\nCurrent AgGrid version is [34.3.1](https://www.ag-grid.com/archive/34.3.1/)\n\n# Install\n\n```\npip install streamlit-aggrid\n\n```\n\n# Quick Use\n\nCreate an example.py file\n\n```python\nfrom st_aggrid import AgGrid\nimport pandas as pd\n\ndf = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/airline-safety/airline-safety.csv')\nAgGrid(df)\n```\n\nRun :\n\n```shell\nstreamlit run example.py\n```\n\n# Demo\n\nGrid data is sent back to streamlit and can be reused in other components. In the example below a chart is updated on grid edition.\n\n\n\n# Development Notes\n\nVersion 1.2.0\n - Added `server_sync_strategy` parameter to control data synchronization between server and client\n - Deprecates try_to_convert_back_to_original_types, now grid will always try to keep proper datatypes when editing data.\n - Upgrades internal ag-grid to version 34.3.1\n - post1: fixes empty data initialization.\n\nVersion 1.1.9\n - Updates internal grid to 34.2.0\n - Fixes BigInt serialization bug, caused by the new PyArrow serialization.\n\nVersion 1.1.8\n- **Major refactor**: Introduced collector-based architecture for grid data return processing\n- Added new `DataReturnMode.CUSTOM` allowing custom JavaScript data collection logic\n- Improved data serialization and handling of complex data types (data is now transfered using Streamlit`s ArrowTable protobuff)\n- Enhanced performance for large datasets through optimized data processing\n- Added comprehensive test suite for grid return functionality\n- Added deprecation warnings for `GridUpdateMode` (use `update_on` parameter instead)\n- Enhanced documentation with detailed parameter descriptions\n\nVersion 1.1.7\n\n- Updates inner Ag-Grid to v. 34.0.2\n- Fixes a bug related to moving columns with grandTotalRow present\n\nVersion 1.1.5\n\n- Fix licensing when not using License bundled with AgCharts.\n- Added option for fullscreen mode.\n- Refactored grid toolbar.\n\nVersion 1.1.4\n\n- onGridReady Event fires when set in grid Options.\n- Fixes grid return when data input data is Json.\n- post1 fixes packaging bug caused by poetry update to 2.1.2\n\nVersion 1.1.3\n\n- fixes enterprise modules being enabled by default. (If using enterprise features, buy a license from Ag Grid.)\n- fixes grid initialization when neither data nor gridOptions are set.\n- 1.1.3.post1 fixes [#317](https://github.com/PablocFonseca/streamlit-aggrid/issues/317)\n\nVersion 1.1.2\n\n- adds PR #308 - Callbacl functionality\n\nVersion 1.1.1\n\n- Solves [#306](https://github.com/PablocFonseca/streamlit-aggrid/issues/306) and [#305](https://github.com/PablocFonseca/streamlit-aggrid/issues/305)\n\nVersion 1.1.0\n\n- Updated AgGrid to version 32.3\n- Added partial support for the aggrid [Theming](https://www.ag-grid.com/javascript-data-grid/theming/) - Check [example](https://staggrid-examples.streamlit.app/Themes)\n- Cleaned project dependencies (Altair < 5)\n\nVersion 1.0.5\n\n- Updated AgGrid to version 31.3\n\nVersion 1.0.4\n\n- Added information on the event that triggered app rerun\n\nVersion 1.0.2\n\n- Moved a lot of response processment to python side.\n- Changed grid return object.\n- Fix bugs and code cleanup.\n\n> [!WARNING]\n> v1.0.0 breaks compatibility with previous versions and many people reached me to say that it is unstable.  \n> Main changes are on gridReturn object as I'm moving heavy processment to python side.  \n> I'm working to stabilize it, if you find any issues, please open a topic on the issue tracker  \n> with a reproductile example, if possible.  \n> Meanwhile use the last v.0.3.4 if things are not working for you! I hope to have everything fixed soon.\n\nVersion 0.3.5\n\n- Merged many PR, thanks everybody.\n- Grid State can be saved and retrieved. Many people requested this one. Live Example [Here](https://staggrid-examples.streamlit.app/?example=%27Grid%20State%27)\n\nVersion 0.3.4\n\n- Added quickfilter\n- Added Excel Export Module\n- Bugfixes (an probably introduced new ones :/)\n- Code cleanup\n- Updated Ag-Grit to 29.1.0 (including ag-grid-react) which will cause direct HTML returns to stop rendering ([#198](https://github.com/PablocFonseca/streamlit-aggrid/issues/198)). Use a [cellRenderer](https://www.ag-grid.com/javascript-data-grid/component-cell-renderer/) instead.\n\nVersion 0.3.3\n\n- Fixes [#132](https://github.com/PablocFonseca/streamlit-aggrid/issues/132)\n- Fixes [#131](https://github.com/PablocFonseca/streamlit-aggrid/issues/131) and [#130](https://github.com/PablocFonseca/streamlit-aggrid/issues/130)\n- Added Sparklines [#118](https://github.com/PablocFonseca/streamlit-aggrid/issues/118)\n- Changed Grid Return to support [#117](https://github.com/PablocFonseca/streamlit-aggrid/issues/117)\n- Rebuilt streamlit theme\n\nVersion 0.3.0\n\n- Merged some PR (Thanks everybody!) check PR at github!\n- Added class parsing in React Side, so more advanced CellRenderers can be used. (Thanks [kjakaitis](https://github.com/kjakaitis))\n- Added gridOptionsBuilder.configure_first_column_as_index() to, well, style the first columns as an index (MultiIndex to come!)\n- Improved serialization performance by using simpler pandas to_json method (PR #62, #85)\n- Added option to render plain json instead of pd.dataframes\n- gridOptions may be loaded from file paths or strings\n- gridReturn is now a @dataclass with rowIndex added to selected_rows, (previous version returned only the selected data, now you can know which row was selected)\n- Changed GridReturnMode behavior. Now update_on accepts a list of gridEvents that will trigger a streamlit refresh, making it possible to subscribe to any [gridEvent](https://www.ag-grid.com/javascript-data-grid/grid-events/).\n- Removed dot-env and simplejson dependencies.\n- Other smaller fixes and typos corrections.\n\nVersion 0.2.3\n\n- small fixes\n- Merged PR #44 and #25 (thanks [msabramo](https://github.com/msabramo) and [ljnsn](https://github.com/ljnsn))\n- Merged PR #58 - allow nesting dataframes. Included an example in exampes folder.\n\nVersion 0.2.2\n\n- Updated frontend dependencies to latest version\n- Corrected text color for better viz when using streamlit theme (thanks [jasonpmcculloch](https://github.com/jasonpmcculloch))\n- Switched default theme to Balham Light ('light'), if you want to use streamlit theme set `theme='streamlit'` on agGrid call\n\nVersion 0.2.0\n\n- Support Themes\n- Incorporated Pull Requests with fixes and pre-select rows (Thanks [randomseed42](https://github.com/randomseed42) and [msabramo](https://github.com/msabramo))\n- You can use strings instead of importing GridUpdateMode and DataReturnMode enumerators\n- it works fine with st.forms!\n- new theme example in example folder\n\nVersion 0.1.9\n\n- Small fixes\n- Organized examples folder\n\nVersion 0.1.8\n\n- Fixes a bug that breaks the grid when NaN or Inf values are present in the data\n\nVersion 0.1.7\n\n- Fixes a bug that happened when converting data back from the grid with only one row\n- Added license_key parameter on AgGrid call.\n\nVersion 0.1.6\n\n- Fixes issue [#3](https://github.com/PablocFonseca/streamlit-aggrid/issues/3)\n- Adds support for timedelta columns check [example][share_link]\n\nVersion 0.1.5\n\n- small bug fixes\n- there is an option to avoid grid re-initialization on app update (check fixed_key_example.py on examples folder or [here](https://share.streamlit.io/pablocfonseca/streamlit-aggrid/main/examples/fixed_key_example.py))\n\nVersion 0.1.3\n\n- Fixed bug where cell was blank after edition.\n- Added enable_enterprise_modules argument to AgGrid call for enabling/disabling [enterprise features](https://www.ag-grid.com/documentation/javascript/licensing/)\n- It is now possible to inject js functions on gridOptions. Enabling advanced customizations such as conditional formatting (check 4<sup>th</sup> column on the [example](share_link))\n\nVersion 0.1.2\n\n- added customCurrencyFormat as column type\n\nVersion 0.1.0:\n\n- I worked a little bit more on making the example app functional.\n- Couple configuration options for update mode (How frontend updates streamlit) and for data returns (grid should return data filtered? Sorted?)\n- Some basic level of row selection\n- Added some docstrings specially on gridOptionsBuilder methods\n- Lacks performance for production. JS Client code is slow...\n\n[share_badge]: https://static.streamlit.io/badges/streamlit_badge_black_white.svg\n[share_link]: https://staggrid-examples.streamlit.app/\n[github_badge]: https://badgen.net/badge/icon/GitHub?icon=github&color=black&label\n[github_link]: https://github.com/PablocFonseca/streamlit-aggrid\n[pypi_badge]: https://badgen.net/pypi/v/streamlit-aggrid?icon=pypi&color=black&label?\n[pypi_link]: https://www.pypi.org/project/streamlit-aggrid/\n[downloads_badge]: https://img.shields.io/pypi/dm/streamlit-aggrid\n[downloads_link]: https://pypi.org/project/streamlit-aggrid/#files\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Streamlit component implementation of ag-grid",
    "version": "1.2.0.post1",
    "project_urls": {
        "Homepage": "https://github.com/PablocFonseca/streamlit-aggrid"
    },
    "split_keywords": [
        "streamlit",
        " ag-grid",
        " component"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e241aa95ac0c3ab68e205878193725981f4946d492d439bbab7a7e535b5293e1",
                "md5": "385ba02c52e0f646c866baf431f4993c",
                "sha256": "4acde4ab5812b8a069dde5f536ef380fcd58de97af96d16b7579330770daf497"
            },
            "downloads": -1,
            "filename": "streamlit_aggrid-1.2.0.post1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "385ba02c52e0f646c866baf431f4993c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 5732697,
            "upload_time": "2025-11-02T17:21:51",
            "upload_time_iso_8601": "2025-11-02T17:21:51.491567Z",
            "url": "https://files.pythonhosted.org/packages/e2/41/aa95ac0c3ab68e205878193725981f4946d492d439bbab7a7e535b5293e1/streamlit_aggrid-1.2.0.post1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00b6643a83f2654d3fae7b203686a00357b8346bf09d32a9001b8b1e19920c4f",
                "md5": "a9cd4bd9e3b9a895e13fe56176dfa8e4",
                "sha256": "d06dbe3dab6999cbed5eedebab48131301f994802285f6f4bffeb4dba513021f"
            },
            "downloads": -1,
            "filename": "streamlit_aggrid-1.2.0.post1.tar.gz",
            "has_sig": false,
            "md5_digest": "a9cd4bd9e3b9a895e13fe56176dfa8e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 5669026,
            "upload_time": "2025-11-02T17:21:55",
            "upload_time_iso_8601": "2025-11-02T17:21:55.550106Z",
            "url": "https://files.pythonhosted.org/packages/00/b6/643a83f2654d3fae7b203686a00357b8346bf09d32a9001b8b1e19920c4f/streamlit_aggrid-1.2.0.post1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-02 17:21:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "PablocFonseca",
    "github_project": "streamlit-aggrid",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "streamlit-aggrid"
}