For a detailed breakdown of items please refer to the detailed pipeline here.

Version 16.0.0 [25-JAN-2018]

For details of this release, check our dedicated blog post for v16.0.0.


  • AG-116: Allow row drag and drop
  • AG-1397: Add example on how to add a dynamic component into a cell
  • AG-1435: Maintain cell focus on data updates
  • AG-1419: Allow quick filter to work with tree data
  • AG-1400: Allow moving of group auto-column
  • AG-1388: Support for Enter to commit changes to cell and to navigate to the next row
  • AG-1338: Use Value Formatter with Tooltips
  • AG-1208: Make setFilter mini search case insensitive
  • AG-1382: Allow the detail grid of master detail to be defined with callback
  • AG-1194: Add double click = expand/collapse column group
  • AG-1390: Row drag icon needs better graphic design
  • AG-1384: Create cellStyleParams interface
  • AG-1191: Show context menu when the user right clicks on the header
  • AG-1285: Allow disabling ctrl to add cells to a currently existing range
  • AG-1206: Add source information in the column events so that the user knows where the event came from ie From reset columns button
  • AG-1119: Add api call to hideContextMenu
  • AG-818: Add better support/consistency for addIndex
  • AG-514: Allow columns to be fixed so they can not be moved from their configured position
  • AG-128: Add suppressHidden and suppressPinning to ColDefs


  • AG-1186: Using font icons in a renderer in chrome causes them to not be repainted when resizing the column
  • AG-1068: Ipad - Safari/Chrome Csv Export doesn't work
  • AG-1439: Fix issue creating detail row in master/detail with react
  • AG-1434: Fix page message when no rows are present when using pagination. Shows 1 of 0
  • AG-1431: "Ctrl & A" does not select pinned bottom rows correctly
  • AG-1422: Overlay blocks mouse pointers events in IE10
  • AG-1421: new property popupParent - so popups (eg menu) don't get clipped into grid
  • AG-1392: getBusinessKeyForNode should sanitise input
  • AG-1374: innerRendererFramework doesn't work in the group column for the master grid in a master/detail configuration
  • AG-1373: Can't nest a framework detail grid in a master detail grid. [AG Grid: unable to find bean reference agGridReact while initialising frameworkComponentWrapper]
  • AG-1368: Cell focus should not get darker when browser focus is lost
  • AG-1362: columnVisibleChange triggered when column is moved independently if it is visibility changes
  • AG-1361: Header Group Columns are not getting "ag-header-group-cell-moving" CSS class while being dragged&dropped
  • AG-1351: New components naming not backward compatible when using floating filters (filter: 'date' or filter:'text')
  • AG-1345: Number filter defaultOption: "notEqual" not working
  • AG-1342: When press Tab while editing, grid checks "editable" callback of next cell before current cell applied
  • AG-1339: Home/End keys not working in Windows10
  • AG-1333: getNodeId makes the row render incorrectly if returning partial HTML
  • AG-1283: Cannot override default components with framework components, only with plain JS ones
  • AG-1279: In range date filter breaks if the data contains null dates
  • AG-1278: deprecated api.recomputeAggregates(), use api.api.refreshInMemoryRowModel('aggregate') instead
  • AG-1273: Pagination + Grouping + Enterprise when expanding a group rows bubble up unexpectedly
  • AG-1272: Null pointer exception when trying to save the state of the columns and the passed state is null
  • AG-1258: Have consistent behaviour for indeterminate checkbox across selection and set filter
  • AG-1243: IE Edge issue on column menu/columns clicking on the column label is good, clicking on checkbox closes the menu
  • AG-1181: No rows overlay displayed when col defs are supplied after row data
  • AG-1171: setFilterModel is ignored in an async Filter until the async is resolved
  • AG-1166: Inconsistent timing when calling gridReady/ngAfterViewInit in Angular
  • AG-1134: Remove cyclic dependency - Calling setFocusedCell from within onCellValueChanged causes an infinite loop
  • AG-1120: Dragging an ungrouped column by its group shows empty hint
  • AG-958: On mobile devices - Hiding/Showing columns through the column menu doesn't work
  • AG-831: [enterprise row model] Quickly expanding group node doesn't resolve loading
  • AG-798: [drag event] dragStopped gets called when clicking on a cell
  • AG-663: [react headerComponent drag&drop] Cannot drag & drop header with a custom component into the row groups by
  • AG-608: Default sort is not passed to getRows with 'infinite' rowModelType in AngularJS 1.x


Version 15.0.0 [13-DEC-2017]

For details of this release, check our dedicated blog post for v15.0.0.



  • AG-1161: Issue using ag-fresh and auto group column defs - No padding in the auto group col def
  • AG-1188: Can't use detailCellRendererFramework. Metadata not provided!
  • AG-1127: richSelect editor broken
  • AG-1262: Formatted values ignored for leaf nodes using Tree Data
  • AG-1223: Tree Data, delta update ON + change that causes node to go to a different PATH AND name change not working
  • AG-1219: $cell-horizontal-padding not working with material Theme
  • AG-1212: ensureNodeVisible non-backward compatible behaviour
  • AG-1169: Key creator not working on pivot mode
  • AG-1156: afterGuiAttached not called any more after a filter is rendered in the screen
  • AG-1141: Consistency of notEqual and notEquals in FilterParams.filterOptions, defaultOptions, nullComparator
  • AG-1140: Filter, when specifying both filterOptions and defaultOption, default option is ignored and the first item is picked
  • AG-1064: Set filter not rebuilt after delta updated
  • AG-799: [enterprise row model] purgeEnterpriseCache render problem
  • AG-660: pinned rows - startEditingCell doesn't work with pinned rows
  • AG-596: [menu] Context menu event not firing on full width group rows
  • AG-580: [pinned columns] Spurious ColumnPinned events raised
  • AG-419: [tabbing] tabbing into the grid goes into the wrong cell
  • AG-1259: Example broken - file explorer has no padding on grouping
  • AG-1257: Column menu on non enterprise version has padding on the top in 14.2 not in 14.1
  • AG-1250: Regression issue - Chart example doesn't work any more
  • AG-1248: Fix broken examples in the docs pre Christmas release
  • AG-1233: When editing a cell in pinned row which is on the edge of the hor scroll it breaks the scrolling
  • AG-1227: Rich Select was not allowing editorParams.cellRendererFramework
  • AG-1209: Wrong deprecated error message when using refreshView - Points to refreshRows, should say refreshCells
  • AG-1200: iOs double click doesn't make a cell enter in edit mode, but zooms in
  • AG-1197: Setting floatingFilterComponentParams for column cause removing styles from header
  • AG-1164: When there are checkboxes enabled and you open the context menu. Clicking on the checkboxes don't close the popup
  • AG-1162: ensureDomOrder: true seems to not work when pinning more than one column (for the column order in the pinning section)
  • AG-1133: processRowPostCreate getting called to often, sometimes without the div's in place
  • AG-1125: Context menu not working for cells in ipad (easy to repro)
  • AG-1124: Error opening set filter in infinite scrolling
  • AG-1081: Api.doLayout does not refresh columns after setColumnDef if following steps in Desc
  • AG-1076: row-index not getting updated and containing dupes after group expand
  • AG-1074: Set Filter wrong behaviour when changing values underneath it via editing and selecting deselecting all from filter
  • AG-1065: Bug with groupRemoveSingleChildren = false, groupRemoveLowestSingleChildren= true AND groupDefaultExpanded: 1
  • AG-1033: 'In Range' filter issue
  • AG-955: Checkbox is unchecked after scrolling fast with infinite scrolling
  • AG-940: When using animateCellRenderer, and the values are updated, the tooltip is not updated. Also tooltip for nullables seems to be broken (not displayed)
  • AG-888: [events] Can't remove event listeners
  • AG-819: export - CSV Creator issue in IE10
  • AG-796: [column filter] Ignore debounce when using apply button
  • AG-702: [auto height] scrolling does not work if 'autoHeight' and pinned columns are used together
  • AG-692: [full row editing] Enter on a non editable cell starts editing, but it does not end it
  • AG-637: [printable character] Missing backslash means \ is not a printable character
  • AG-589: [range] Pressing tab while selecting a range throws an error
  • AG-1078: Issue with formatter + getter + complex object + auto group col def
  • AG-857: [headers] HeaderName='' doesn't work for autogroupcolumns
  • AG-605: [edit] Ctrl-Enter resets cell editor to blank
  • AG-330: [iPad] hamburger occasionally appears but cannot be clicked
  • AG-1035: Issue displaying context menu in the enterprise row model


Breaking changes

  • Removed deprecated items with old way of doing header templates as new way of providing header templates was introduced in v14. Removed grid options are getHeaderCellTemplate, headerCellTemplate, headerCellRenderer. Removed column options are headerCellTemplate and headerCellRenderer


Version 14.2.0 [16-NOV-2017]

For details of this release, check our dedicated blog post for v14.2.0.


  • AG-897: Master/Detail. New streamlined and simplified offering, allowing for much easier Master/Detail.
  • AG-530: Implement React declarative offering. Allow Grid & Column definitions to be entirely in markup.
  • AG-891: Themes. Bring all legacy themes in line with new Material theme.

Bug Fixes

  • AG-1094: Fix an issue where async set filters wouldn’t work with the enterprise row model
  • AG-1047: Keep row group after delta updates is broken when using groups
  • AG-993: State not preserved when row grouping and data transactions
  • AG-1098: Angular 1 Issue with filters
  • AG-1056: Issue with enterprise row model and null categories
  • AG-997: suppressAnimationFrame with col pinning scrolling issue when using arrow up/down
  • AG-944: domLayout:autoHeight not working when autoGroupColumn and the group column in pinned left

Version 14.1.0 [07-NOV-2017]


  • AG-895: Angular 5 supported. Now you can use ag-grid with the latest angular version!

Bug Fixes

  • AG-1010: Fix an issue where Polymer would not work in Firefox

Version 14.0.0 [02-NOV-2017]

For details of this release, check our dedicated blog post for v14 aka Halloween.


  • AG-459: Revamped Feature: Tree Data, we have rewritten tree data to make it more powerful and easy to use.
  • AG-459: Unbalanced Grouping. We now show as leaf rows that are part of a group but their grouping key is null.
  • AG-875: If you are a React fan, then you will be excited to lean that AG Grid v14 comes with full support for Asynchronous Components
  • AG-544: You can now provide custom HTML templates to customise how the column headers look.
  • AG-804: Set filters can now have their values specified asynchronously
  • AG-816: More options for grouping with groupRemoveSingleChildren.
  • AG-744: Delta updates now maintain row order.

Bug Fixes

  • AG-910: New component editor uses mergeDeep - causes stack overflow when certain observables are used
  • AG-946: Improve memory usage of vue vs js
  • AG-884: [excel] DateType were restricted to String and Number, added Boolean DateTime and Error
  • AG-901: [regression] SetFilter not displaying (Blanks) any more for null values
  • AG-878: [master detail] Error raised in detail panel when using Cell Editors
  • AG-864: Sanitise Data in tooltip and cellRenderer
  • AG-855: Grids fail on ie11 when dealing with tree data
  • AG-820: [column types] - numericColumn not working
  • AG-817: [cellEditor richSelect] cellEditorParams.values nulls and blanks are not handled well
  • AG-778: [frameworks] Aurelia - Add pinnedRowCellRenderer support
  • AG-777: [aurelia] Add dateComponent support
  • AG-772: Polymer CLI - PolymerFrameworkFactory is not defined
  • AG-882: [Copy&Paste] Copying Blank Cells not working
  • AG-924: If context menu very long, overflow entries are clipped
  • AG-921: ensureRowIndex/Node "middle" not working
  • AG-914: Status bar is not styled in new material theme
  • AG-874: Declarative column def does not match properties from ag-grid
  • AG-872: [grouping] - Group count info lost when reducing column's size
  • AG-850: with material theme, on the tool panel, in the values section (when you drag a column to aggregate), the background is transparent
  • AG-849: on set filter in material theme, if label is to large, we get it onto the other line
  • AG-672: [navigation] Navigating with arrows does not skip the columns marked with "suppressNavigable"
  • AG-433: [navigation] Keyboard Navigation Problems - home & end
  • AG-311: [keyboard navigation] bug in wide columns
  • AG-925: Empty cells retain old cell value tooltip
  • AG-913: getSelectedRowNodes sometimes returns an empty array when it shouldn't
  • AG-935: [material] checkboxes are too dense on main demo
  • AG-934: [material] aggregation function select popup is not styled
  • AG-770: Pinned row data was not getting bound to React correctly/li>


Version 13.3.1 [04-OCT-2017]


  • AG-851: Added support for React 16
  • AG-698: Added support for row class rules
  • AG-754: The floating filter icon now can be configured.
  • AG-776: Aurelia now supports header components and header group components.
  • AG-815: Grid Api for scrolling has been improved so that api.ensureNodeVisible and api.ensureIndexVisible now take an optional second parameter to specify where the node/index should be positioned on the screen. The valid values are: top, middle and bottom. If not specified, would not scroll into the row if already visible in the current viewport.

    Bug Fixes

  • AG-862: Double clicking a group cell was not expanding the group
  • AG-861: Fixed issue with expandAll when using hideOpenParents:true
  • AG-759: Clear button does not work well when also providing filterOptions
  • AG-547: Set filter tristate was not working
  • AG-842: Fix issue with autosize for the columns and the new material theme
  • AG-829: Fix error in CellComp.prototype.stopEditing in certain cases
  • AG-406: Fix issue on touch devices where sub menus and custom menu items wouldn't work.


    Version 13.2.0 [21-SEP-2017]


    • AG-785: Pivoting is now possible in the Enterprise Row Model. If you are using the row model and do not want pivoting, then set grid properties toolPanelSuppressPivotMode=true and toolPanelSuppressValues=true to remove the pivot from the grid UI.
    • AG-795: New callback paginationNumberFormatter to format numbers in pagination panel, should you no like the default formatting. See Example: Customising Pagination.
    • AG-693: Child Count can now be set for Enterprise Row Model.
    • AG-800: Put in callback colDef.suppressKeyboardEvent() to allow suppressing keyboard events while editing.

    Bug Fixes

    • AG-770: pinnedBottomRowData and pinnedTopRowData were not getting changes updated when bound as component property (eg if using React or Angular bindings to change these)
    • AG-667: unnecessary console log "not supported" when using infinite row model and scrolling after cell selection
    • AG-400: rich select - when focus goes off the component, the selection was kept
    • AG-563: When sorting by count in pivot mode it does Alphabetical sort not numerical
    • AG-793: Group expand / contract was not working with double click, now it opens and closes quickly
    • AG-649: Configuring checkbox icons was not getting applied when icons set at the column def level (ie colDef.checkboxSelection=true and colDef.icons = {customIcons})
    • AG-622: Copy Paste with Master Detail Grid was not working

    Version 13.1.x

    Version 13.1.2 [11-SEP-2017]

    Bug Fixes

    • AG-764: fix bug introduced in 13.1 that breaks aurelia cell renderers.
    • AG-761: make suppressExcelExport and suppressCsvExport optional properties.
    • AG-755: innerRendererFramework does not use framework to render leaf nodes in tree data
    • AG-755: fontName property for Excel Export was being ignored
    • AG-755: when using 'aligned grids', removed infinite loop on horizontal scroll
    • AG-756: column virtualisation and full row edit were not working with each other, as user scrolled, newly created cells were not editable.
    • AG-760: tabbing to next row when, when next cell was not virtualised (due to column virtualisation) was failing

    Version 13.1.1 [08-SEP-2017]

    Bug Fixes

    • AG-746: fixing bug where an error is thrown if a renderer returns something other than a string or a Dom Element
    • AG-379: fixing bug where function names where not translated in the tool panel or generated columns
    • AG-683/411: fixing bug where floating filters wouldn't get redrawn if showing/hiding columns from the tool panel
    • AG-473: fixing bug where the context menu wouldn't appear in the pinned are if there were no rows to show
    • AG-738: pinning columns by dragging mouse to edge was broke
    • AG-739: event columnGroupOpened had reference to column rather than the original column group
    • AG-729: ag-row-focus CSS class was getting added to every row
    • AG-743: aligned grids was not working in Firefox


    • Grid callback getDocument() now used for adding clicks to background for closing popups, useful if you don't want to use the standard documents.body (for people using non-standard browsers to GWT embedded)
    • AG-313 excel and csv export now by setting to true the properties suppressCsvExport suppressExcelExport.
    • AG-669 excel export now has a property sheetName that allows to configure the name of the generated Excel sheet.
    • AG-749 headerName is now optional in the columnDef, if your provide a field the name would be derived from the field name
    • AG-737 the menu items 'expand all' and 'contract all' now only appear for InMemoryRowModel
    • AG-651: allow saving / restoring col group 'open/closed' state

    Version 13.1.0 [01-SEP-2017]

    Revert of Breaking Change

    • In v13.0 we introduced the method afterGuiAttached() for the cell renderers. The purpose of this was to allow cell renderers to be created before the DOM existed which gave a marginal performance boost. This has caused issues for frameworks like React and Angular (which sometimes need the parent DOM element to exist before the component is created). For this reason we have reverted back to how things worked prior to v13.0.

      So in summary, v13.0 introduced afterGuiAttached(), v13.1 takes afterGuiAttached() back out.

    Bug Fixes

    • AG-721: When in pivot, it was possible open level groups via API or via double clicking. Bottom level groups in pivot should be locked closed.
    • AG-597: Preserve grouped column order after dragging to new position
    • AG-620: Retain hidden columns when group moved
    • AG-733: resolved an issue with react+redux where the store was not injected

    Version 13.0.x

    Version 13.0.1 [29-AUG-2017]

    Bug Fixes

    • AG-711: blank cells with no defined cell renderer were causing error
    • AG-709: column header attribute was colId instead of col-id
    • AG-706: rows were not rendering sometimes when cellRenderer was not returning back true 'object' or string
    • AG-705: angular 1 cells were not getting compiled
    • AG-710: Fixed an issues where drag and drop did not work as expected in ag-grid-react
    • AG-712: Fixed an issue with headers no longer displaying ellipsis (…) when too narrow.
    • AG-708: The themes are shipped without minification for easier debugging.
    • AG-707: Fixed an issue introduced with new SVG icons - some of the icons passed through the gridOptions stopped working
    • AG-714: Fixed an issue a column with a cellRenderer='group' and with an innerRenderer was not using the innerRenderer when displayed as a leaf cell

    Version 13.0.0 [25-AUG-2017]


    • New rendering engine - now the grid works blazing fast, even on IE9 and IE10! Our tests show the grid work 6 times faster. One better browsers (Chrome etc) you will notice the scrolling much smoother.
    • New material design theme (go to our Main Demo and select the material theme). This is our first step towards modernising all our themes.
    • New SVG icons for all the themes. This is in line with industry best practices. The previous ones are available in the src/styles/legacy directory - you can set them back through the API.
    • AG-664: Added support for Reference Data to manage key / value pairs inside data.
    • suppressScrollLag and isScrollLag no longer used. The new rendering engine doesn't need them due to how it uses animation frames.
    • AG-685: Number and Date filter have an option to configure what to do when filtering null values. See: Null filtering
    • AG-579: Excel an CSV export now works in all row models. If exporting outside of the Client-Side Row Model Only the data loaded for the currently displayed grid gets exported.
    • The event 'itemsAdded' didn't make sense any more since introducing transaction updates in v11. So now the grid fires rowDataUpdated instead.
    • AG-695: The 'type' property on a ColDef now supports an array of column type keys
    • AG-634: Text filter has the parameter caseSensitive.
    • AG-679: Improved error handling when Column Types are not correctly configured

    Bug Fixes

    • The HTML attribute 'row' on the row div was showing the index. It was supposed to be the row. Also row-id was showing the business key. To avoid confusion, move everything to dash-case (not CamelCase), the following are now the attributes:
      • row-id - matches the row node id.
      • row-index - matches the row index (0..n, or for pinned top rows and for pinned bottom rows).
      • row-business-key - matches the business key (if user implements callback getBusinessKey())
      Similarly colId on the cell is now col-id. These fixes / breaking changes only impact your code if you were using these in CSS selectors outside of the grid.
    • AG-697: Fixed an issue where export group headers was not working correctly when more than 2 groups of headers
    • AG-696: Fixed issue where column groups kept expand / collapse icons even when group is no longer expandable
    • AG-654: Fixed issue with pinning rows when pivoting
    • AG-615: Fixed issue when moving column groups with marry children
    • AG-380: Fixed an issue when using a framework like angular/react... cellRendererFramework in a column was not considered when grouping by that column
    • AG-253: Support for innerRendererFramework
    • AG-50: Support for cellRendererFramework inside filterParams
    • AG-688: Fixed compatibility issue with Internet Explorer 10

    Breaking Change

    • In cell renderer, the eGridDiv and eParentOfValue no longer exist in init(), instead they are in afterGuiAttached(). We don't like breaking changes, however this was necessary to allow the new rendering engine.

    Version 12.0.x

    Version 12.0.2 [26-JUL-2017]

    Bug Fixes

    • AG-646: Enhancement: updateRowData now returns the rows updated.
    • AG-645: Bugfix: Error creating bean CsvCreator due to minifying issues. Still causing issues after 12.0.1

    Version 12.0.1 [25-JUL-2017]

    Bug Fixes

    • AG-645: Bugfix: Error creating bean CsvCreator due to minifying issues.
    • AG-636: Bugfix: Normal rowModelType was not deprecated properly.
    • AG-639: Bugfix: Date component was still broken after previous fix AG-541/600
    • AG-633: Bugfix: Fixed bug where "not contains" filter would not work with empty strings
    • AG-641: Bugfix: When using row groups and footer rows, deprecation warning message was printed to the console, fixed it so it is now (internally grid was using a deprecate method).

    Version 12.0.0 [21-JUL-2017]

    New Features


    • Rewrite of Grid Refresh. There were once a few similar confusing methods. There are are two clear and clean methods: cellRefresh() and redrawRows(). See 'Changes to Refresh' below for more details.
    • Update Documentation: Getters and Formatters.
    • Update Documentation: Setters and Parsers.
    • Renamed 'Master / Slave' to 'Aligned Grids' so that it's not confused with 'Master / Detail', which is nothing to do with 'Aligned Grids'.
    • Renamed 'Pinned Rows' to 'Pinned Rows' because it was confusing, now we have Pinned Rows and Pinned Columns which are similar, but one for rows and one for columns.


    • AG-572: For accessibility, rows in the DOM are now placed in the same order you see on the screen. To turn on, set property ensureDomOrder=true.
    • AG-469: Enhancement: new event for column 'menuVisibleChanged', gets fired when column menu is shown / hidden. Useful if doing your own headerComponent and want the header to look different when menu is shown / hidden.
    • Enhancement: Now header DIV will contain class ag-column-menu-visible when the column menu is showing.
    • AG-619: New option to always show status bar
    • AG-523: Allow 'shift-click' selections on all row models
    • AG-519: ASet filter use the checkboxes specified by the user, not the browser checkboxes

    Bug Fixes

    • Bug fix: when using multiple group auto columns and header checkbox selection, the header checkbox now only appears in the first column header.
    • AG-592: Bugfix: Allow empty groups if the user provides empty strings, not null or undefined
    • AG-541/600: Bugfix: [Date component] Date component not working when specified in both filter and floating filter
    • AG-586/584: Bugfix: Excel and CSV export are not using the default fileName when exporting
    • AG-479: Bugfix: If you group dynamically in pivoting, the filter column shows an empty set
    • AG-366: Bugfix: Multiple sort numbers were disappearing after horizontal scrolling
    • AG-317: Bugfix: Agg/Pivot Display Issues With Longer Col Names
    • AG-578: Bugfix: Exception raised when performing range selection and filtering on the enterprise row model
    • AG-327: Bugfix: Cumulative sort numbers disappear when refreshHeader is called
    • AG-375: After calling columnApi.setState() and doing multi-column sort, the sort numbers were not getting displayed beside the relevant column.
    • AG-602: Bugfix: Enterprise Row Model success callback interface was missing 'lastRow'.
    • AG-617: Bugfix: Enterprise Row Model unable to perform full width groups
    • AG-625: Now Enterprise Row Model works with complex objects (eg valueGetters and fields with dot notation).
    • AG-624: 'select' editor, when you select a value, was closing 'full row edit'. Now select works fine with 'full row edit'.
    • AG-593: Added missing exports to exports.ts
    • AG-628: Bugfix: Enterprise Data Source can now be set as a grid property (previously API had to be used).
    • AG-629: Bugfix: Row order now maintained when using AG Grid Enterprise and inserting with transaction using 'addIndex'.
    • AG-631: The internationalisation text 'drag here to aggregate' was incorrectly showing the 'drag here to pivot' message.

    Breaking changes

    Changes to Refresh

    The multiple refresh methods in the grid were confusing. We reviewed all the methods and replaced them with two simple equivalents: api.refreshCells(params) and api.redrawRows(params). For 99% of the time, you will call api.refreshCells(params). However - given the grid now has change detection, you may find that you don't need to call refresh ever again.

    • refreshView() -> use api.refreshCells(params) instead
    • softRefreshView() -> use api.refreshCells(params) instead and include (the volatile) columns in params
    • refreshRows(rowNodes) -> use api.refreshCells(params) instead and include rows in params
    • refreshCells(rowNodes, colIds) -> use api.refreshCells(params) instead and include rows and columns in params
    • refreshGroupRows() -> use api.refreshCells(params) instead and include rows and columns in params

    Other API And Property Changes

    The following API and property changes were done around the renaming of pinned rows and aligned grids. All this is done to make the grid API easier to understand and interface with.

    • colDef.floatingCellRenderer -> colDef.pinnedRowCellRenderer
    • colDef.floatingCellRendererFramework -> colDef.pinnedRowCellRendererFramework
    • colDef.floatingCellRendererParams -> colDef.pinnedRowCellRendererParams
    • colDef.floatingValueFormatter -> colDef.pinnedRowValueFormatter
    • gridApi.setFloatingTopRowData-> api.setPinnedTopRowData
    • gridApi.setFloatingBottomRowData-> api.setPinnedBottomRowData
    • gridApi.getFloatingTopRowCount-> api.getPinnedTopRowCount
    • gridApi.getFloatingBottomRowCount-> api.getPinnedBottomRowCount
    • gridApi.getFloatingTopRow-> api.getPinnedTopRow
    • gridApi.getFloatingBottomRow-> api.getPinnedBottomRow
    • gridApi.getFirstRenderedRow-> api.getFirstDisplayedRow
    • gridApi.getLastRenderedRow-> api.getLastDisplayedRow
    • gridOptions.floatingTopRowData -> gridOptions.pinnedTopRowData
    • gridOptions.floatingBottomRowData -> gridOptions.pinnedBottomRowData
    • gridOptions.slaveGrids -> gridOptions.alignedGrids
    • rowNode.floating -> rowNode.rowPinned

    AG-591: Breaking Change to Cell Renderer - To Support TypeScript 2.4

    cellRenderer.refresh() is now a mandatory method and returns boolean (previously it was optional and returned void). This is to support TypeScript 2.4 that mandated a breaking change (TypeScript 2.4 doesn't allow interface with just optional methods). Check the cellRenderer Refresh documentation for details on how to now implement this method. In summary, if you implemented this method before, just make sure you return true. If you did not implement this method before, then implement an empty version of it that returns false.

    Breaking Changes

    • cellRenderer.params.valueGetter() is now called cellRenderer.params.getValue()
    • Grid property slaveGrids is now called alignedGrids.
    • Grid property paginationStartPage is gone, use api.paginationGoToPage(x) instead.

    Version 11.0.x

    Version 11.0.0 [26-JUN-2017]



    • AG-513 - Improved row grouping. The preferred way to do row grouping now is using auto group columns. All the examples in the docs have been updated to use when possible auto group columns. The new row grouping makes group sorting work out of the box and fixes some bugs related with sorting and row grouping
    • AG-529 - Improved the way grid property changes are handled in React.
    • AG-401 - New property menuTabs to specify which column menu tabs to show and in which order.
    • AG-38 - New accessibility features and documentation.
    • AG-517 - Review of valueGetters and valueFormatters and introduced valueSetters and valueParsers. See new documentation pages Values and Expressions and Cell Expressions for details.
    • AG-551 - Added Pivot Total Columns - allows expanding / collapsing of pivot columns into totals
    • AG-515 - New property gridOptions.accentedSort. Set to true to specify that the sort should take into account accented characters, if this feature is turned on the sort will perform slower.
    • AG-182 - New property clipboardDeliminator to specify deliminator to use while copying to clipboard.
    • AG-398 / AG-371 - New property colDef.suppressPaste to suppress pasting from clipboard for certain cells.
    • AG-73 - Now when editing or updating data, if value is not different, data is not updated, cell is not refreshed and no 'valueChangedEvent' fired. This was important when tabbing through cells while editing, previously events were first as you navigate cells even though the value was not changed.

    Bug fixes

    • AG-557 - Fixed issue where rowGroupPanelShow would not work if using any framework. ie Angular, React...
    • AG-539 - Fixed issues in the react examples
    • AG-347 - Fixed issue where in some cases groupSuppressAutoColumn : true Makes copy not work on the group column
    • AG-481 - Fixed issue where multi column sort wouldn't work when sorting many columns once, including row group columns
    • AG-348 - Callbacks processCellForClipboard() and processCellFromClipboard() now get invoked with doing Ctrl + D (copy range down)
    • AG-199 - sizeColumnsToFit now fires an event with parameter 'finished=true'.
    • AG-199 - autoSizeColumns now fires just one event, previously it was firing two events unnecessarily.
    • AG-82 - Resizing groups now respects any children columns that are not resizable.
    • AG-207 - MarryChildren was not working when columns were hidden, now works.
    • AG-154 - Typing non-latin letters on focused cell now starts cell editing.
    • AG-543 - Bugfix - Regression/Breaking Change - rows are inserted in reverse order

    Breaking Changes

    • Aggregation data and group data are no longer stored in, instead they are stored in rowNode.groupData and rowNode.aggData. If you are accessing for aggregation or group data, this will now not work.
    • Removed property suppressUseColIdForGroups, because of new way of storing grouped data in the rowNode, it is not needed.
    • If you are providing your own group display columns (ie columns to show the groups, not columns to group by) then you have to specify colDef.showRowGroup=true to get the grid to return the right values for the chosen group. This is explained in Show Row Group.
    • gridOptions.groupColumnDef has been renamed to autoGroupColumnDef.
    • gridOptions.enableFilter now needs to be specifically switched on to get the filter menu in the columns.
    • Deprecated cellRendererParams properties: restrictToOneGroup. See row grouping docs on new way to restrict to one group.
    • Deprecated cellRendererParams properties: keyMap. The 'keymap' solution was before you could group using valueGetters. If you want the group to have a different value, use either a valueGetter, or use a cellFormatter to format the value.
    • Deprecated gridOptions properties: suppressMenuFilterPanel suppressMenuMainPanel and suppressMenuColumnPanel, use colDef.menuTabs instead. Instead use colDef.menuTabs property to set what tabs you want.

    Version 10.1.x

    Version 10.1.0 [08-JUN-2017]



    • AG-483: Delta updates - now you can add / update / remove rows without having to call 'setRowData(rowData)' with new data each time. Means you can keep the grids
    • AG-420: Support for Redux Style Immutable Stores, to work better with React applications.
    • state (selection, grouping etc) while new rows are set.
    • AG-114: Auto height grid: Allow the grid to resize it's height to the number of rows so that there is no vertical scrolls.
    • AG-392: Number floating filters now can be any number, previously it was only possible to filter by positive non decimal numbers. This can be seen in our main demo page
    • AG-453: Added optional debounce configuration to the keyboard input in the filter box and the column filter. This is configured by the property debounceMs and applies to the text, number and set filter.
    • AG-506: Added an API call api.refreshInMemoryRowModel(step) to easily request the grid to be filtered, sorted, grouped …
    • AG-505: Added new API methods to get nodes based on the displayed index or the node id getRowNode(id)
    • AG-512: Improved the performance of the tree data.
    • AG-501: Allow tooltips in the context menu
    • AG-451: Allow the user to dynamically change the values of the set filter on the fly.

    Bug fixes

    • AG-508: Fixing bug where it would be not possible to filter by 0 in a number floating filter
    • AG-493: Fixing a bug where if using auto group columns and restoring their state to be sorted would not sort the auto-group column
    • AG-468: New callback to allow modifying any popup shown by ag-grid just before they are about to be displayed
    • AG-323: Fixed bug where floating filters wouldn't work in the frameworks
    • AG-442: Fixing bug where suppressing a filter would not prevent the filter from initialising, hence potentially causing a performance problem
    • AG-428: Fixing bug where more than two levels of grouped headers don’t get exported.
    • AG-488: Fixing bug where set filters with newRowsAction='keep' wouldn’t work if one of the values selected in the mini filter is blank
    • AG-495: Fixing a bug where navigation keys would cause the cell editing to stop (ie, Home, End, Page Up, Page Down)

    Breaking Changes

    • Deprecated Methods: insertItemsAtIndex(), removeItems(), addItems(), use updateRowData() instead.
    • Property 'forPrint' replaced with 'domLayout', if using forPrint, then set domLayout="forPrint" instead.

    Version 10.0.x

    Version 10.0.1 [24-MAY-2017]

    • AG-475: There were missing exports causing compilation problems in typescript

    Version 10.0.0 [22-MAY-2017]


    • New row model type Enterprise Row Model.
    • AG-471: All the events are now asynchronous. afterFilterChanged event dropped.
    • AG-461: By default, quick filter no longer caches the values. This means quick filters work a bit slower, but are more dependable (cache does not go out of date). The cache can still be turned on using the property cacheQuickFilter=true if worried about performance.
    • AG-104: The headers height now is dynamic and can be configured to support vertical text orientation.
    • AG-462: Allow custom CSS classes in context menu items through the property cssClasses
    • AG-388: New grid property suppressAggAtRootLevel to allow the suppression of aggregation at the root Node level

    Bug Fixes:

    • AG-449: Merging styles in Excel export would fail if mixing two partial styles in one cell
    • AG-444: Removed the necessity to add a defaultGroupComparator to have groups sorting by default
    • AG-444: Removing sort on a column will restore the sort to the sort provided from the user in all the cases.
    • AG-372: Popup editors when stopEditingWhenGridLosesFocus: true would disappear when the user will click on them
    • AG-403: Fixing edge cases when openGroupByDefault and removeParents would case the grid to show the wrong row aggregations
    • AG-384: Fixing a bug when unpinning a column will cause empty rows shown on the main body area of the grid
    • AG-377: Property restrictToOneGroup didn't work when field was missing in colDef (ie value getter used instead).
    • AG-452: Using groupColumnDef would cause CSV/Excel export to fail
    • AG-450: Fix bug when the only option specified for a filter is in range filterOptions:['inRange']
    • AG-445: Cell editors destroy method is not mandatory any more
    • AG-259: sizeColsToFit not working in frameworks when immediately invoked
    • AG-335: floatingFilterWrapperComponent prints readable error messages when the custom implementations are missing mandatory methods
    • AG-457: Angular components prints readable error message when the method agInit is missing
    • AG-464: The grid API is passed as parameter to all the components in the init method
    • AG-328: Fixed suppressSorting for Set Filters, it wasn't working properly

    Breaking Changes:

    • The cache in 'infinite row model' now deals with blocks of rows, not pages of rows. To avoid terminology confusion (with pagination feature) the following name changes were made:
      • Property maxPagesInCache renamed to maxBlocksInCache
      • Property infiniteBlockSize renamed to cacheBlockSize
      • Property paginationOverflowSize renamed to cacheOverflowSize
      • API refreshInfinitePageCache renamed to refreshInfiniteCache
      • API purgeInfinitePageCache renamed to purgeInfiniteCache
      • API getInfinitePageState renamed to getBlockCacheState

    Version 9.0.x

    Version 9.1.0


    • Enhancement (AG-346): Floating Filters/Performance: Floating filters won't slow down vertical scrolling any more as they lazily interact with the filters now.
    • Enhancement (AG-399): Excel export: Allow additional excel style property dataType to force custom data type for a column
    • Enhancement (AG-390): Excel export: Allow customHeader() and customFooter() callbacks to add custom rows either at the header or the footer of the exported excel file
    • Enhancement (AG-387): Text filter: Allow textCustomComparator()
    • Enhancement (AG-378): Filter: Added filterParam filterOptions which takes a string array of valid filter types that the user can select from the filter UI in the filter menu
    • Enhancement (AG-368): added columnApi and grid api api to header comp params.


    • Bugfix (AG-391): Number Filter: Fixed bug where filtering by 0 will filter everything out
    • Bugfix (AG-382/359): Date Filter: Fixed bug where using the cross to clear the date filter will throw an error
    • Bugfix (AG-373): WebComponents: initialiseAgGridWithWebComponents no longer was working
    • Bugfix (AG-370): Keyboard navigation: Keyboard navigation should skip full with rows

    Version 9.0.3


    • New property suppressScrollOnNewData. When true, the grid will not scroll to the top when new row data is provided. Use this if you don't want the default behaviour of scrolling to the top every time you load new data..


    • Property groupDefaultExpanded was not working for expanding all groups in pivot mode.
    • Fixed typescript type of the property paginationAutoPageSize from number, to the correct type boolean.

    Version 9.0.2

    Bug Fix: Fixed Web Components issue, error "Cannot redefine property: infiniteBlockSize" solved.

    Version 9.0.1

    Bug Fix: License key was broken.

    Version 9.0.0

    Big Feature: Client Side Pagination (AG-91)

    AG Grid 9.0.x introduces Client-Side Pagination. This replaces the old 'pagination row model' which forced you to bring back pagination pages one page at a time from the server. The client side pagination works with all row models and paginates on the client side. This means you have pagination work with the default Client-Side Row Model (and do filtering, sorting, grouping, pivoting etc on the data on the client side), or you can also put pagination in front of the viewport row model or Infinite Scrolling Row Model.

    Big Feature: Improved Column Groups (AG-315)

    AG Grid 9.0.x also introduces multiple columns for groups and multi columns while grouping.

    • Enhancement: New Client-Side pagination that works with all row models.
    • Enhancement: New event bodyHeightChanged, gets called when the body height changes, thus the number rows rendered may change. This is used by the grid for setting the page size when paginationAutoPageSize=true.
    • Enhancement: First pass of Server-Side Row Model, to allow AG Grid users to see work in progress for our server side filtering, sorting, grouping and aggregation.
    • Enhancement (AG-349): Filter: Provided 'in range' filters now have parameter inRangeInclusive to include the start and end range values.
    • Enhancement (AG-334): New event componentStateChanged: When frameworks (eg Angular 2, React, VueJS, Aurelia, Web Components) change a grid property, this event gets fired AFTER the grid has actioned the change.
    • Enhancement (AG-318): New property allowContextMenuWithControlKey, removes suppression of the context menu when ctrl is held down.
    • Enhancement (AG-307): New property stopEditingWhenGridLosesFocus, for cell editing, so that taking focus off the grid stops the editing and saves values.
    Bug Fixes:
    • Bugfix (AG-355): Set Filter: setModel(null) was failing when selectMiniFilter = true.
    • Bugfix (AG-351): For Print: sorting and filtering was broken in forPrint.
    • Bugfix (AG-320): For Print was not working when using api.setRowData()
    • Bugfix (AG-314): (Angular 1.x) $scope got dropped form cellClass callback, is now back in.
    • Bugfix (AG-274): Column grouping and pinned columns were giving wrong header widths.
      Refactor: Virtual Row Model is now called Infinite Row Model. All properties and APIs related to this are now call 'Infinite' eg setVirtualRowCount() is now setInfiniteRowCount(). Grid will log to console and help you when you are using the old method and property names.

    Version 8.2.x

    • Enhancement: Floating Filters.
    • Enhancement: Pagination API.
    • Enhancement: Pagination now scrolls to top when you load new page.
    • Enhancement: Provided filters now have 'Clear Filter' button.
    • Enhancement: Sorting now shows order of sort when sorting by multiple columns.
    Bug Fixes:
    • Bugfix: exportDataAsExcel no longer throws error when called with no arguments.
    • Bugfix: Excel Export wasn't working with Open Office, now working.
    • Bugfix: Excel Export was sometimes missing number values, now fixed.
    • Bugfix: 'Select All' checkbox now works with pagination.
    • Bugfix: Cell refresh now gets cellClassRules reapplied.
    • Bugfix: Horizontal DragService now uses gridOptions.getDocument().

    Version 8.1.x

    Small Breaking Change:

    For Angular 2+ users only: ag-grid-ng2 repository renamed tp ag-grid-angular. So in your dependencies (package.json), reference ag-grid-angular, not ag-grid-ng2.

    • Enhancement: Angular repository renamed (used to be ag-grid-ng2, is now ag-grid-angular). This is because Google want to call Angular 2 just Angular now.
    • Enhancement: CSS class 'ag-column-hover' now added to headers when mouse over column.
    • Enhancement: Text Filter now has 'not contains' option.
    • Enhancement: Text Filter no longer applies lower case to model.
    • Enhancement: Set Filter has option to hide the mini search.
    • Enhancement: Number Filter now has range.
    • Enhancement: Added suppress quotes option for copySelectedRowsToClipboard.
    Bug Fixes:
    • Bugfix: Angular 2 - angular directive was causing too many dirty checks
    • Bugfix: AMD - Removed circular dependency in context.js which impacted AMD.
    • Bugfix: api.getDataAsCsv() parameters are now optional.
    • Bugfix: Mouse can now drag(ie movable) custom header groups.
    • Bugfix: Context sub-menu no longer gets clipped when to large.
    • Bugfix: suppressSorting now works on mobile (ie touch).
    • Bugfix: Now when you ungroup, the sort state will be removed if you are sorting by the group column.
    • Bugfix: processCellFromClipboard was not getting called.
    • Bugfix: Excel Export was not working for Open Office.
    • Bugfix: Checkbox was in wrong position when pinning the column.

    Version 8.0.x

    AG Grid 8.1.1, AG Grid Enterprise 8.1.1

  • Bugfix: Fixed bug where the export to Excel will not export numerical cells
  • AG Grid 8.1.0, AG Grid Enterprise 8.1.0

    • Enhancement: VueJS Framework Support! Big welcome to the VueJS community.
    • Enhancement: Header Component and Header Group Component. Allowing full customisation of the headers.
    • Enhancement: Excel Export now includes full support for all Excel XML properties.
    • Enhancement: New feature Header Checkbox Selection.
    • Enhancement: New CSS class ag-column-hover to allow highlighting of hovered column.
    • Enhancement: If one cell in clipboard, you can now select a range of cells to copy that one value into entire range.
    • Enhancement: Navigation support for Page Up, Page Down, Home, End, Ctrl+left, Ctrl+right.
    • Enhancement: New APIs api.selectAllFiltered() and api.deselectAllFiltered()
    • Enhancement: Added skipRefresh to the add/remove row APIs, so if you want to add / remove lots of rows, you only refresh on the last update.
    • Enhancement: Property groupDefaultExpanded now works with flower nodes
    • Enhancement: New property suppressTabbing to disabled grids tabbing functionality.
    Small Breaking Changes:
    • Breaking Change: TypeScript Users Only: Interfaces names changed for components. Check the documentation for the names of the interfaces. Eg ICellRenderer is replaced with ICellRendererComp. This is to position AG Grid for supporting components from other frameworks ('Comp' means an AG Grid component, to differentiate from a cellRenderer built in eg Angular or React).
    • Breaking Change: TypeScript Users Only: Interface names used in Angular 2 are also changed slightly. Again check the documentation for the new names.
    • gridOptions.checkboxSelection is now gone, use defaultColDef.checkboxSelection instead
    Bug Fixes:
    • Bug Fix: Editing works for off-screen cells - so if editing full rows, off screen cells don't get reset.
    • Bug Fix: ctrl+c now works, even if focus cell is scrolled out of view.
    • Bug Fix: Set Filter now supports null values when getting and setting the model.

    Version 7.2.x

  • Enhancement: Excel Export.
  • Enhancement: Date Filter.
  • Enhancement: richSelect cell editor now works with empty strings.
  • Enhancement: new property enableGroupEdit, Set to true to allow editing of the group rows.
  • Enhancement: RTL verified to work with For Print.
  • Enhancement: New API getDocument() for overriding what document is used. Currently used by Drag and Drop (may extend to other places in the future). Use this when you want the grid to use a different document than the one available on the global scope. This can happen if docking out components (something which Electron supports).
  • Enhancement: Context menu now has CSV Export and Excel Export.
  • Enhancement: New api.onSortChanged(), call it if you update a cell with a new value and you want to apply the sort order again.
  • Enhancement: New property embedFullWidthRows.
  • Breaking Change: IAfterFilterGuiAttachedParams now called IAfterGuiAttachedParams (impacts TypeScript users only)
  • Bugfix: callback processCellForClipboard was not getting used when copying just one cell (ie not a range).
  • Bugfix: gridOptions.onItemsRemoved was incorrectly called gridOptions.onItemsRemove.
  • Bugfix: Column menu was disappearing while doing vertical scroll. Now it only disappears for horizontal scroll. This impacted when filtering changed the v scroll position (eg if everything filtered, scroll set back to top)
  • Bugfix: api.isAyFilterPresent() was returning true after api.setRowData() was called with new data and newRowsAction was not 'keep'.
  • Bugfix: horizontal scroll was sometimes not possible when no rows, now it is (so you can access column menu on RHS even if no rows).
  • Bugfix: classes ag-row-group-expanded and ag-row-group-contracted were not getting applied as group expanded and contracted.
  • Bugfix: if doing popup editing, and you click outside the grid, the edit is lost, which is different to click on another cell, where the edit is kept. Now they are in sync, clicking outside the pop always keeps the edit.
  • Bugfix: headerCellTemplate had classes in agText element removed. Now they are left alone.
  • Bugfix: rowIndex was missing from cellEditor params
  • Bugfix: CSS class ag-row-focus class was not getting applied to right row when rows were ordered or filtered
  • Bugfix: event selectionChanged was not getting fired when you had more than one row selected, then just clicked one row (all other rows get deselected).
  • Bugfix: api.sizeColumnsToFit() was incorrectly working out the vertical scroll value - meant it was out by the scroll width sometimes in its calculations.
  • Version 7.1.x

  • Enhancement: RTL support, so now you can support languages that go from right to left.
  • Enhancement: new events: rowEditingStarted, rowEditingStopped, cellEditingStarted, cellEditingStopped.
  • Enhancement: new property suppressClickEdit.
  • Enhancement: added api.clearFocusedCell()
  • Enhancement: added sendToClipboard
  • Enhancement: added custom keyboard navigation
  • Bug Fix: Sub menu was not working in Firefox, now fixed.
  • Bug Fix: Copy to clipboard was not copying focused cell then range selection was turned off.
  • Bug Fix: Pinned right header used to be mis-aligned by the scroll width. Now it's aligned.
  • Documentation: Angular 2 Examples Project now has examples for both SystemJS & SystemJS-Builder, Webpack and Angular-CLI
  • ag-grid-angular-7.1.2

    Bug Fixes

    • Bug Fix: TypeScript was incorrectly trying to compile main.ts (when under node_modules) - exclude main.ts from npm publish for now
    • Bug Fix: Unpin versions for Angular and Zone to be more flexible

    Version 7.0.x

    ag-grid-7.0.2, ag-grid-enterprise-7.0.2

    Bug Fixes

    • Bug Fix: For virtual pagination row model only, calling api.insertItemsAtIndex() messed up the row indexes, now fixed.
    • Bug Fix: For viewport row model only, selected row was failing when the node ID of the selected row changed.
    • Bug Fix: When animating the rows, the selected cell highlight was getting confused. Now stays with the same row index (so if rows move, focus goes to new row in the selected index, the index doesn't move).
    • Bug Fix: grid event onRowClicked was not working for fullWidth rows (including when fullWidth was used for grouping).
    • Bug Fix: count function was not working when row grouping had 2 or more columns.
    • Bug Fix: callbacks getBusinessKeyForNode and checkboxSelection were missing for React. in now.
    • Bug Fix: isCancelAfterEnd was getting called even if ESC was pressed, now no longer.


    • Enhancement: New api methods api.tabToNextCell() and api.tabToPreviousCell() for navigation.
    • Enhancement: Filter type 'not equals' now works for empty string values (they should pass the filter).
    • Enhancement: headerValueGetter now has an extra parameter 'location' which is on of {csv, clipboard, toolPanel, columnDrop, header}. It allows you to have a different name for the column dependent on where it is.

    Version 7.0.x


    • Enhancement: Aurelia Support.
    • Enhancement: Full Angular 2 AOT Support.
    • Enhancement: New option for grouping Remove Single Children, so groups will only one child are removed.
    • Enhancement: Now menu's (column menu and context menu) can have custom sub menus.
    • Enhancement: Animation of Rows - now rows will animate after sort, filter and row group open / close.
    • Enhancement: New API - rowNode.setExpanded(boolean) - To open / close a row group row.
    • Enhancement: api.getValue() now works with pivot columns
    • Enhancement: Row height can now be changed after the rows are initially set.
    • Enhancement: New property - groupSelectsFiltered, when set, if you select a group, unfiltered items do not get selected.
    • Enhancement: Angular 1 - Added $scope to cellEditor params.
    • Enhancement: Now when multiple ranges are selected, copy to clipboard copies all ranges, previously only first range was copied.

    Bug Fixes

    • Bug Fix: columnApi.setColumnAggFunct() => renamed to columnApi.setColumnAggFunc() (took out the 't' at the end, it was a typo)
    • Bug Fix: paste from clipboard now skips non-editable columns and continues with rest of row (before it stopped and didn't complete the row)
    • Bug Fix: copying selected rows to clipboard was not possible in Viewport. Now is possible.

    Breaking Change

    • If you are using Angular 2 components inside ag-Gri, due to changes in the Angular 2 library, we had to change how Angular 2 cell renderers are configured. Please check the new documentation on what to change.

    Version 6.4.x

    ag-grid-6.4.2, ag-grid-enterprise-6.4.2

  • Enhancement - column group / pivot panels don't try and do anything if user rearranges, but leaves things in same order as the start.
  • ag-grid-6.4.0, ag-grid-enterprise-6.4.0, ag-grid-angular-6.4.0, ag-grid-react-6.4.0,


  • Big Enhancement - for grouping, pivoting and values, now you can reorder the columns in the drop zones.
  • Small Enhancement - added toolPanelClass so you can style tool panel items.
  • Small Enhancement - now if you scroll the grid, if a column menu or context menu are open, they will close, otherwise the menu gets out of line with the columns & cells.
  • Bug Fixes

  • Bugfix - for setFilter, setModel was not updating the 'Select All' button, is now
  • Bugfix - when using api.addItems() for standard row model (ie no virtual pagination or viewport) then items were added in reverse order.
  • Bugfix - in IE and Edge, when you edit a cell, then click another cell, the other cell doesn't get focus (eg navigation keys don't work) - appears to be a glitch in IE And Edge, this bug fix works around it
  • Breaking Change

  • Breaking Change - the following events now have the final list of columns, rather than those added / removed: columnRowGroupChanged, columnPivotChanged, columnValueChanged
  • Version 6.3.x


    • quick filter - added colDef.getQuickFilterText to allow overriding of quick filter text
    • performance option - added property suppressRowHoverClass, so if you do not require the row hover class, it's expensive, set this to true for slight performance tweak
    • ag-grid-react - now cellRenderers get params.reactContainer so the cell renderer can style the wrapping div
    • ag-grid-react - container for react cells now has css class ag-react-container, to allow CSS selection for styling
    • clipboard - added callback processCellFromClipboard(), to allow you to change data as it's been copied from the clipboard.
    • scrolls - new property 'scrollbarWidth', so you can tell grid how much padding to use for scrollbar. Handy if providing non-standard scrollbars to grid and need to provide alternative padding to use.
    • grid size - added api.checkGridSize(), so you can force grid to check its size. Handy if you create the grid OUT of the dom, then insert it, then you want to tell grid to work out what rows and columns to render.
    • icons - added customisation of the following icons: menuPin, menuValue, menuAddRowGroup, menuRemoveRowGroup, rowGroupPanel, pivotPanel, valuePanel
    • suppress touch - added property suppressTouch to turn off touch support, if you don't want it.

    Performance Enhancements

    In our tests the demo page used to take 1600ms to expand a row after grouping, it's now down to 600ms. We haven't tested the other browsers, but you can expect these changes to at least have some positive improvements on them also. The changes we made were:

    • introduced Document Fragment to build DOM offline when building rows
    • cells no do not have any events, all event handling done at grid level - means for example, where before was adding a keydown event to every cell, not it is added to grid and gri work out which cell, means not adding/removing lots of listeners as grid is scrolling rows
    • took events out of rows (same trick as with taking out cells) with the exception of hover listeners
    • icon images are now cloned, rather than creating new ones each time one is needed

    Bug Fixes

    • groupRowRendererFramework, groupRowInnerRendererFramework and fullWidthRowRendererFramework were getting ignored when getting set as properties in Angular 2 and React.
    • innerRenderer (for group rows) was not getting destroy called, is now.
    • when doing full row edit, calling api.stopEditing() fired event rowValueChanged for each row, not it only calls it for the editing row.
    • when using tree data, an there were only groups (all groups were empty), the 'no rows' overlay was showing. Not is doesn't sort when only groups.
    • api.ensureIndexVisible() will now also render the rows in the same action, previously you had to wait for the grid to pick up the scroll event (which happened immediately after) to render the rows. This causes problems if you wanted to access the row immediately after ensuring it was visible (eg to start editing).
    • Formatted values can now be empty strings, previously empty strings were ignored and the original value was presented.
    • grid options was missing onRowValueChanged property
    • fixes an issue, when left and right pinned on IE, left pinned didn't sync scroll with body always.
    • Set Filter - 'Select All' checkbox was not getting cleared when all items were unchecked.
    • Set Filter - When new rows got loaded into the grid, the filter icon was not cleared down if filter was reset. Now it is.

    Version 6.2.1

    ag-grid 6.2.1, ag-grid-enterprise 6.2.1

  • Bugfix - range select threw error for virtual pagination when drag went below the available rows.
  • Bugfix - avg aggregation function was failing when value was undefined or null.
  • Bugfix - export to CSV was failing when doing count aggregation on data, now fixed.
  • Version 6.2.x

  • New Feature - Touch support.
  • New Feature - Default column and column group definitions. So instead of declaring common properties in each column, define them once in the default.
  • New Feature - Angular 2 Grid Creation via Markup. Option to create Grids with Markup (declaratively).
  • Enhancement - When using checkbox selection in groups, the property cellRendererParams.checkbox can be a function, so you can be selective on which rows have checkboxes.
  • Enhancement - Viewport row model now works with getRowNodeId(), so selection can now work with business keys.
  • Enhancement - Removed sorting the order of value columns when in pivot mode - now value columns displayed in order added.
  • Enhancement - Added 'pivotComparator' to allow defining order of pivot columns.
  • Enhancement - Added 'suppressToolPanel' to column definitions, so suppress columns from appearing in the tool panel.
  • Enhancement - headerValueGetter now also works for column groups.
  • Enhancement - Added processSecondaryColDef and processSecondaryColGroupDef for pivoting, to allow modification of the pivot columns.
  • Enhancement - Added onlySelectedAllPages to CSV export - so if doing pagination, exports selected across all pages.
  • Bugfix - suppressSorting in Set Filter was not getting used, now fixed.
  • Bugfix - export to CSV was failing when doing avg aggregation on data, now fixed.
  • Bugfix - single click editing was resetting the edit when you clicked on an edited cell. This was introduced in the last release with 'fullRowEdit'. Now fixed.
  • Bugfix - when grouping, full width rows were not getting mouse scroll events processed, noe fixed.
  • Bugfix - when pasting, the cells did not get refreshed if first row was not editable.
  • Bugfix - when editing, the grid was working on ctrl+v, ctrl+c, ctrl+x, ctrl+d, which messed up the edit. Now the grid ignores these if you are editing the cell.
  • Version 6.1.1

    ag-grid-angular 6.1.1

  • AOT support - AOT is now an option when using ag-grid-angular.
  • Version 6.1.x

  • New Feature - Full Row Editing - to enable all cells in a row to be editable at the same time.
  • New Property - colDef.suppressNavigable - set to true (or function to return true) to stop the cell getting focus when tabbing around.
  • New Event - rowValueChanged - gets fired after a full row is updated.
  • ag-grid-angular - Upgrade to Typescript 2
  • Version 6.0.x

    AG Grid 6.0.1, AG Grid Enterprise 6.0.1, AG Grid-React 6.0.1, , ag-grid-angular 6.0.1

    Version 6.0.x brings the following changes:

    1. Bug Fixes and Improvements
    2. Improved React and Angular 2 Support
    3. Refactored Filters
    Below goes through each of these in turn.

    1 - Bug Fixes and Improvements

  • Breaking Change: React now uses props directly for the init params in filters, cellRenderers and cellEditors.
  • Breaking Change: Filter interface now called IFilter.
  • Breaking Change: api.getFilterApi() is now api.getFilterInstance().
  • Breaking Change: setColumnVisible() no longer accepts ColDefs as an argument. colIds or Columns are the available options now.
  • Enhancement: Tooltips now don't show if null or undefined.
  • Enhancement: Added api.getFloatingTopRowCount(), api.getFloatingBottomRowCount(), api.getFloatingTopRow(index), api.getFloatingBottomRow(index) for accessing pinned rows
  • 2 - Improved React and Angular 2 Support

    Lots of work has been done to support natively React and Angular 2, to allow you to plug in React and Angular 2 cellEditors and cellRenderers simply. Now, instead of using cellRenderer, you use cellRendererFramework as follows: // when not using React or Angular 2 colDef.cellRenderer = MyCellRenderer; // in v6, you can use React or Angular 2 components directly colDef.cellRendererFramework = MyReactCellRenderer; // for React colDef.cellRendererFramework = MyAngular2CellRenderer; // for Angular Full details on how get this all working are in the updated React and Angular 2 sections of the docs. If you are using Angular 2 or React, it's best you read these sections to see how to do things in the new improved way.

    3 - Changes to Filters

    How filters were working were out of line with how cellRenderers and cellEditors were working. This is because filters were done as one of the first items in AG Grid and the interface has not changed. The changes in this release bring them in line with the newer 'Component Model' that is in AG Grid, so they now behave in the same way as cellRenderers and cellEditors, including fitting in with React and Angular 2 components, the same way the renderers and editors do. The main core changes are as follows:

    1. If you were providing a Filter API then be aware the API is no longer a separate part of the component. Instead it is now possible to get a reference to the filter component directly via api.getFilterInstance(colKey). From here you can access all methods on the filter component. So if you want to add extra items to (what used to be) the API, now you just add them directly to your filter component. // eg if your filter was like this: function MyFilter() {} MyFilter.prototype.getApi = function() { return { getModel: function() { ... }, setModel: function(model) { ... }, } } // it should now be like this: function MyFilter() {} MyFilter.prototype.getModel = function() { ... } MyFilter.prototype.setModel = function(model) { ... }
    2. If you were providing custom params to your custom filters then these used to be passed to the filter embedded into the filter params. Now the custom params are added to the main params. // eg when you define this: colDef = { ... filter: MyFilter, filterParams: {a: 'A', b: 'B'} } // the old way resulted in: params = { column: Column, ... filterParams: { a: 'A', b: 'B' } } // but now it results in: params = { column: Column, ... a: 'A', b: 'B' }
    3. The constants for Number and Text filters are now strings and not numbers. If you were storing user preferences for these filters, you need to map the old numbers to the new string values.

      For Number filter, the mapping is as follows:

      • 1 => 'equals'
      • 2 => 'notEqual'
      • 3 => 'lessThan'
      • 4 => 'lessThanOrEqual'
      • 5 => 'greaterThan'
      • 6 => 'greaterThanOrEqual'

      For Number filter, the mapping is as follows:

      • 1 => 'contains'
      • 2 => 'equals'
      • 3 => 'notEquals'
      • 4 => 'startsWith'
      • 5 => 'endsWith'

    All the examples are up to date with the new way of doing things.

    Version 5.4.x

    AG Grid 5.4.0, AG Grid Enterprise 5.4.0, AG Grid-React 5.4.0, , ag-grid-angular 5.4.0

  • Enhancement: added API for startEditing().
  • Enhancement: now rememberGroupStateWhenNewData works when inserting/removing rows, ie group open/closed state is now kept when updating rows.
  • Enhancement: added columnKeys to api.copySelectedRowsToClipboard(), so you can choose which columns get used.
  • Enhancement: columns can now be reordered when in pivot mode (previously they were static).
  • Enhancement: ag-grid-react - now you pass in parent component to React cellRenderer - makes cellRenderer work with React Router and also should give performance improvements.
  • Enhancement: export to csv now allows you to specify particular columns.
  • Enhancement: export to csv now includes floating top and floating bottom rows.
  • Enhancement: toolPanel has lazy initialisation, so now if toolPanel not showing, it doesn't initialise.
  • Bugfix: copy range to clipboard was not taking in group values when group key was using valueGetter.
  • Bugfix: removed styles from border layout templates, used css classes instead. Fixed bug where chrome complained about 'styles violate Content Security Policy #1093'
  • Bugfix: for menus, sub menu was appearing in wrong place when normal 'display to right' position was off screen.
  • Version 5.3.x

    AG Grid 5.3.1, AG Grid Enterprise 5.3.1

  • Enhancement: added 'Copy with Headers' option to context menu, to copy header values when copying to clipboard.
  • Enhancement: added 'Flower Nodes' concept, to allow easy mechanism for providing expandable rows for master / detail and fullWidth.
  • Bugfix: onDragStopped was getting called on header button clicks, even if not dragging was taking place.
  • AG Grid 5.3.0, AG Grid Enterprise 5.3.0

  • Enhancement: new feature - Full Width Rows and Master / Details
  • Enhancement: setFilter - now the search box is focused when you open setFilter
  • Breaking Change: if using groupUseEntireRow=true, you will notice the group row is now a fullWidth row, hence will span pinned sections and not scroll horizontally. This is by design. Functionality should be the same, just the grid will look a big different.
  • Bugfix: Aggregation function 'count' was only working with number values. Now works with any value type.
  • Bugfix: forPrint was broken with last release, now fixed again.
  • Version 5.2.x

    AG Grid 5.2.0, AG Grid Enterprise 5.2.0, ag-grid-angular 5.2.0

    Bug Fixes and Angular 2 Cell Rendering

  • Enhancement: Now you can create cellRenderers using Angular 2. See Getting Started Angular 2
  • Enhancement: Now context menu appears when you click outside of the rows, including when no rows present.
  • Enhancement: Added columnApi.autoSizeAllColumns().
  • Enhancement: Allowed following methods to work with pagination: forEachLeafNode, forEachNodeAfterFilter, forEachNodeAfterFilterAndSort.
  • Enhancement: Callbacks getRowStyle and getRowClass get called after the data is set as well as when the row is created. Helps viewport and infinite pagination, to add styles and classes after the rows are loaded.
  • Enhancement: external filter present can not be true when grid initialises
  • Enhancement: updated virtual pagination example, to show graceful deletion
  • Bugfix: setFilter was not removing entries correctly when other filters were set if filterParams was missing.
  • Bugfix: when browser was vertically scrolled, the ghost icon while dragging was not positioned correctly.
  • Bugfix: when groupSelectsChildren=true, was failing to update top parent rows when 3 or more columns grouped.
  • Bugfix: api.getVirtualPageState() was returning undefined, now works.
  • Bugfix: case issue with iDatasource, it was getting imported as iDataSource in places.
  • Version 5.1.x

    AG Grid 5.1.2, AG Grid Enterprise 5.1.2

  • Enhancement: Adding and removing of rows now allowed in normal row model. See new documentation page on 'Insert & Remove'.
  • Enhancement: Virtual Pagination engine is rewritten. New and improved allowing inserting of rows and refreshing of the cache and other smaller pieces. See the documentation page on virtual pagination for details.
  • Breaking Change: Removed datasource properties maxConcurrentDatasourceRequests, maxPagesInCache, overflowSize and pageSize. Replaced with grid properties maxConcurrentDatasourceRequests, maxPagesInCache, paginationOverflowSize, paginationInitialRowCount, paginationPageSize.
  • Enhancement: node id's are now strings, not numbers. This is to allow you to give nodes the same id's as your data store.
  • Enhancement: new callback getRowNodeId(), for setting node ids to what you want. Useful for pagination and virtual pagination to allow for selection of rows when doing server side sorting and filtering.
  • Version 5.0.x

    AG Grid 5.0.7, AG Grid Enterprise 5.0.7

  • Enhancement: cellRenderer for richSelect is no longer mandatory, now default text renderer used in richSelect if no cellRenderer specified
  • Enhancement: renamed all 'aggregation' (eg getAggregationColumns) method to 'value' (eg getValueColumns), the documentation was right, methods were out of sync
  • Enhancement: now colId's can be numbers, not just strings
  • Enhancement: added gridOption.autoSizePadding, to allow wider columns after autosize if default is to narrow
  • Bugfix: api.setHeaderHeight() was not working, now fixed.
  • Bugfix: fixed issue where hidden grid (it not visible) was not rendering all rows it should.
  • Bugfix: columnApi.getColumnState() was setting aggFunc on columns that were aggregated but then later removed.
  • Bugfix: largeTextCellEditor - when value was undefined was displaying 'undefined', now displays blank.
  • Bugfix: api.deselectAll() was not deselecting groups when gridOptions.groupSelectsChildren=true.
  • Bugfix: tab navigation was not working with virtual columns when column been tabbed onto was not visible.
  • AG Grid 5.0.6, AG Grid Enterprise 5.0.6

  • Enhancement: added columnApi.getAllDisplayedVirtualColumns(), so you can check what columns are rendered due to column virtualisation.
  • Bugfix: Angular 1 was compiling row multiple times, meant angular listeners were firing more than once. Now it compiles each cell exactly once when cell is created.
  • AG Grid 5.0.4, AG Grid Enterprise 5.0.4

  • Bugfix: hitting space sometimes (noticed on firefox) sent grid scrolling down when it should select the row
  • AG Grid 5.0.3, AG Grid Enterprise 5.0.3

  • Bugfix: pivot was not working with groupUseEntireRow=true
  • AG Grid 5.0.2, AG Grid Enterprise 5.0.2

  • Enhancement: changed comparison (or sorting) to use localeCompare for strings
  • Enhancement: now pivot shows 'n/a' when no value columns is enabled
  • Enhancement: now 'autosize cols' considers the header width, not just the row content
  • Bugfix: cellRenderer with text field was not allowing editing in text field
  • AG Grid 5.0.1, AG Grid Enterprise 5.0.1

  • Major Enhancement: Enterprise feature - Pivoting
  • Major Enhancement: Free feature - Column Virtualisation
  • Breaking Change: colDef.suppressAggregation and colDef.suppressRowGroup are gone, replaced with enableRowGroup, enablePivot and enableValue
  • Enhancement: added events dragStarted and dragStopped
  • Enhancement: new property suppressUseColIdForGroups
  • Enhancement: Safari now uses animation frames for scrolling (Chrome doesn't need it!!)
  • Enhancement: when no using cellRenderer, node.textContent used instead of element.innerHTML, for security reasons to prevent malicious injection of Javascript.
  • Enhancement: new property 'suppressCopyRowsToClipboard' so selected cells will be copied to clipboard and not the selected row, if that's what user wants.
  • Enhancement: popups are restricted to inside the grid when they appear - eg 'richSelect' doesn't appear outside of grid
  • Enhancement: now get/set column state takes into consideration column order
  • Enhancement: column virtualisation, with property suppressColumnVirtualisation to turn it off
  • Enhancement: eGridCell added to params of cellEditor
  • Enhancement: added property layoutInterval, to allow overriding of the layout interval.
  • Enhancement: added property 'suppressFocusAfterRefresh', so grid doesn't set focus back on focused cell if not required.
  • Enhancement: added properties toolPanelSuppressRowGroups, toolPanelSuppressValues, toolPanelSuppressPivots, toolPanelSuppressPivotMode
  • Enhancement: pivot panel now on top alongside group panel
  • Enhancement: new property colDef.openByDefault - set to true on column groups to have them open be default if expandable
  • Enhancement: new grid property functionsReadOnly - makes the gui for group, pivot and values read only
  • Enhancement: added suppressFilter to colDef, to allow turning filtering off for a particular column
  • Bugfix: AngularJS 1.x bindings were not getting cells updated when columns added and removed
  • Bugfix: Popups were triggering a scrollbar to flicker on and off when showing (eg show column menu, a scrollbar appeared and then disappeared in the grid)
  • Bugfix: rowSelectionChanged was not firing on shift select
  • Bugfix: isCancelBeforeStart and isCancelAfterEnd were not working for popup editors
  • Bugfix: virtual pagination was not working when setting datasource as a property (it worked if setting datasource via api.setDatasource())
  • Version 4.2.x (AG Grid 4.2.7, AG Grid Enterprise 4.2.11)

  • Bugfix: group selection was selecting groups when 'groupSelectsChildren=false' giving strange behaviours
  • Version 4.2.x (AG Grid Enterprise 4.2.10)

  • Bugfix: aggregation type 'sum' was giving incorrect results
  • Version 4.2.x (AG Grid 4.2.6, AG Grid Enterprise 4.2.9)

  • Enhancement: For Enterprise, License message no longer printed to screen when license is correct.
  • Enhancement: Added colDef.tooltipField, so tooltip can be set on the cell.
  • Enhancement: Icons for drag and drop of columns are now all configurable.
  • Enhancement: quickFilter is now a property, so can be set during initialisation.
  • Enhancement: new API method forEachLeafNode()
  • Enhancement: added suppressQuotes option to csv export
  • Enhancement: added colDef.keyCreator, to allow grouping and set filter on complex objects
  • Enhancement: pagination datasource now gets context as a parameter
  • Enhancement: added largeText cell editor as an 'out of the box' editor
  • Enhancement: enhancements to Material Design look and feel
  • Enhancement: added api.stopEditing()
  • Bugfix: SetFilter was failing when you loaded more data into the grid - filter didn't populate with new values correctly.
  • Version 4.2.x

    Big Changes

  • Enhancement: New theme for Bootstrap
  • Enhancement: New theme for Material Design
  • Enhancement: Dark theme revised
  • Enhancement: you can now move groups of columns (only makes sense when grouping your columns):
    • Drag groups of columns from within table to move
    • Drag groups of columns from column toolPanel
    • Drag groups of columns to 'row group panel' to row group by multiple columns
  • Enhancement: Shift multi-select - a range of rows can be selected together by holding down shift (does not work with virtual pagination or viewport, only normal 'client-side row model').
  • Breaking Change

  • Enhancement: groupAggFunction is gone, replaced with providing your own colDef.aggFunc functions - this was needed to pave the way for pivoting functionality. See docs for details on how to use.
  • Small Changes

  • Enhancement: better default icons for row groups and checkbox selection
  • Enhancement: row selection 'checked' icons are now icons and not browser checkbox. they are now also customisable via changing icons.
  • Enhancement: changed icons for drag pinning, now when you drag a column to the edge, the drag icon changes to 'pinned' so use knows the column is about to be pinned.
  • Enhancement: new property for column group called 'marryChildren', when true then group cannot be split up by moving children.
  • Enhancement: tool panel now has icon beside column group to show visibility of the group. icon is also clickable to set visible / hidden all children of the group
  • Enhancement: editing now has methods isCancelBeforeStart() and isCancelAfterEnd() to help with lifecycle.
  • Enhancement: new property suppressDragLeaveHidesColumns, so when columns dragged out of grid, they are not hidden.
  • Enhancement: new method api.refreshInMemoryRowModel, does a complete refresh of the client-side row model. Useful if you need to get the groups worked out again.
  • Enhancement: default text editor - now 'right' and 'left' key presses do not loose focus on current cell
  • Enhancement: added ag-row-hover class for when mouse is over row, so you can highlight rows when mouse is over them
  • Enhancement: new property 'suppressMiddleClickScrolls', so you can listen or 'middle mouse clicks' if you want (otherwise middle mouse click is taken by browser to scroll)
  • Enhancement: new property 'suppressPreventDefaultOnMouseWheel' so you can allow browser to handle mouse wheel events - useful if your grid has no vertical scrolls and you want the mouse to scroll the browser page
  • Enhancement: build in renderer 'animateShowChange' now highlights changes when values are not numbers (eg strings).
  • Bug Fixes

  • Bug fix: when dragging columns out of rowGroupPanel, GUI wasn't redrawing correctly and crashing, causing inconsistent state and console error messages
  • Bug fix: disabled menu items were still allowed to be clicked
  • Bug fix: you can now tab into and out of the grid.
  • Bug fix: default text editor was displaying 'undefined' when initial value was missing. now showing blank.
  • Version 4.1.x patch (AG Grid 4.1.5, AG Grid Enterprise 4.1.4)

  • Bug fix: when setting columns directly on gridOptions, the groupByPanel was not initialised correctly.
  • Bug fix: row group panel was not initialising correctly.
  • Version 4.1.x patch (AG Grid 4.1.4, AG Grid Enterprise 4.1.3)

  • Bug fix: api.deselectAll() was not calling onSelectionChanged, it is now.
  • Bug fix: defaultExpanded setting was not been used, it is now.
  • Bug fix: popup editor was not working, init() was not called.
  • Version 4.1.x

    Big changes
  • Vamped up Cell Editing and Rendering. See new documentation pages for Cell Editing and Cell Rendering
  • New row model called Viewport. Designed for views over large data and pushing out updates from server to client.
  • Breaking Change
  • If you are using the built in groupCellRenderer, check the examples on how to configure it. The colDef.cellRenderer property is broken up into cellRenderer and cellRendererParams.
  • Small changes
  • Enhancement: New event - viewportChanged - gets called when the rendered rows changes, either due to scrolling, new data or grid resize. Using this, you know exactly what divs will be rendered in the DOM.
  • Navigation: When not editing, tab moves between cells. Shift+tab goes backwards.
  • Editing: Hitting any key started editing.
  • Enhancement: New api methods: showColumnMenuAfterButtonClick(colKey, buttonElement), showColumnMenuAfterMouseClick(colKey, mouseEvent)
  • Enhancement: new function colDef.valueFormatter - value formatting responsibility used to tie in cellRenderer, now it's broken out into valueFormatter, allows reusing cellRenderers against different formats.
  • Enhancement: added 'destroyFilter' api
  • Enhancement: columnApi.addRowGroupColumn() and columnApi.removeRowGroupColumn() now work off colKey and not columns, so you can pass in colDefs, colIds or columns (previously was just columns)
  • Enhancement: New methods: columnApi.addRowGroupColumns(), columnApi.removeRowGroupColumns(), columnApi.setRowGroupColumns()
  • Enhancement: When you refresh the grid, doing a refresh doesn't loose the focused cell if a cell has browser focus.
  • Bugfix: Row grouping was not working when colId was provided.
  • Bugfix: api.setFocusedCell() method now sets browser focus (previous was just graphically highlighting the cell)
  • Version 4.0.x (AG Grid 4.0.5, AG Grid Enterprise 4.0.7)

  • Bugfix: Status bar was not calculating 'min' correctly.
  • Enhancement: Now ctrl+d will copy down the selected range, similar to Excel
  • Deprecated: cellRendererParams.addRenderedRowListener() is now deprecated. If you want callback methods for cellRendering, use the cellRenderer Component pattern.
  • Version 4.0.x (AG Grid 4.0.4)

  • Bugfix: Firefox was showing native context menu on top of grids context menu.
  • Bugfix: Drag event is only cancelled if source is image, allows user to implement custom drag event.
  • Bugfix: Angular compiling is now done after row is inserted into the DOM.
  • Bugfix: Fixed horizontal scroll on trackpads when mouse over pinned column.
  • Version 4.0.x (AG Grid 4.0.2, AG Grid Enterprise 4.0.4)

  • Bugfix: When filter was 'zero' (for number filer) is was not saving correctly when using 'getFilterModel()'.
  • Bugfix: Event 'gridSizeChanged' was not getting called when width of grid changed, only height.
  • Bugfix: Renamed 'PopupService.js' to 'popupService.js -> caused issued for some import styles.
  • Bugfix: Bug in virtual pagination, grid was not initialising when datasource set in gridOptions.
  • Bugfix: Mouse double click was not working correctly in firefox.
  • Bugfix: Enterprise filters were not getting params in the 'afterGuiAttached' method.
  • Enhancement: setColumnState() now returns a boolean, false if one or more columns could not be found.
  • Enhancement: added API methods copySelectedRowsToClipboard() and copySelectedRangeToClipboard().
  • Enhancement: changed how auto-range aggregations work - blank cells not counted in count, and non-number cells not used for avg
  • Version 4.0.x

    New Features

  • The grid has moved to Enterprise vs Free.
  • Enterprise Feature: Enhanced enterprise column menu, in addition to filtering there is now a menu and also column management.
  • Enterprise Feature: Row group panel on top of grid, so you can drag columns to here to group.
  • Enterprise Feature: You can now drag columns from the tool panel into the grid to make them visible.
  • Enterprise Feature: Row grouping and aggregation are no longer in the tool panel as they can be done bia column menu (grouping and aggregation) or dragging to the row group panel (grouping).
  • Enterprise Feature: Context Menu
  • Enterprise Feature: Range Selection
  • Enterprise Feature: Enterprise column menu
  • Enterprise Feature: Clipboard interaction
  • Enterprise Feature: Status bar
  • Tool panel, set filter, row grouping and aggregation are now only available in Enterprise version of AG Grid.
  • Enhancements & Changes

  • Performance improvements - no longer attaching listeners to each cell, so when scrolling, the dom is not been ripped up with adding and removing listeners. Instead the grid has one listener (eg for mouse click), and when the click happens, the grid then works out which cell it was for.
  • rowNode is now a class object with methods (previously it only have properties, a simple data object). Methods now include: setSelected(), isSelected(), addEventListener(), removeEventListener(), resetQuickFilterAggregateText(), depthFirstSearch(callback).
  • RowNode now has method 'setSelected'. This should now be used for row selection over the gridApi.selectXXXX() methods.
  • api.getSelectedNodesById gone, use api.getSelectedNodes instead
  • Event rowDeselected gone, now event rowSelected gets fired for both selected and deselected. Check node state to see if row is selected or not.
  • Event selectionChanged no longer contains the selected rows or nodes. Use the API to look these up if needed. Preparing these lists took CPU time, so it's best they are only prepared if needed.
  • Concept of 'suppressEvents' was dumped for row selection. No other event event type had this feature, and it was out of sync with how web components work in general. If you don't want to be notified of an event, then remove your event listener.
  • api.addVirtualRowListener is gone. Instead for row selection/deselection listening, use node.addEventListener(), and for virtual row removed, use api.addRenderedRowListener()
  • New API methods: getFirstRenderedRow() and getLastRenderedRow(), to know the first and last rows in the DOM (the grid only renders enough rows (plus a buffer) to show what's visible for performance reasons).
  • Introduced property modelType, set to 'pagination' or 'virtual' for pagination and virtual pagination. This replaces virtualPaging, as virtual was a boolean when in fact we need to distinctly model three modes of operation: Normal, Pagination and Virtual Pagination.
  • rowsAlreadyGrouped replaced with getNodeChildDetails. If you are providing already grouped data to the grid, see the new section 'Tree Data' on how this is now done. It had to change because Node is now an object with functionality, so you can't just pass in JSON an expect them to be treated like nodes.
  • Renamed: columnApi.getState()/setState()/resetState() to columnApi.getColumnState()/setColumnState()/resetColumnState()
  • Floating rows can now be selected and navigated.
  • processRowPostCreate callback, so you can process the grid row after it is created. Handy for adding attributes or other stuff to the row after create.
  • Now CSV export allows you to format cells on their way out. Handy if you want to import into Excel and need to make dates, for example, into Excel formatted dates.
  • New colDef properties suppressAggregation and suppressRowGroup for suppressing aggregation and row group for particular columns
  • Added new property: suppressFieldDotNotation
  • Took out property groupHideGroupColumns, if you don't want a column to be shown, just hide it. This feature was not necessary and caused complexity in the design.
  • Removed api.refreshRowGroup() -> it wasn't documented, and I can't remember why I put it in, refreshing the grid has the same effect.
  • api.getValue(colKey, node) replaces api.getValue(colDef, node, data), the colDef and data were 'old design', newer method works much better.
  • api.getFocusedCell() -> now returns rowIndex and Column (used to return colDef and rowNode, colDef not needed as you can get from Column, rowNode not needed as you can lookup using rowIndex)
  • rowNode attributes floatingTop and floatingBottom removed, now floating is no longer a boolean, it's a string that can be 'top' or 'bottom' if floating.
  • setFocusedCell(rowIndex, colId) is now setFocusedCell(rowIndex, colKey, floating).
  • Bug Fixes

  • Text filter 'ends with' was not working correctly if search string appeared twice in the text.
  • forPrint was occasionally given 'Uncaught TypeError: Cannot read property 'appendChild' of undefined'. now fixed.
  • RIP Virtual DOM

    Took out virtual dom. This was an implementation detail, no change in how you interface with the grid. It only made an improvement on IE, and now that we are using delayed scrolling, IE is working fast enough now. In addition, I have now tested with Windows 10 and Edge (the IE replacement) and it's working very fast. So the virtual DOM was giving very little benefit and was 'getting in the way' of a clean design. So I've favoured a clean design rather than a more complex design just to get it faster in IE. If you want to see how little difference a virtual DOM made, see the Angular Connect 2015 talk I gave.

    Version 3.3.3

  • Bug fix: Pinned rows were not coloured correctly
  • Version 3.3.2

  • Bug fix: Was not exporting initialiseAgGridWithAngular1() and initialiseAgGridWithWebComponents() with CommonJS
  • Buf fix: Period in fields (ie address.line1) was not working for editing.
  • Version 3.3.0

  • Minor: headerClass (column definition) can now be provided for column groups.
  • Major: If using Pure JavaScript "new ag.grid.Grid()", it's now "new agGrid.Grid()".
  • Major: Event 'ready' is now called 'gridReady'
  • Major: Angular 1 - you now need to initialise the grid via agGrid.initialiseAgGridWithAngular1(angular)
  • Major: Web Components - you now need to initialise the grid via agGrid.initialiseAgGridWithWebComponents()
  • Major: Angular 2 - Dropped support for UMD version of Angular
  • Major: Angular 2 - Now supports CommonJS and ECMA 6 module loading
  • Minor: BugFix: forPrint was not sizing headers correctly when doing grouped columns.
  • Major: Added sorting to groups
  • Minor: Added minColWidth and maxColWidth grid properties. Impacts all columns if set.
  • Major: Column no longer has 'index' attribute, as the columns moving now has no meaning. Use 'colId' to identify columns.
  • Major: api.ensureColIndexVisible(index) replace with api.ensureColumnVisible(colKey)
  • Major: Focused cell not longer has attribute colIndex, instead has attribute colId.
  • Major: Movable columns via dragging the column header.
  • Major Build Changes:
    • CSS now bundled in ag-Grid.js file
    • Took out TypeScript internal modules
    • Moved to ECMA 6 style imports (instead of require)
    • Moved to WebPack for bundling
    • Moved Angular 2 component to new project
  • Version 3.2.0

  • Minor: New event rowGroupOpened, for when row groups are opened / closed.
  • Minor: Bug fix - pinning was not saved during columnApi.getState()
  • Minor: Added 'typings' to package.json, so TypeScript can pick up typings from node module
  • Minor: groupDefaultExpanded must be number (used to be number or boolean). Set to -1 instead of 'true' for same effect.
  • Minor: addVirtualRowListener - now takes an event type and a function, so has similar pattern to normal event listeners.
  • Minor: New method 'destroy' added to custom filters. If you need to do cleanup, put it in the destroy method.
  • Minor: Took out 'agGridGlobalFunc()', should use ag.grid.Grid() instead.
  • Version 3.1.2

  • Minor: New column API methods: getLeftDisplayedColumnGroups(), getCenterDisplayedColumnGroups(), getRightDisplayedColumnGroups(), getAllDisplayedColumnGroups()
  • Version 3.1.1

  • Minor: Added 'columnSeparator' to CSV Export
  • Minor: Added starting character of '\ufeff' to CSV Export (for Excel compatibility)
  • Minor: Bug fix - gridOptions.isEnableSorting && colDef.suppressSorting were not used in 3.1.0, fixed.
  • Version 3.1.0

  • Minor: New allColumns property for export to csv
  • Minor: API method deselectNode() now takes 'suppressEvents' parameter.
  • Minor: Now colDef.field can had deep references, eg colDef.field = 'owner.firstName'
  • Minor: New event gridSizeChanged, gets fired when grid changes size, due to window resize or other application state change. Useful if you want to lay out the grid, eg call api.sizeColumnsToFit()
  • Minor: Bug fix - since v3 columnDefs was mandatory and threw error if missing. Is now optional again.
  • Major: Implemented auto-size for column. Now columns can be told to fit their content.
  • Minor: New property: suppressParentsInRowNodes - if you don't want parents in the row node tree structure.
  • Minor: Fixed up placement of menu icon, it was hitting the header border.
  • Major: Rows can have variable heights with new getRowHeight() callback.
  • Minor: bugfix - setColState was not restoring 'visible' correctly
  • Minor: New API - columnApi.resetState()
  • Major: Implemented column header templates
  • Version 3.0.0

    Version 3 is a major version and has breaking changes. Where possible, the grid will hint if you are using an old property.

    • Major: Grouping of headers is now called 'columnGrouping' and can now take multiple levels of groups.
    • Major: Pinning can now be done on the left and right, previously was just the right.
    • Major: Row pivoting is now called row grouping. So the two types of grouping are now called Row Grouping and Column Grouping. Pivoting was taken out as it wasn't true pivoting. The was done to allow true pivoting to happen in a future release and avoid any name clashes.
    • Major: gridOptions.groupKeys and gridOptions.groupAggFields are now gone. These were duplicated ways of setting rowGroups and rowAggregation. The correct (and only non-duplicated way) is to use colDef.rowGroupIndex and colDef.aggFunc.
    • Major: New Column API method setColumnPinned().
    • Major: api.refreshPivot() now called api.refreshRowGroup()
    • Major: Column getState() and setState() now include pinned state.
    • Major: Header Height is now height per row, so if 25, and three column groups, total header height is 3x25 = 75. Before it was total header height (so height was split evenly across the header rows)
    • Major: gridOptions.groupHeaders is no longer a property, as grouping in the headers is now defined inside the column definitions.
    • Minor: CSS Classes ag-header-cell-grouped and ag-header-cell-not-grouped are no longer used.
    • Major: colDef.headerGroupShow is now called colDef.columnGroupShow.
    • Major: Icons {headerGroupOpened, headerGroupClosed} now called {columnGroupOpened, columnGroupClosed}
    • Major: Column API - columnGroupOpened() renamed to setColumnGroupOpened()
    • Major: setColumnVisible(key) now takes a 'key' which can be a colId, field, ColDef object or Column object - previously you had to provide a Column object. Also new method setColumnsVisible(listOfKeys) for updating batches of columns.
    • Major: New methods setColumnPinned(key) and setColumnsPinned(listOfKeys) - behave similar to previously mentioned 'visible' methods
    • Major: In get/set column state, pivotIndex is now called rowGroupIndex
    • Major: If doing raw Javascript version, then angularGridGlobalFunction() is now deprecated, use "new ag.grid.Grid()" method instead.
    • Major: checkboxSelection (on colDef) can now be a function, so you can use params in the function to work out at runtime if the cell should have a checkbox. gridOptions now also has function of the same name, so you can configure the grid to have a checkbox in the first column always regardless of the colDef (this is what the test drive does).

    Version 2.3.7

  • Minor: Updated AngularJS 1.x 2 to version Beta 0. Example updated to show changes.
  • Version 2.3.5

  • Minor: Overlays can now be disabled via new properties suppressLoadingOverlay and suppressNoRowsOverlay.
  • Version 2.3.4

  • Bug fix: Template cache now working with IE9
  • Bug fix: forEachNodeAfterFilter and forEachNodeAfterFilterAndSort were not working properly when grouping.
  • Minor: Now set filter can take a comparator.
  • Bug fix: Was not possible to add event listeners or set attributes to virtual elements after binding. This is now possible.
  • Version 2.3.3

  • Bug fix: Setting rowBuffer to zero did not work.
  • Bug fix: Export to csv was not managing large exports.
  • Minor: Moved Angular 2 examples to alpha 44.
  • Version 2.3.2

  • Bug fix: 'no rows' overlay was blocking column headers, so if showing, couldn't change filter.
  • Version 2.3.1

  • Bug fix: Angular 2 - EventEmitter for rowDeselected was missing.
  • Major: Added getBusinessKeyForNode() method, to allow easily identifying of rows for automated testing.
  • Minor: Removed declaration of 'module' and 'exports' in main.ts, so no longer clashes with node.ts types.
  • Minor: Fixed headerClass, array of classes was not working
  • Version 2.3.0

  • Major - Introduced 'no rows' message for when grid is empty.
  • Major - Introduced custom overlays for 'no rows' and 'loading', so now they can be what you like.
  • Major - Moved to AngularJS 1.x 2 alpha 38.
  • Major - Took out auto loading of AngularJS 1.x 2 module with JSPM.
  • Minor - Exposed global function for initialising Angular 1.x, to use if Angular not available on the global scope, eg using JSPM
  • Minor - Bugfix - rowRenderer was not working when useEntireRow=true
  • Version 2.2.0

  • Major - Implemented 'destroy' API method, to release grids resources. Needed for Web Components and native Javascript (AngularJS 1.x lifecycle manages this for you).
  • Major - Column resize events now have 'finished' flag, so if resizing, you know which event from a stream of 'dragging' events is the final one.
  • Major - New event: rowDeselected.
  • Major - Now have 'customHeader' and 'customFooter' for export to csv.
  • Minor - Now filters are positioned relative to their actual size instead of assuming each filter is 200px wide. Now wide filters don't fall off the edge of the grid.
  • Minor - Bug fix #459 - getTopLevelNodes was called for not reason during filter initialisation which resulted in 'undefined' error for server side filtering
  • Version 2.1.3

  • Minor - Added header to Typescript definitions file and included in Definitely Typed
  • Minor - Removed unused 'require' from agList - was conflicting when require defined elsewhere

  • 23rd Sep AG Grid 2.0 released - AngularJS 1.x 2 and Web Components supported

    13th Sep First pass on AngularJS 1.x 2

    6th Sep Floating headers and footers

    31th Aug Column API, External Filtering, Excel Like Filtering

    16th Aug Master & Slave Grids.

    26th July minWidth and maxWidth for columns. Chaining of cell expressions.

    18th July Expressions implemented. Grid now works like Excel!!

    5th July Typescript, Values on Tool Panel, Column API

    21st June First version of Tool Panel, showing / hiding / reordering / grouping columns.

    14th June Server side sorting and filtering, headerValueGetter, newRowsAction, suppressUnSort & suppressMultiSort'.

    7th June New features: Ensure Col Index Visible, No Isolated Scope, API for Sorting, API for Saving / Setting Filters

    31st May New features: Default aggregation, filtering API, de-selection, foeEachInMemory.

    25th May Keyboard Navigation and general improvements

    17th May Revamp of Grouping, ensureIndexVisible, ensureNodeVisible, Multi Column Sort (thanks Dylan Robinson), Fixed Width Cols.

    26 April - Volatile Columns, Soft Refresh, Cell Templates.

    25 April - Bug fixes: Pinned Blank Space, Group Sorting, Cell Templates, Expand / Collapse

    20 April - Value Getters, Context and Expressions. Will be available in 1.3, or take latest. All documented in relevant sections.

    18 April - Gulp! Thank you Tanner Linsley for implementing Gulp.

    16 April - Checked in column opening & closing column Groups. Now you can show and hide columns in groups. Will be available in 1.3, or take latest. Documentation page 'Grouping Headers' updated.

    13 April - Checked in 'tab navigation for editing', so when you hit tab while editing a cell, it goes into editing the next cell. Will be available in 1.3, or take latest.

    12 April - Checked in datasources, pagination, virtual paging, infinite scrolling. Will be available in 1.3, or take latest. Documentation pages 'Datasource', 'Pagination' and 'Virtual Paging' created.

    09 April - Checked in support for 'Refresh Aggregate Data'. Will be available in 1.3, or take latest. Documentation page 'Grouping and Aggregating Rows' updated.

    06 April - Checked in support for 'Loading Panel' to show when fetching data. Will be available in 1.3, or take latest. Documentation page for loading created.

    05 April - Checked in support for custom icons in the headers. Will be available in 1.3, or take latest. Documentation page for icons created.

    04 April - Checked in support for footers while grouping. Will be available in 1.3, or take latest. Documentation for grouping and example in 'test drive' updated to show.

    31 March - DailyJS covers launch of Angular Grid.