NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4984 most downloaded on PyPI
Dash wrapper around AG Grid, the best interactive data grid for the web.
Last release 2 months ago
16 Jul 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 18 of 20 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
35 releases · first in 2021
One column per quarter.
## [36.0.0rc0] - 2026-07-16 ### Changed - #481 bump AG Grid packages to 36.0.1. - #481 update selectors in tests/examples/docs for AG Grid v36 DOM con
Added test for OBJ_MAYBE_FUNCTION_OR_MAP_MAYBE_FUNCTIONS to test that the value is an object before parsing,
detailCellRendererParams in Master/Detail, including dynamic detail-grid column definitions.processUnpinnedColumns.OBJ_MAYBE_FUNCTION_OR_MAP_MAYBE_FUNCTIONS to test that the value is an object before parsing,getRowsRequest / getRowsResponse warnings by excluding these Dash callback props from AG Grid options.getRowId is explicitly set to NonegridApi in onSortChanged, which threw an uncaught TypeError when a grid initialized with a sort applied via initialState.sort.sortModelFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v35.2.0...v35.3.0
added columnTypes to prop categories for parsing functions
columnTypes to prop categories for parsing functionslinkTarget now works even if dangerously_allow_code is true and no target is passed in the link._self will auto apply as a linkTarget._blank will auto apply rel='noreferrer noopener 'nofollow' for security reasons, but will open in a new tab.35.2.0 for the gridFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v35.0.0rc0...v35.2.0
Release candidate for v35 of AG Grid
Release candidate for v35 of AG Grid
added columnTypes to prop categories for parsing functions
columnTypes to prop categories for parsing functionsdetailCellRendererParams in Master/Detail, including dynamic detail-grid column definitions.processUnpinnedColumns.34.3.1 for the gridlinkTarget now works even if dangerously_allow_code is true and no target is passed in the link._self will auto apply as a linkTarget._blank will auto apply rel='noreferrer noopener 'nofollow' for security reasons, but will open in a new tab.OBJ_MAYBE_FUNCTION_OR_MAP_MAYBE_FUNCTIONS to test that the value is an object before parsing,getRowsRequest / getRowsResponse warnings by excluding these Dash callback props from AG Grid options.getRowId is explicitly set to NonegridApi in onSortChanged, which threw an uncaught TypeError when a grid initialized with a sort applied via initialState.sort.sortModelNothing published for this version
@andre996 made their first contribution in https://github.com/plotly/dash-ag-grid/pull/413
columnState would conflict with columnDefs updates
agGrid from the community package for use in custom themes and functions### Fixed - #403 fix "Maximum update depth exceeded" error
### Fixed - #394 allow cellRenderer column def to be a function
cellRenderer column def to be a functionlegacy (CSS-only) themes now require stylesheets to be loaded externally (for example, via the external_stylesheets kwarg to the Dash constructor). Se
33.3.2 for the gridexternal_stylesheets kwarg to the Dash constructor). See tests/examples/themes_legacy.py for an example.theme string or function as per AG Grid's latest theming system. See tests/examples/themes.py for examples.# re-release of v32.3.3 due to publishing errors
### Fixed - #403 fix "Maximum update depth exceeded" error
### Fixed - #394 allow cellRenderer column def to be a function
cellRenderer column def to be a functionComponent is refactored to be a function component rather than a class
isRowSelectable prop (issue #379)the grid checks if updates are from an internal source (3.0.2 dash) and will selectively rerender if so
getRowStyle wasn't able to be passed as a complete function32.3 for the gridFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v31.3.1...v32.3.0rc0
@Coding-with-Adam made their first contribution in https://github.com/plotly/dash-ag-grid/pull/343
data. This is related to the alteration in #332eventData prop for devs to send arbitrary events from the grid events complete with an auto timestamp31.3.4 for the gridFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v31.3.0...v31.3.1
@Coding-with-Adam made their first contribution in https://github.com/plotly/dash-ag-grid/pull/343
data. This is related to the alteration in #332eventData prop for devs to send arbitrary events from the grid events complete with an auto timestampFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v31.3.0...v31.3.1rc1
locking selenium for tests that were failing due to missing import
columnState.pivotComparator functions were not sorting columns correctly because they were only being passed params.scrollTo was defaulting to not reset the value
getRowIdcellDoubleClicked was forcing the grid to rerendersetProps -> customSetProps which tests if the grid is active in the dash tree and mounted.setProps is no longer called when unmounted.dash_clientside to available functions for easier on-liner functions, esp. eventListeners.
31.3.2 for the gridhandleDynamicStyle now checks for params.data before attempting to apply the testFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v31.2.0...v31.3.0
support for eventListeners to be added to the grid that get loaded upon gridReady
getApiAsync to 2 minutes. by @AnnMarieWnode_modules and uses a different parser by @BSd3v31.2.1 for the grid by @BSd3veventListeners to be added to the grid that get loaded upon gridReadyeventListeners are added upon gridReady only, if you need to add or remove other event listeners, please use the getApi or getApiAsync methodsselectedRows to be []aggFuncs can now be passes as an object from the grid to be mapped to functionsFull Changelog: https://github.com/plotly/dash-ag-grid/compare/v31.0.1...v31.2.0
getApiAsync to 2 minutes.node_modules and uses a different parser31.2.1 for the grideventListeners to be added to the grid that get loaded upon gridReadyeventListeners are added upon gridReady only, if you need to add or remove other event listeners, please use the getApi or getApiAsync methodsselectedRows to be []- #266 Updated README
grid_version added to allow developer to see underlying AG Grid version in python
grid_version added to allow developer to see underlying AG Grid version in pythonquartz theme native supportdateParser, dateFormatter, quickFilterParser, components, quickFilterMatcher, predicate, textFormatter, textMatcher, numberFormatter, numberParser, dataTypeMatchergetColumnApi and getColmunApiAsync as these are deprecated from the underlying grid.cellValueChanged property has changed been changed from a (single) event object to a list of event objects. For multi-cell edits, the list will contain an element per change. In other cases, the list will contain a single element. Fixes #262dataTypeDefinitions now supports full js, partial python with full definitions in js of an object, and objects have parts that are jscolumnSize and columnState cannot be currently passed together when grid initializes, the columnSize will trump the columnStategetContextMenuItems, isRowMaster, setPopupParent, popupParent, filter
getContextMenuItems, isRowMaster, setPopupParent, popupParent, filtercsvExportParams and defaultCsvExportParams for functions:
getCustomContextBelowRow, shouldRowBeSkipped, processCellCallback, processHeaderCallback, processGroupHeaderCallback, processRowGroupCallback### Added - #212 Async function for getApiAsync and getColumnApiAsync for use with grid initializing ### Fixed - #226 Fixed issue when using grouped r
210 Fix issue with columnState and React 18
scrollTo prop which allows scrolling to rows and columns.getApi and getColumnApi to dash_ag_grid namespace to allow for JS functions to call the grid's API directlycolumnState and React 18setProps from the render() to componentDidUpdatecolumnState floats during grid interaction and only gets pushed when sent in a callback
cellDoubleClicked prop, which works exactly like cellClickedcolumnState floats during grid interaction and only gets pushed when sent in a callbackcolumnDefs trumps columnState if it is pushed in a callback without a columnState#207 Update AG Grid from 29.3.3 to 29.3.5, with a few minor bugfixes, see their changelog for 29.3.4 and 29.3.5. Also other minor dependency updates.
#174 Fix #171: Markdown renderer now displays a blank cell rather than writing undefined if there is no value
#204 filterOptions will now work as a regular object
#206 Fix #195 where if the user was to redo the exact same action, callbacks on cellValueChanged would not trigger again. Fix by adding timestamp into the object, as we have in other event-type props to make them unique.
Remove agGridColumns component due to deprecation in AG Grid v29, use columnDefs instead.
The first full open-source release of Dash AG Grid!
agGridColumns component due to deprecation in AG Grid v29, use columnDefs instead.#132 Remove prop autoSizeAllColumns, use the columnSize prop instead.
className prop for css customization native to AG Gridenable* props for easier user / dash manipulation, for creating buttonsdangerously_allow_code prop to grid props only provided at render, to keep columnDefs from receiving possible updates to execute malicious JavaScript (originally called dangerously_allow_html but renamed later)data_previous and data_previous_timestamp props to allow easier change tracking in callbacksdashGridOptions prop to allow for arbitrary use of AG Grid props not explicitly listedsetRowId prop to allow rowData change detectioncolumnState prop to retrieve the current state of the columns after user interactionvalueGetterFunction, valueFormatterFunction. This allows for functions to be parsed even in a strict CSP environment.getRowStyle, acts similar to cellStyleswindow.dashAgGridFunctionsnull to be passed to columnSize, to prevent the fit to width or autosize being the only optionsdangerously_allow_code is not passedcolumnDef dangerously_allow_code to allow for the prop to be placed only on the grid levelparams together instead of splitting into separate keys, to allow for easier transition to using AG Grid docsdefaultColDef to be iterated through for functionstooltipComponent to be altered if it was list as a function object#49 Safely handle more attributes when dangerously_allow_code is disabled:
rowClassRules, getRowStyle, and getRowClasscellClass, cellStyle, and cellClassRules#67 Function parsing recursive columnDefs
columnDefs -> children and master detail info#76 Add logging function available by default, available via {"function": "log()"}
#111 Add filterModel prop in order to capture the grid's active filters
columnSize option responsiveSizeToFit, which will adjust column sizes based upon grid size and columns added or removedcolumnSizeOptions prop to modify the behavior chosen in columnSizecolumnState back to grid and replay the settingsalignedGridstooltipComponentParamspaginationInfo for read-only info from the grid's paginationpaginationGoTo to navigate to different pages-#164 Support passing selectedRows functions or ids for performing selections
dangerously_allow_coderequirements.txt (Python dependencies for demos and docs) to allow the latest packagesselectionChanged to selectedRows to make props align with AG GridselectedRows to persist#70 Change clickData to cellRendererData to more closely line up with what this does
cellStyle from the grid level, allowing more flexibility in customization, and alignment with AG gridcellStyle on all levelsrowId to cellClicked data#132 Change columnSize option of autoSizeAll -> autoSize
18.2.0material-ui to @mui for rowMenuRenderer-#164 Update selectedRows to maintain persistence by utilizing rowIds if available
#6 Fix props issue for enableAddRows
#45 Fix #44, markdown ignoring target="_blank" to open links in a new tab. Now if dangerously_use_code is false, markdown cells honor columnDef.linkTarget, but if dangerously_use_code is true you MUST use the HTML syntax <a target="_blank"> to achieve this, markdown syntax [text](url) will ignore columnDef.linkTarget.
#47 Fix virtualRowData by setting the default rowModelType='clientSide'
#81 Fix syncing issue with rowData, virtualRowData when cell edits and async rowTransactions occur
#90 Fix columnState to be populated once gridReady
#92 Fix defaultStyle when no styleConditions is in cellStyle
#111 Fix templates to only populate when dangerously_allow_code=True
#132 Fix columnSize to update upon interaction
onRowDragEnd to trigger virtualRowData updatevirtualRowData updates to take into account sortingopenGroups where clearing out the set would cause issuespaginationGoTo to work with a starting page#161 Fix the default style to be applied even when a style is given from the developer. style.height and style.width always exist but can be overridden if other values are provided in the style prop.
-#164
comparator to not be restricted to just paramspaginationGoTo to allow 0 to be passed2nd release candidate for v2.0.0
2nd release candidate for v2.0.0
First release candidate for v2.0.0
First release candidate for v2.0.0
Fifth alpha prior to full v2.0.0 release
Fifth alpha prior to full v2.0.0 release
Fourth alpha prior to full 2.0.0 release
Fourth alpha prior to full 2.0.0 release
Third alpha prior to full v2.0.0 release
Third alpha prior to full v2.0.0 release
Second alpha prior to full open-source v2.0.0 release
Second alpha prior to full open-source v2.0.0 release
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →