Features

June 19, 2026 · View on GitHub

Every feature is included free and open source. No enterprise tier, no license keys. Features can be individually tree-shaken at build time via compile-time feature flags.

Feature Overview

FeatureOption FlagDefaultDescription
SortingenableSortingtrueClick column headers to cycle asc / desc / none
FilteringenableFilteringtruePer-column filter inputs with configurable conditions
Row GroupingenableGroupingfalseNested multi-column grouping with collapsible headers
Tree ViewenableTreeViewfalseHierarchical data with expand/collapse per node
Expandable RowsenableExpandablefalseMaster/detail pattern with custom Angular templates
Cell EditingenableCellEditfalseInline spreadsheet-style editing with keyboard nav
PaginationenablePaginationfalseClient-side or external pagination
Infinite ScrollinfiniteScrollRowsFromEndBi-directional infinite scroll with loading state
Column MovingenableColumnMovingfalseDrag-and-drop column reordering
CSV ExportgridApi.core.exportCsv()Export visible rows with formula-injection protection
Virtual ScrollingenableVirtualizationautovirtual scroll, auto-enabled at 40+ rows
Save/Restore StategridApi.saveStateSerialize sort, filter, grouping, pagination, expansion state
Auto ResizeenableAutoResizefalseResizeObserver-driven viewport height recalculation
Custom TemplatescellTemplateAngular ng-template for fully custom cell rendering
Shadow DOMalwaysEncapsulated styles with CSS custom property and ::part() hooks
Web Componentnpm run build:vanillaShip as <ui-grid-element> for package or no-bundler browser usage
SSR SupportautomaticServer-side rendering with platform-safe guards
i18nlabelsen-USOverride any UI string at runtime or bake in a locale at build time

Sorting

  • Enabled by default (enableSorting: true)
  • Click a column header to cycle: none → ascending → descending → none
  • Per-column disable: column.sortable = false
  • Custom comparator: column.sortingAlgorithm = (a, b) => number
  • Programmatic: gridApi.core.sortColumn('name', 'asc')

Filtering

  • Enabled by default (enableFiltering: true)
  • Built-in conditions: contains, startsWith, endsWith, exact, notEqual, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual
  • Wildcard support: terms with * auto-compile to regex
  • Custom predicates: column.filter.condition = (term, value, row, column) => boolean
  • RegExp conditions: column.filter.condition = /pattern/i

Row Grouping

  • Requires enableGrouping: true
  • Multiple columns: grouping: { groupBy: ['status', 'company'] }
  • Start collapsed: grouping: { startCollapsed: true }
  • Per-column disable: column.enableGrouping = false
  • Mutually exclusive with Tree View

Compile-Time Feature Flags

Build custom bundles with only the features you need:

node scripts/build-grid.mjs --features sorting,filtering

Disabled features compile to false constants — the bundler tree-shakes all guarded code paths. See Custom Builds for details.