What's New
See the release post for details of what's new in version 33.
Codemods
Follow these steps to upgrade your project's AG Grid version to 33.0.0:
Locate your project's
package.jsonand note the version of AG Grid that you are currently using.Update any AG Grid dependencies listed in the
package.jsonto version33.0.0.Open a terminal and navigate to your project's root folder.
Run the
migratecommand of version33.0of the AG Grid codemod runner, where$FROM_VERSIONrefers to your project's existing AG Grid version:npx @ag-grid-devtools/cli@33.0 migrate --from=$FROM_VERSIONThis will update your project's source files to prepare for the new release.
By default the Codemod runner will locate all source files within the current directory. For projects with more specific requirements, pass a list of input files to the
migratecommand, or specify the--helpargument to see more fine-grained usage instructions.
The Codemod runner will check the state of your project to ensure that you don't lose any work. If you would rather see a diff of the changes instead of applying them, pass the --dry-run argument.
The codemod only transforms source files that make use of deprecated features, so if you aren't currently making use of any of those APIs your source code will be unaffected by the codemod.
See the Codemods documentation for more details.
Changes to Modules
Version 33 introduces a major change to how modules work to allow for smaller bundle sizes. Previously AG Grid supported two versions - modules and packages. These have now been merged together to allow for both a simpler configuration and greater optimisation of bundle size.
Migrating from Packages
If you were previously using packages (e.g. ag-grid-community), you now need to register the feature modules that you are using in the grid.
The simplest way to do this is to use one of the bundles to register all the features:
AllCommunityModulefor AG Grid Community.AllEnterpriseModulefor AG Grid Enterprise. (*)
This can then be passed to the module registry, e.g. ModuleRegistry.registerModules([AllCommunityModule]).
(*) If you are using the enterprise features Integrated Charts or Sparklines, then you need to provide the relevant module from AG Charts to AllEnterpriseModule. Use the Module Selector tool to help generate the correct registration code.
If you want to optimise your bundle size, you can register only the modules that you are using.
See the Modules page for help on selecting modules, as well as more information on how to register modules (including registering different modules for different grid instances).
Migrating from Modules
All NPM packages for the modules version of AG Grid (e.g. @ag-grid-community/core) have been replaced as below:
@ag-grid-community/angularis replaced withag-grid-angular.- All other
@ag-grid-community/*packages are replaced withag-grid-community. (*) - All
@ag-grid-enterprise/*packages are replaced withag-grid-enterprise.
(*) Note that @ag-grid-community/locale remains unchanged.
Additionally, many features have been removed from the core module into their own modules, and some modules have been split into smaller modules.
You can use the Module Selector tool to work out which modules you require.
To help identify missing modules, we recommend including the ValidationModule in your development build. This will provide details on which module is missing for a particular feature.
The core community module has been split into many modules. See the Module Selector for the full list of new modules.
The following changes have been made to existing modules:
GridChartsModule- This has been replaced withIntegratedChartsModule. This additionally needs to be passed the relevant module from AG Charts, e.g.IntegratedChartsModule.with(AgChartsEnterpriseModule). Use the Module Selector tool to help generate the correct registration code.SparklinesModule- This needs to be passed the relevant module from AG Charts, e.g.SparklinesModule.with(AgChartsCommunityModule). Use the Module Selector tool to help generate the correct registration code.ColumnsToolPanelModule- This no longer imports theRowGroupingModuleby default.ExcelExportModule- This no longer imports theCsvExportModuleby default.MenuModule- This has been split intoColumnMenuModulefor the Column Menu, andContextMenuModulefor the Context Menu.RangeSelectionModule- This has been replaced withCellSelectionModule.RowGroupingModule- This has been split into several modules.RowGroupingModulenow only contains Row Grouping. Tree Data usesTreeDataModule, Pivoting usesPivotModule, the Row Grouping Panel / Pivot Panel usesRowGroupingPanelModule, and the Group Filter usesGroupFilterModule.
Deprecations
Modules
ModuleRegistry.register(module)- deprecated, useModuleRegistry.registerModules([module])instead.MenuModule- deprecated, useColumnMenuModulefor the Column Menu and/orContextMenuModulefor the Context Menu instead.RangeSelectionModule- deprecated, useCellSelectionModuleinstead.
Column Object
Column.isHovered()- deprecated, useapi.isColumnHovered(column)instead.
Grid API
deselectAllFiltered- deprecated, usedeselectAll('filtered')instead.deselectAllOnCurrentPage- deprecated, usedeselectAll('currentPage')instead.selectAllFiltered- deprecated, useselectAll('filtered')instead.selectAllOnCurrentPage- deprecated, useselectAll('currentPage')instead.
Grid Options
cellRendererParams.checkbox- deprecated, userowSelection.checkboxLocation = "autoGroupColumn"instead.gridOptions.sortingOrder- deprecated, usedefaultColDef.sortingOrderinstead.gridOptions.unSortIcon- deprecated, usedefaultColDef.unSortIconinstead.groupRemoveLowestSingleChildren- deprecated, usegroupHideParentOfSingleChild: 'leafGroupsOnly'instead.groupRemoveSingleChildren- deprecated, usegroupHideParentOfSingleChild: trueinstead.suppressMakeColumnVisibleAfterUnGroup- deprecated, usesuppressGroupChangesColumnVisibility: "suppressShowOnUngroup"instead.suppressPropertyNamesCheck- deprecated without replacement. Previously used for adding user properties ingridOptionsandcolumnDefs. Now, use thecontextproperty in both for storing arbitrary metadata.suppressRowGroupHidesColumns- deprecated, usesuppressGroupChangesColumnVisibility: "suppressHideOnGroup"instead.- When setting both
suppressMakeColumnVisibleAfterUnGroupandsuppressRowGroupHidesColumnstotrue, usesuppressGroupChangesColumnVisibility: trueinstead.
Row Node
childIndex- deprecated, userowNode.parent?.childrenAfterSort?.findIndex(r => r === rowNode)instead.firstChild- deprecated, userowNode.parent?.childrenAfterSort?.[0] === rowNodeinstead.lastChild- deprecated, use!!rowNode.parent?.childrenAfterSort && (rowNode.parent.childrenAfterSort[rowNode.parent.childrenAfterSort.length - 1] === rowNode)instead.
Row Node Events
childIndexChanged- deprecated, use the globalmodelUpdatedevent to determine when row children have changed.firstChildChanged- deprecated, use the globalmodelUpdatedevent to determine when row children have changed.lastChildChanged- deprecated, use the globalmodelUpdatedevent to determine when row children have changed.
Theming Custom Icons
smallDown- deprecated, use:advancedFilterBuilderSelectfor Advanced Filter Builder dropdown.selectOpenfor Select cell editor and dropdowns (e.g., Integrated Charts menu).richSelectOpenfor Rich Select cell editor.
smallLeft- deprecated, use:panelDelimiterRtlfor Row Group Panel / Pivot Panel.subMenuOpenRtlfor sub-menus.
smallRight- deprecated, use:panelDelimiterfor Row Group Panel / Pivot Panel.subMenuOpenfor sub-menus.
Breaking Changes
This release includes the following breaking changes:
Packaging
ag-grid-enterprise no longer includes ag-charts-community as a dependency. Also, the package ag-grid-charts-enterprise is no longer published.
For Integrated Charts and Sparklines, the application must now explicitly include either ag-charts-community or ag-charts-enterprise in its package.json and register the module AgChartsCommunityModule or AgChartsEnterpriseModule as follows:
The GridChartsModule has been replaced by the IntegratedChartsModule.
import { AgChartsEnterpriseModule } from 'ag-charts-enterprise';
import { ModuleRegistry } from 'ag-grid-community';
import { IntegratedChartsModule } from 'ag-grid-enterprise';
ModuleRegistry.registerModules([
IntegratedChartsModule.with(AgChartsEnterpriseModule),
// sparklines
SparklinesModule.with(AgChartsEnterpriseModule)
]);
Property Value Coercion
For non-TS users and users who use TS but avoid type validation there's changes in property value coercion:
For boolean values provided as strings, all string values except “false” are truthy - only “false” will be false, any other spelling such as “FALSE” will be treated as true.
Angular Minimum Version
The minimum Angular version supported is now Angular 17. Please upgrade to Angular 17 to use this AG Grid version.
Theming
The Theming API is now the default theming method of the grid. Because of this, setting the theme via a theme class (class="ag-theme-quartz") on the parent element of the grid is no longer supported. Applications using CSS file-based themes must either pass a theme object to the theme grid option or the string "legacy" to keep using class name-based themes. This is documented in the Theming API Migration Guide.
Setting any of the custom icons listed below will have the provided custom icon only apply in the specific use case its name indicates, instead of all cases as before. To have the custom icon apply to additional cases, set the additional icon keys pointing to the same custom icon. See list of icons changed:
smallDown(deprecated):advancedFilterBuilderSelectfor Advanced Filter Builder dropdownselectOpenfor Select cell editor and dropdowns (e.g., Integrated Charts menu)richSelectOpenfor Rich Select cell editor
smallLeft(deprecated):panelDelimiterRtlfor Row Group Panel / Pivot PanelsubMenuOpenRtlfor sub-menus
smallRight(deprecated):panelDelimiterfor Row Group Panel / Pivot PanelsubMenuOpenfor sub-menus
previous:previousfor paginationchartsThemePreviousfor Integrated Charts theme picker
next:nextfor paginationchartsThemeNextfor Integrated Charts theme picker
cancel:cancelfor column drag pillsrichSelectRemovefor Rich Select cell editor pills
menu:menufor button to launch the legacy column menulegacyMenufor legacy column menu tab header
menuAlt:menuAltfor new column menuchartsMenufor Integrated Charts menu
columns:columnsfor the column menu/column choosercolumnsToolPanelfor the Columns Tool Panel tab icon
filter:filterfor buttons that open the filter (header/menu)filtersToolPanelfor the Filters Tool Panel tab iconfilterActivefor displaying the filter is active (header with legacy column menu, Filters Tool Panel item)filterTabfor the filter tab of the legacy tabbed column menu
save:savefor the export menuchartsDownloadfor Integrated Charts download
columnSelectClosed:columnSelectClosedfor the Columns Tool Panel/Column Chooser/column tab in the legacy tabbed column menuaccordionClosedfor accordions (Filters Tool Panel, Integrated Charts tool panels)
columnSelectOpen:columnSelectOpenfor the Columns Tool Panel/Column Chooser/column tab in the legacy tabbed column menuaccordionOpenfor accordions (Filters Tool Panel, Integrated Charts tool panels)
columnSelectIndeterminate:columnSelectIndeterminatefor the Columns Tool Panel/Column Chooser/column tab in the legacy tabbed column menuaccordionIndeterminatefor accordions (Filters Tool Panel, Integrated Charts tool panels)
Server-side Rendering
AG Grid no longer patches global properties that are not present in a Server environment, i.e HTMLElement and others. If possible you should avoid rendering AG Grid on the server as this is not supported.
Typing
- The types for the grid options
getMainMenuItemsandgetContextMenuItems, as well as the column definition propertiesmainMenuItemsandcontextMenuItems, have changed. Instead of string values in the arrays (and indefaultItemsin the callback), this is now typed toDefaultMenuItemwhich only allows the available menu values. - The type for the grid option
chartMenuItemshas changed. Instead of string values in the array (and indefaultItemsin the callback), this is now typed toChartDefaultMenuItemwhich only allows the available values. - The column property is now optional in the callback to get column menu items (in the grid option
getMainMenuItemsorcolDef.mainMenuItems).columnwill be null when a column group header or empty column space is right-clicked on. A new propertycolumnGroupwill be provided when a column group header is right-clicked on.
Integrated Charts
navigator is removed from ChartFormatPanelGroup. Navigator setting is now part of the Integrated Charts Advanced Settings.
Modules
api.getRowDropZoneParams() returns undefined if the RowDragModule is not registered.
Server-side Row Model
Server-side Row Model full store (activated by suppressServerSideInfiniteScroll property) is now removed. Please use the standard server-side row model functionality as documented.
Floating Filters
Floating filters provided via the colDef.filter values text, number, date, set, multi, and group no longer work. Use the values agTextColumnFilter, agNumberColumnFilter, agDateColumnFilter, agSetColumnFilter, agMultiColumnFilter, and agGroupColumnFilter instead.
Column State
Column state properties in the column definition are no longer parsed to number/boolean. Provide the correct types instead of strings.
Grid State
Grid state colId ag-Grid-ControlsColumn is now named ag-Grid-SelectionColumn. Restoring grid state with the old colId will have no effect.
Sparklines
type: 'column'- removed, usetype: 'bar'anddirection: 'vertical'instead.tooltip.rendererno longer returns tooltip font colour and opacity - use CSS instead.tooltip.xOffset / tooltip.yOffset- removed, use CSS instead.tooltip.container- removed, AG Charts now handles this.marker.formatter- removed, usemarker.itemStylerinstead.sparklineOptions.[line, area, bar, column]to apply styles - removed, usesparklineOptionsproperties instead.highlightStylenow follows the AG Charts options - for more customisation options use anitemStylerinstead.sparklineOptions.valueAxisDomain- removed, usesparklineOptions.min/maxinstead.sparklineOptions.paddingInner / sparklineOptions.paddingOuter- removed, usesparklineOptions.axis.paddingInner / sparklineOptions.axis.paddingOuterinstead.sparklineOptions.container- removed.sparklineOptions.label.placement- updated to use AG Charts Label Placement. Instead ofinsideBase,center,insideEndandoutsideEnd, please useinside-center,inside-start,inside-endoroutside-end
Grid API
new Grid()- removed, usecreateGridinstead.api- no longer mutated onto the providedgridOptionsfor Javascript users.- First argument of
selectAllanddeselectAllgrid API methods is now the selection mode, the event source is now the second argument. Both are optional. getFirstDisplayedRow- removed, usegetFirstDisplayedRowIndexinstead.getLastDisplayedRow- removed, usegetLastDisplayedRowIndexinstead.getModel()- removed, use the appropriate grid API methods instead.getValue- removed, usegetCellValueinstead.showColumnMenuAfterButtonClick- removed, useIHeaderParams.showColumnMenuwithin a header component, orapi.showColumnMenuelsewhere.showColumnMenuAfterMouseClick- removed, useIHeaderParams.showColumnMenuAfterMouseClickwithin a header component, orapi.showColumnMenuelsewhere.autoSizeColumn(key)- removed, please useautoSizeColumns([colKey])instead.setColumnWidths(key, newWidth)- removed, please usesetColumnWidths([{key: newWidth}])instead.moveColumn(key, toIndex)- removed, please usemoveColumns([key], toIndex)instead.addAggFunc(key, func)- removed, please useaddAggFuncs({ key: func })instead.removeValueColumn(colKey)- removed, please useremoveValueColumns([colKey])instead.addValueColumn(colKey)- removed, please useaddValueColumns([colKey])instead.removeRowGroupColumn(colKey)- removed, please useremoveRowGroupColumns([colKey])instead.addRowGroupColumn(colKey)- removed, please useaddRowGroupColumns([colKey])instead.removePivotColumn(colKey)- removed, please useremovePivotColumns([colKey])instead.addPivotColumn(colKey)- removed, please useaddPivotColumns([colKey])instead.setColumnVisible(key, visible)- removed, please usesetColumnsVisible([key], visible)instead.setColumnPinned(key, pinned)- removed, please usesetColumnsPinned([key], pinned)instead.- To get/set individual filter models, use
getColumnFilterModelorsetColumnFilterModelinstead.
Grid Options
suppressServerSideInfiniteScroll- removed without replacement.- Interface
getServerSideGroupLevelParams-suppressInfiniteScrollproperty removed without replacement. advancedFilterModel- removed, please useinitialState.filter.advancedFilterModelinstead.suppressAsyncEvents- removed, Events should be handled asynchronously.cellFlashDelay- removed, please usecellFlashDurationinstead.cellFadeDelay- removed, please usecellFadeDurationinstead.- Use
enableCellChangeFlashin theColDefordefaultColDeffor all columns. suppressGroupMaintainValueType- removed.groupIncludeFooter- removed, please usegroupTotalRowinstead.groupIncludeTotalFooter- removed, please usegrandTotalRowinstead.suppressServerSideInfiniteScroll- removed.serverSideSortOnServer- removed.serverSideFilterOnServer- removed.tabToNextCellreturningnull- removed.tabToNextHeaderreturningnull- removed.
ColDef
suppressCellFlash- removed, please useenableCellChangeFlash={false}in theColDef.columnsMenuParams- removed, please usecolumnChooserParamsinstead.suppressMenu- removed, please usesuppressHeaderMenuButtoninstead.
Interfaces
RowDragEventinterface:vDirectionproperty is now typed as'up' | 'down' | null.IFloatingFilterParams:suppressFilterButton- removed, please usecolDef.suppressFloatingFilterButtoninstead.ITextFilterParams:textCustomComparator- removed, please usetextMatcherinstead.IFloatingFilter:onParamsUpdated- removed, please userefreshinstead.IFilterParams:valueGetter- removed, please usegetValueinstead.IDate:onParamsUpdated- removed, please userefreshinstead.IGroupCellRendererParams:footerValueGetter- removed, please usetotalValueGetterinstead.FlashCellsParams:flashDelay- removed, please useflashDurationinstead.fadeDelay- removed, please usefadeDurationinstead.
ToolPanelColumnCompParams:ToolPanelColumnCompParams- removed, please useIToolPanelColumnCompParamsinstead.ExcelAlignment: Legacy propertyverticalText- removed.ExcelFont: Legacy propertycharSet- removed.ExcelStyle: Legacy propertyname- removed.
Changes List
If you would like to see the full list of changes in this release, please see the Changelog.