Grid – Change Log
Version 8.0.0
2026-11-03Bryntum 8.0 marks a major milestone in how developers discover, install, and use our products. All products are now available in three tiers, built from a shared codebase: Community (free and open source under the MIT license), Business, and Enterprise. All editions are available directly from public npm, making it easier than ever to get started, whether you’re coding by hand or using AI coding agents
Highlights of this release: * Column virtualization, only columns intersecting the viewport are rendered * Remote grouping for lazy-loaded stores * Light and dark mode rendered from a single theme stylesheet * The AI feature can offer its tools to external agents, through a JavaScript API or WebMCP
FEATURES / ENHANCEMENTS
- BREAKING License keys replace the separate trial packages. The Business and Enterprise tiers now run in trial mode until a license key is registered with
bryntum.licenseKey = '...' - In addition to virtualizing rows, Grid now also virtualizes columns. Only columns intersecting the viewport have their cells rendered into the DOM. This improves initial rendering performance for Grids with many columns. The behavior is controlled using the
virtualizeColumnsconfig. Note that this is a substantial change to the way the Grid operates. Please don’t hesitate to reach out if you experience any issues (11393) - Each theme is now also available without a light/dark suffix (
svalbard,stockholm,material3,visby,fluent2,high-contrast), rendering both modes from a single stylesheet using the CSSlight-dark()function. Such a theme renders light by default and otherwise follows thecolor-schemethe application declares, so addingcolor-scheme : light darkin the app opts into the system preference. Apps can force a mode at runtime by assigninglightordarkto the newDomHelper.colorScheme, whichDomHelper.isDarkThemereflects. For such a theme,DomHelper.toggleLightDarkTheme()pins the opposite scheme instead of loading an explicit variant. A theme never declares acolor-schemefor the page (13107) - Features can now be added at runtime. The new
addFeature()method, available on all featureable widgets (Grid, Scheduler, Gantt, Calendar and TaskBoard), takes an object mapping feature names to their configs, validates the names and returns the created instances; assigning to thefeaturesproperty adds and reconfigures features the same way. A newfeatureAddevent fires for each feature created after initial configuration (12645) - New Temporal API-based time zone support for date and time columns – set the
timeZoneconfig to any IANA time zone identifier to render, parse, edit and compare date column values in that zone with full DST support - The internal chart rendering library has been switched from Chart.js to AG Charts (12514)
- Added the new
GridCombowidget, aCombothat uses aGridas its picker, with an auto-generated single column by default and support for custom columns and all regular Grid features - The AI feature can now offer its tools to external agents, through a JavaScript API or WebMCP. See What’s new for details
- Added a new
TimeZoneCombowidget, aCombopreconfigured with the available IANA time zone identifiers - Lazy-loaded stores now support remote grouping (7951)
- The
Splitterwidget is now focusable and can be moved using the keyboard arrow keys, with a configurablekeyboardMoveStepcontrolling the pixels moved per keystroke. It also announces the controlled widget and the sizes of its adjacent widgets to screen readers. TheSplitter‘s collapse/expand buttons are now real<button>elements with localized accessible labels naming the panel they collapse, and can be operated from the keyboard. This also applies to the splitters of a grid using thesplitfeature, where moving one splitter with the keyboard keeps its partner splitter in sync (11914) - Added
ColumnStore#batchColumnChanges()andColumnStore#setColumnsVisibility()to toggle the visibility of many columns in a single relayout, and aColumnPicker#showToggleAllItemconfig adding a show/hide all columns item (9193) - The
TreeGroupfeature now accepts asourceLevelconfig, determining the level of the tree at which grouping should be applied. Tree structure below that level will be kept in the grouped result (13245) - BREAKING Removed the
grid.umd.jsandgrid.umd.min.jsbundles from the distribution - Added a UMD migration section. See the Grid
8.0.0upgrade guide - Added a full webpack guide for building your own UMD bundle. See the "Building a UMD bundle with webpack" guide
- Vue framework demo folders moved from
vue-3*tovue,vue-viteandvue-nuxt. See the upgrade guide - The store’s
startGroupsCollapsedconfig now also accepts a function, to decide per group which groups start collapsed - The
TreeGroupfeature’sexpandParentsconfig now also accepts a function, to decide per generated parent which start expanded ButtonGroupnow mixes inLabelable, so it can be configured with alabel(and related configs such aslabelPositionandlabelWidth) that renders a<label>element beside or above the buttons (13306)- The
RowReorderfeature now supports keyboard shortcuts for moving the focused row up (Ctrl+Shift+ArrowUp) and down (Ctrl+Shift+ArrowDown) (12968) - Added
BrowserHelper.isMSEdgeproperty for detecting Microsoft Edge browser ProgressBarnow exposes WAI-ARIAprogressbarsemantics –role,aria-valuemin,aria-valuemax,aria-valuenowandaria-valuetext, published once the bar has a non-blank accessible name fromlabel,ariaLabelortooltipProgressBarno longer marks its.b-labelelementsrole="presentation"Masknow exposes WAI-ARIA semantics – the masked target is markedaria-busywithout discarding a value it already had, and a documentbodytarget is left untouched. The message is announced to assistive technology, and the spinner or progress bar is exposed as an indeterminate or determinateprogressbarwhen the mask has a messageMaskhas a newdoneTextconfig, announced when the mask is destroyed to tell assistive technology that the operation it covered has ended. Nothing is announced whiledoneTextis unset, when the mask is only hidden, or when the mask is presenting an error- The
GroupSummaryfeature now accepts afooterHeightconfig, setting the minimum height in px of the group summary footer rows independently of the grid’srowHeight. Footers still grow to fit several summaries in one column - New
Slider.tipRendererconfig, a function returning custom content for the slider’s tooltip. Receives thevalue,unitand theslider Store‘suseSparseIndexconfig now also accepts an object carrying agenerateSparseIndexfunction, which decides everysparseIndexvalue the store generates.RowReorderfires the newgridRowDropFailevent when the store refuses a drop. See What’s new for details (13554)- New
DomHelper.themeChange()method, aliased asbryntum.themeChange(), to call after the application changes global CSS itself, so widgets refresh measurements and colors derived from it. TheGlobalEventsthemeevent now also fires on light/dark switches, withcolorSchemeandmodein its payload to tell them apart from a theme stylesheet change
API CHANGES
- BREAKING The internal
GridFeatureManagerclass has been removed. Features now use theFactoryablepattern (same as Calendar and TaskBoard). See the upgrade guide for details - Added the
GridFeature,TimelineFeature,SchedulerFeatureandGanttFeaturebase classes, which custom features extend instead ofInstancePlugin. A feature registers itself withinitClass()and declaresstatic defaultEnabledto be on by default – a boolean, or an object keyed by product tier or by container class name - BREAKING
ColumnStore‘sautoAddFieldconfig now defaults totrue, so a column adds the field it displays to the store’s model instead of rendering an empty cell. Configurecolumns : { autoAddField : false }to restore the previous behavior. See the Grid8.0.0upgrade guide (13622) - BREAKING ANGULAR Dropped support for Angular 14 and older, as announced in
7.3.1. Angular 15 or newer is now required, and the legacy@bryntum/grid-angular-view(View Engine) package is no longer published - BREAKING The Vue 2 wrapper package (
@bryntum/grid-vuein7.3.x) has been removed since Vue 2 has reached end of life. The7.3.xline is the last that ships it. The Vue 3 wrapper is now published as@bryntum/grid-vue(11536) - BREAKING Default
ColorPickerandColorFieldnow emit canonical color names with theb-prefix (e.g.b-red) instead of hex codes; swatches render via theb-color-<name>CSS class from the active theme. Customcolorsconfigs are unaffected. Legacy bare color names (e.g.red) are still accepted for backward compatibility. See the Grid8.0.0upgrade guide - BREAKING Group header and group summary footer rows no longer follow a tall configured
rowHeight. When theGroupfeature’sheaderHeightand theGroupSummaryfeature’sfooterHeightare not set, such rows now use the new--b-group-row-heightCSS variable, which defaults to the theme’s row height, or the grid’srowHeightwhen that is smaller. ConfigureheaderHeight/footerHeightto keep them as tall as the data rows. See the Grid8.0.0upgrade guide (13596) - BREAKING The following previously deprecated APIs have been removed: –
TreeNode:remoteChildCountfield –Mask:htmlconfig, usetextinstead –DomSync:removeChildfunction, useremoveinstead –Store: Boolean signature for the argument togetCount()removed, now only accepts an options object –Grid:animateRemovingRows,animateTreeNodeToggle,animateFilterRemovalsconfigs removed, usetransitioninstead –RegionResize:animateCollapseExpandconfig removed, useGrid.transitioninstead –Grid:enableStickyconfig removed, usestickyCellsfeature instead –StickyCells:contentSelectorconfig removed, useColumn.stickyContentinstead –ActionColumn:rendererno longer public, useafterRenderCellinstead –WidgetColumn:rendererno longer public, useafterRenderCellinstead - BREAKING
ChartconfigslegendScale,titlePadding,subtitlePadding,minTickLabelRotation,maxTickLabelRotation,bubbleScaleFactor, andchartTooltip, previously deprecated, have been removed due to the switch from Chart.js to AG Charts - DEPRECATED Controlling row height from a column’s
rendereris deprecated. Use agetRowHeightfunction instead - Added
Grid#refresh(), which re-renders all rendered rows from the current record data. It is equivalent torefreshRows()with no arguments, and gives Grid the samerefresh()verb that Calendar, TaskBoard and Scheduler already have (13616) Delayable‘s timer methodssetTimeout,clearTimeout,setInterval,clearIntervalandrequestAnimationFrameare now public and documented (13386)LocaleHelper.mergeLocales()now merges nested locale sections recursively instead of one level deep, so a locale extension can override individual nested keys. Arrays and functions still replace the previous value as a whole- A
Combonow destroys the store it creates itself from itsitemsor from a store config when theCombois destroyed or its store is replaced - Added
DomHelper.colorScheme, which pins the light or dark rendition of a theme without a light/dark suffix ExcelExporter‘sexport()configparameter is now correctly typed as optionalFieldTriggerConfignow typeshandlerandclsas optional, since a trigger may be purely decorative and a typed trigger renders its own markup, and documents thetypeandtooltipproperties it already accepted- A
Container‘sitemsandlazyItemsnow type the object notation as acceptingfalseornullfor a named item, which suppresses it. The behavior is unchanged and was already documented, only the type was too narrow - A
ProgressBarmaxthat is not a finite positive number is now normalized tonull, returning the widget to fractional mode, so readingmaxback yieldsnull. Avaluethat is not a finite number is normalized to0, so readingvalueback yields0rather thanNaN, and neither the drawn width noraria-valuenowcan beNaN - A
ProgressBarwhose displayed value text is blank or whitespace-only, from avalueTextor avalueRenderer, no longer publishesaria-valuetextat all, leaving the nativearia-valuenowpercentage audible. AvalueRendererreturning the number0still counts as text and is still published - A
MaskmaxProgressthat is not a finite positive number is now normalized tonull, leaving the mask indeterminate with no progress bar.progressis clamped to the0tomaxProgressrange, an unsetprogressdraws an empty bar, and aprogressthat is not a finite number is normalized tonulland draws that same empty bar, so readingprogressback yieldsnullrather thanNaN - A
Maskconfigured withhtmlEncode : falsenow takes both the progress bar’s accessible name and the announced message from the rendered text of itstextmarkup rather than the markup source. Markup that renders no text, such as<span></span>, names nothing and so publishes noprogressbarrole, and an announcement no longer reads the tags out Widgetno longer copies a floating child’s role into the owner’saria-haspopupunless it is one of the tokens that attribute accepts –true,menu,listbox,tree,gridordialog. Any other role, such as theprogressbaraProgressBarin a popup now resolves to, is conveyed byaria-controlsalone- A
Masktextof0now renders as0, and adoneTextof0announces as0.NaN,Infinityandfalsecount as no message in both - A
Maskpresenting an error no longer renders a progress bar. The bar element, theb-progressclass and theprogressbarrole are all withheld while the error is shown - DEPRECATED
TimeZoneHelperis deprecated and will be removed in9.0. Views convert dates to theirtimeZonethemselves, so pass dates to them unchanged
STYLING CHANGES
- New
--b-group-row-heightCSS variable, the height of group header and group summary footer rows when not configured usingheaderHeight/footerHeight. Defaults to--b-grid-row-height - BREAKING Group member rows now have their cell in the column showing the group title indented, to visually offset them from their group headers. The size of the indent is controlled using the
--b-group-indent-sizeCSS variable. The indent can be turned off using the newindentconfig on theGroupfeature (12897) - BREAKING
ButtonGroupnow renders its buttons inside an inner.b-button-group-contentelement which carries the group’s border, box-shadow and radius; the outer.b-button-groupis a thin wrapper that also holds the label. Custom CSS that targeted.b-button-groupdirectly to lay out the buttons (e.g.display: grid,gaporflex-direction) must now target.b-button-group-content - The previously deprecated
.b-raisedand.b-transparentbutton CSS classes have been removed - Predefined named colors are referenced using the
b-prefix (e.g.b-red) as the canonical form.Widget#color,ColorColumn,ColorFieldandColorPickertreat theb-form as a predefined color and any other value as a literal CSS color; the legacy un-prefixed form (e.g.red) is still accepted (12459) - A
Panelnested inside aPopupno longer has its background forced to--b-popup-background. Widgets that declare their own--b-panel-background, such asGrid,RadioGroupandDayView, now keep it inside a popup. This affects grids embedded in editors, such as the task editor’s Predecessors, Successors and Resources tabs. Plain nested panels and containers are unchanged; they still inherit the popup background (13208) - The
Maskmessage is now wrapped in its ownspan.b-mask-messageinside.b-mask-text. CSS overrides and DOM assertions targeting the message text need to target that element - Hovering a selected cell in cell selection mode now emphasizes it further, using
--b-grid-cell-hover-selected-backgroundthe same way a hovered selected row does. Previously only rows had a combined hovered and selected state, so a selected cell’s background did not change on hover (13780) - The Fluent 2 themes were tweaked to follow the Fluent UI 9 design tokens more closely. The brand color is now
0f6cbd, a hovered row uses a neutral background and a selected row is emphasized more than a hovered one. Buttons and fields use the Fluent UI 9 medium height and border radius, and focus rings, disabled states, field borders, checkboxes and tabs use the matching Fluent UI 9 colors and sizes (13542) ChipViewnow wraps each chip’sitemTploutput in its owndiv.b-chip-labelinside.b-chip-content, so that long chip text truncates with an ellipsis instead of pushing the remove icon out of view. CSS overrides and DOM assertions targeting the chip text need to target that element- The tree expander icon was made slightly smaller (
1eminstead of1.2em). You can restore the previous size using--b-tree-expander-icon-font-size: 1.2em - Drawer
Panels no longer leave a shadow in place while sliding out when hidden
LOCALE UPDATES
- Added translation keys
Split.top,Split.bottom,Split.leftandSplit.right, used to describe the position of each sub-view of a split grid to screen readers - Added
Splitter.ariaLabelkey, the accessible label for theSplitterwidget’s keyboard movement - Added
Splitter.collapseLeft,Splitter.collapseRight,Splitter.collapseTopandSplitter.collapseBottomkeys, the accessible labels for theSplitterwidget’s collapse/expand buttons - Added
Splitter.expandLeft,Splitter.expandRight,Splitter.expandTopandSplitter.expandBottomkeys, used when aSplitterbutton expands an already collapsed panel instead of collapsing one - Added
ColumnPicker.allColumnslocale key
DEMOS
- Removed the
scripttagandwebcomponentsdemos, replaced by four webpack demos inexamples/frameworks/webpack:umd-script-tag,umd-script-tag-thin,umd-web-componentsandumd-web-components-thin - Removed the legacy version-pinned Angular demos, and upgraded all Angular demos previously running Angular 14 or older to Angular 22
- VUE The Vue 2
vue-rendererdemo has been removed since Vue 2 has reached end of life - VUE-3-VITE The
advancedgrid,dashboardandexport-exceldemos have been migrated to Vue 3 + Vite and the old Vue 2 versions have been removed. The new demos are located inexamples/frameworks/vue-vitefolder. Thedashboarddemo now ships the four pages that carry the Grid integration (Bryntum Grid,Dashboard,User profileandTable list); the remaining pages and plugins of the original Material template were dropped - Updated the
Columnsexample to demonstrate bulk column manipulation - The
bigdatasetdemo was updated to allow customizing how many columns it shows in the grid - REACT-VITE The CRA demos have been removed since CRA is deprecated. Equivalent demos are available in the
examples/frameworks/react-vitefolder
BUG FIXES
- 13637 – The shared root
aria-liveregion is no longer blanked by destroying aWidgetthat has announced, nor by announcing a blank message such as the onemasked = trueproduces. Both discarded announcements still being read from other widgets. The region is cleared by the next announcement - 13773 – Long
ResourceAssignmentchip names hard-clip and can hide the remove action in edit mode - 13788 –
Storeleaks generatedModelClassviasubModels - 13876 – Incorrect screenreader output for grid columns in the normal region when there are locked columns
- 13985 – Anchor arrow’s border color does not change to match the theme on dynamic dark -> light or light -> dark mode switch
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 15.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.8
2026-10-28FEATURES / ENHANCEMENTS
- CSS classes derived from class names, such as
b-template-cell, no longer break when an application build minifies the sources, and a warning is logged for such classes without$name
API CHANGES
- AI The AI feature’s
planningconfig (thecreatePlanandcompletePlanStepstools) now defaults tofalse
STYLING CHANGES
- Grid’s
--b-grid-panel-header-paddingand--b-grid-panel-header-border-bottomunintentionally affected any panel used as a strip in the Grid, they now only affect Grid’s own panel header
BUG FIXES
- 13126 – Animation artifact when expanding side panel
- 13267 – Editable
CombowithvalidateFilterwas not invalid on blur when typed text matched records but none was selected - 13320 – Shift+Click selects row incorrectly
- 13515 – Grid column filter icon is incorrectly hidden and impossible to remove after grouping by this column
- 13529 – Stateful tree grouped grids did not save filters, and lost the sort when restored onto a new grid
- 13759 –
TimePhasedProjectModel: Resources tab assignment date picker needs two clicks to set a date - 13762 – Overflow tooltip doesn’t show on keyboard navigation
- 13817 – Task editor: field
tooltiprenders at viewport (0, 0) instead of next to the field - 13818 –
TabPanel: closing the active tab can leave the surviving tab never shown (animateTabChange: false) - 13832 – Cell editing hangs with a remotely filtered
Comboeditor,startEditawaits aremoteValueSetthat never fires - 13835 –
DateFieldwith nostepconfig still processes Shift+ArrowDown and Shift+ArrowUp to try to step - 13845 – Inconsistent behavior of showing conflict popup with constraint
- 13857 – Hard to see badge bg color in examples browser for highlighted item
- 13861 –
ColumnPickergroupByTagcreates groups but group submenus cannot be opened in7.2.4 - 13905 – Grid column width collapses when hidden on load in Salesforce with LWS disabled
- 13912 – Horizontal scrollbar can’t be dragged/clicked when the grid is first rendered in a hidden document
- 13931 – Print alignment issue when including hidden columns in print output
- 13934 –
DomSynclowercases attribute names, so an SVG’sviewBoxis lost on synced elements - 13944 – Panel body top padding differs before/after collapse+expand (Gantt
layersdemo) - 13954 – Long uninterrupted text is clipped in Bryntum tooltips
- 13957 – Task re-added via undo lands at project root
- 13968 – Sparse index grid examples throw errors
- 13976 –
Storeis left out of sparse index order whenreapplySortersOnAddis set - 13979 –
TimeAxisSubGridcaches width 0 when measured while hidden - 13999 – Docs Expanding gantt event documentation does not work
- 14005 – Docs Weird layout on Customization page
- 14009 – Toolbar overflow menu loses the button’s
Menusubclass type - 14028 –
Slidertooltip : 'text'throwsCannot create property‘owner’on stringagain - 14034 – ACCESSIBILITY Holding Page Down pressed navigates unexpectedly
- 14037 – Example’s "Skip to content" link throws error when example uses a subclass of the demo widget type
- 14039 – Tree
Store#adddoes not triggerautoCommit, unlikeStore#remove - 14054 – Slow scrolling with
autoHeightcolumns
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.7
2026-09-24BUG FIXES
- 12855 – HIGH PRIO Padded
ButtonGroupglitch on toggle - 13299 – Readonly on checkbox is unreliable
- 13345 – Resource initials are rendered incorrectly after image load failures and resource selection changes
- 13562 – Item
isDestroyedproperty is not updated after removing a tab - 13568 – DOCS Grid "View as markdown" link broken
- 13694 –
Store.getNextreturns the first record for a record not in the store - 13707 –
TreeGroupmemory leak when regrouping - 13708 – Performance regression when regrouping with the
TreeGroupfeature - 13769 – Vetoing
RadioGroup‘sbeforeChangeevent did not prevent the first selection of a group which had nothing checked - 13781 – HIGH PRIO Incorrect screenreader output for grid columns
- 13784 –
PagingToolbarloses focus when it disables its items during a page change - 13786 –
ComboBoxfilter fields are not populated after replacing theGridStore - 13815 – Not possible to edit CSS in code viewer in demos
- 13824 –
Widgethideevent fires twice when hidden with a hide animation - 13827 – Symbolic properties not deleted on destroy
- 13828 –
CollectionFiltercannot be destroyed –destroy()throwsTypeErroron missing identifiable declaration - 13836 – Stateful
LockRowsgrids do not save filters applied throughFilter/FilterBar
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.6
2026-09-11FEATURES / ENHANCEMENTS
- DEPRECATED The
grid.umd.jsandgrid.umd.min.jsbundles are deprecated. They will no longer be part of the distribution from8.0.0. We will instead provide a guide and an example on how to build a UMD bundle for applications that need one
API CHANGES
- DEPRECATED The
GridFeatureManagerclass, used to register custom features, has been deprecated and will be removed in8.0.0, where features are instead registered using the sameFactoryablepattern as Calendar and TaskBoard features. The8.0.0upgrade guide will describe how to migrate custom features - The
DragHelperresetevent is now public API and included in the TypeScript typings. It fires for every termination of a started drag – a valid drop, an invalid drop, an abort,ESCAPEand loss of focus – which makes it a single place to undo UI state applied for the duration of the drag - The
horizontalScrollandhorizontalScrollEndevents are now documented onGridBase, where they actually fire, instead of onSubGrid. The generated typings gainedGridListeners.horizontalScroll/onHorizontalScroll(and the same on subclasses such as Gantt and Scheduler), and lost the misleadingSubGridListenersentries, a SubGrid never fired these events on itself - The
styleconfig of all widgets,DomConfig.style,PanelHeader.styleandDomHelper.applyStyle()are now typed with the newCSSStyleConfigtypedef, which accepts a cssText string, a style object or aCSSStyleDeclaration
BUG FIXES
- 11690 – Menu Features add
cls : 'b-separator'instead of overridableseparator : true - 13105 – Pinch zoom renders context menu out of place
- 13151 – HIGH PRIO
addevent not fired when undoing a record removal while a tree store is filtered - 13350 –
selectedRecordsdoesn’t clear after deleting records - 13388 – Improve the heuristic to detect
isHtmlin column renderer - 13407 – HIGH PRIO Filters applied while grouped are lost after "Stop Grouping"
- 13461 –
ChecklistFilterComborenders picker item values without HTML escaping - 13468 –
StoreSparseIndex.moveshould not write an intermediate null sparse index - 13475 –
PagingToolbarcan overflow when its width is narrow - 13494 –
Checkbox: No visual indicator when set toreadOnly, also fixing disabled uncheckedSlideToggleignoring--b-slide-toggle-disabled-background - 13509 –
Splitthrew an exception when features were declared in a subclassstatic configurable - 13543 –
useSparseIndexhas no effect at the top level of a Gantt task tree - 13583 – Cells of the last column became narrower than its header when auto-resizing with
fillLastColumn - 13584 – Clearing a date cell sets the value to the unix epoch instead of
null - 13585 – Grouped
Gridrows did not exposearia-expandedto screen readers - 13629 –
PagingToolbarthrows on any store change when one of its named items is configured away - 13651 – Widgets relying on DOM
Rangebroke under Salesforce Lightning Web Security onChrome 152 - 13661 –
Store#traverseboolean shorthand silently discards its options argument - 13689 –
EventHelperOverride: SalesforcecomposedPathfallback assigns to a const and always throws
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.5
2026-08-21FEATURES / ENHANCEMENTS
MenuItemnow fires theactionevent when clicked to be consistent with buttons (9736)- New
WidgetconfigoverflowTwinConfig(a config object or a function) customizes the config object used to create a widget’s clone in aToolbaroverflow menu, including itstype— e.g. specify a customButtonsubclass’s own type to keep itscompose()and styling instead of the defaultMenuItemconversion (11786) - The
ColumnResizefeature now adds a keyboard-accessible "Resize column" item to the column header menu, opening a dialog for entering an exact column width or fitting the column to its data (13433)
API CHANGES
- TypeScript The
stateIdconfig is now also exposed as a runtime-settable, nullable instance property (String|null) in the API docs and TypeScript typings, and the previously undocumentedresetDefaultState()method is now included in the API docs and typings. AssigningstateIdat runtime has always worked, but the typings previously declared it on the config only - Reordering rows in a store using
useSparseIndexnow restores the sparse index order when the rows are dropped, removing any user sorters.preserveSortershas no effect on such a store - Moving records in a store using
useSparseIndexnow announces the generated sparse index with anupdateevent, so cells showing the value are refreshed - TypeScript The
PdfExportfeature’ssendAsBinarychanged from a config to a property. It has always been settable at runtime, but reassigning it required casting the feature instance
DEMOS
- ANGULAR Modernized the Angular example demos to the latest standards — unified the props config filename to
demo.config.ts,satisfies-typed configuration and removal of template non-null assertions (!) - ANGULAR New and modernized Angular integration and quick-start guides — standalone components, signals, custom-element renderers, cell editors, SSR, themes and multiple-product setups
BUG FIXES
- 5972 – Row reorder is valid when dropping row outside of the grid element
- 11680 – Collapsing a node in a filtered tree store removed the wrong records
- 12555 – HIGH PRIO
RowReordernot working properly when filter and sort are applied together - 13323 –
managedCellEditingset tofalseno longer works - 13384 – Store destroy during in-flight load causes unhandled promise rejection
- 13398 –
FillHandledrag was aborted when a store autosave commit completed mid-drag - 13401 –
hoverClsnot cleared when mouse exits scheduler element boundary - 13405 – Grid Themes demo crashed when switching to the Fluent 2 theme
- 13431 – Cannot read properties of undefined (reading
width) - 13434 – Tabbing into the grid focused an invisible cell inside a collapsed region
- 13435 – Dragging columns into a collapsible column misaligns the column header and data
- 13440 – Widgets using a naturally focusable tag erroneously ended up with
role="presentation" - 13441 –
TabPanel— first tab hasb-activeclass when initialactiveTabis non-zero - 13444 – Column resize by double-click causes misalignment
- 13466 – Copy-dropping rows on a filtered store using sparse index produces colliding sparse indexes
- 13471 – Floater realign on scroll broken if document scrolls and floater’s child text input is focused
- 13477 – Critical performance degradation with tree grouping +
Filterfeature on large datasets - 13491 –
ContainerautoUpdateRecordstamped event properties onto the loaded record, corruptingtype - 13493 –
Combo: Dropdown trigger hidden whenreadOnlyinstead of dimmed - 13503 –
CheckColumnshowed a checkbox on group rows whenshowCheckAllInGroupRowswas enabled - 13504 –
List‘s scrollable not destroyed on owningWidgetdestroy - 13510 – Wrong
resourceInfosummary
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.4
2026-07-22API CHANGES
ExcelExportergot two new configs:csvMimeType(defaulttext/csv) andxlsxMimeType(defaultapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet) to allow overriding the Blob MIME type used during CSV and XLSX downloads. Useapplication/octet-streamin Salesforce LWS environments where the default MIME types are blockedXlsProviderBase.write/WriteExcelFileProvider.writeare nowasyncand return aPromise.ExcelExporteralready awaits the return value, so existing synchronous custom providers are unaffected- DEPRECATED
WriteExcelFileProvider.writeaccepts a newmimeTypeconfig param (replaces the oldMIMEparam).MIMEis still accepted but is deprecated and will be removed in9.0.0
DEMOS
TinyMceFieldnow uses forced inline mode in Firefox to prevent errors (13291)- REACT Added new
custom-editorsdemo showing custom React cell editors built with MUI — a Date Picker date field and a Yes/No toggle — plus a popup dialog that edits the whole record at once. The demo is located inexamples/frameworks/react-vite/custom-editorsfolder (10901) - ANGULAR Added new
custom-editorsdemo showing custom Angular cell editors built with Angular Material — a Datepicker date field and a Yes/No toggle — plus a popup dialog that edits the whole record at once. The demo is located inexamples/frameworks/angular/custom-editorsfolder - VUE-3 Added new
custom-editorsdemo showing custom Vue cell editors built with Vuetify — a date picker date field and a Yes/No toggle — plus a popup dialog that edits the whole record at once. The demo is located inexamples/frameworks/vue-3-vite/custom-editorsfolder
BUG FIXES
- 12632 – Bryntum Grid header filter issue with array list type data after upgrade to
7.1.1 - 13126 – Animation artefact when expanding side panel
- 13262 – Gantt JavaScript error after printing (Cannot read properties of undefined (reading
flex)) - 13273 – Filter Bar with custom combo issue
- 13281 –
MenuItemthrows when closing a submenu configured as a non-Menuwidget - 13328 – Accordions from the function sections cannot be opened
- 13410 –
autoWidthcolumn unnecessarily remeasured when replacing data in filtered grid - 13426 –
Store.insert(n, existingRecord)does not correctly update the data order
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.3
2026-06-25BUG FIXES
- 7443 –
StateProvider.setup()now accepts a config object (e.g.{ storage, prefix }) in TypeScript - 7862 – REACT In tree column returning JSX and
domConfigconditionally doesn’t work properly - 7956 – DOCS
ExportDialog#valueswas incorrectly typed as read-only in TypeScript definitions - 10116 – TypeScript
AjaxStoreencodeSorterParams/encodeFilterParamsare now function configs in TypeScript - 12938 – Click on filter icon should toggle filter popup visibility
- 13157 – Flex child does not stretch properly inside
fieldset - 13237 – Unhandled promise rejection from
Combowhen a remote filter load is aborted by a value change orcreateOnUnmatched - 13258 – Gantt rows get sorted again after printing
- 13278 – Popup stacking issue when disabling a focused field in a child popup
- 13307 – Title should align top vertically when a panel collapses to left/start
- 13311 –
DateTimeFieldappears too tall – taller than other field types - 13316 –
Scroller.scrollIntoViewmaxHeightoption does not work if element is at bottom on scrolling viewport - 13322 – Added
centered : { once : true }option to center widget only on first show - 13330 – Ask AI button misplaced during page load
- 13335 – Splitter collapse/expand buttons flicker on hover
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.2
2026-06-09API CHANGES
- DEPRECATED
ChartconfigslegendScale,titlePadding,subtitlePadding,minTickLabelRotation,maxTickLabelRotation,bubbleScaleFactor, andchartTooltiphave been deprecated in preparation for an upcoming switch from Chart.js to AG Charts, to occur in version8.0
BUG FIXES
- 11988 – Salesforce PDF export exception when Lightning Web Security disabled
- 12343 – Tooltips don’t change when switching language in examples
- 13252 –
getCountmethod returning wrong number after removing grouping on a column - 13254 – When a tooltip is used as an
aria-label, it applies it to the incorrect element
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.1
2026-05-28API CHANGES
- DEPRECATED ANGULAR Support for Angular 14 and older will be dropped in
8.0.0. If you plan on upgrading to version 8, please make sure to update to Angular 15 or newer before then
DEMOS
- The
Nested grid with chartexample has been updated to use chained stores instead of a one-shot store query for the sub grids
BUG FIXES
- 12839 – HIGH PRIO Salesforce LWC grid column on mobile with a dropdown editor
- 12980 – VUE 3 TypeError when show
SchedulerProwith collapsed group - 13016 – TypeScript Type Errors
allowCrossGridDrag.transferData,traverse,traverseWhile,query - 13077 – Grid row expander demo issues
- 13096 – Column visibility state failure in multi-level grids (3+ levels)
- 13106 – Grouping not reapplied after
endBatch()when updating grouper fields - 13127 – Filter not cleared when deleting text in
ChecklistFilterCombo - 13132 – Docs issues
- 13164 – Collapse nodes not working properly when not scrolled into view
- 13170 – Low contrast on disabled checked checkbox checkmark
- 13198 – Horizontal scrollbar not shown when normal-region columns use flex + minWidth
- 13215 – Trial demos should advertise MCP server in console
- 13231 – Chart does not render when expanding nested grid
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.3.0
2026-05-05FEATURES / ENHANCEMENTS
- Added new tree-filtering configs to
Store(3609):filterIncludesChildren— a matching parent includes all its descendantsfilterExcludesChildren— a non-matching parent excludes all its descendantsfilterExcludesParents— non-matching ancestors are dropped and matching descendants are lifted up
- The
orderedChildrenproperty onTreeNode(andModel) is now a public read-only property. It returns the direct children of a node in their original structural order, unaffected by sorting and filtering (12996) - The
StickyCellsfeature has been re-implemented to be easier to use. A new per-columnstickyContentconfig allows opting out of stickiness (3119) - New AI agent tools for column visibility:
getColumns,showColumn,hideColumn - New AI agent
askUsertool presents clickable options when a decision is needed before proceeding - New AI agent grouping tool groups records by a field (requires the
Groupfeature) - New AI agent
createPlanandcompletePlanStepstools break multi-step requests into a tracked plan - AI confirmation dialogs now render inline within the chat panel instead of as floating modal popups
- AI tool responses now use a structured
AIToolCallResultformat - The AI chat panel stop button now interrupts read-aloud playback
- New
stopAudioOnHideconfig on the AI feature stops recording and audio playback when the chat panel is hidden - The
autoRecordconfig on the AI feature now defaults tofalse - The AI chat input now supports
@mentions for referencing records from configured data models - RowExpander feature now supports keyboard shortcuts for expanding (
Shift+ArrowRight), collapsing (Shift+ArrowLeft), and toggling (Spaceon expander cell) rows Widget.focus()method now accepts anoptionsparameter supportingpreventScroll(defaults totrueto avoid unexpected scrolling) andfocusVisible(to force showing or hiding focus indication). By default, focus indication is automatically shown for keyboard navigation but hidden for mouse clicks- Added registry-based
Patchsystem for applying bug fixes using plain objects with string class names — no class imports needed. Usebryntum.applyPatch(config)to register patches that auto-apply when classes load. See theCore.PatchAPI docs for usage examples. USE AT OWN RISK – patches are provided as a best-effort temporary workaround - Added new
fixedInconfig toOverrideandPatchfor specifying the version where the bug was fixed. This is exclusive – the override/patch will NOT apply on the specified version or newer - Container has a new
labelWidthconfig that applies to all its children (more convenient than doing it through thedefaultsconfig + allows changing the default globally) Model.applyDefaults()now also handles field defaults. When a key matches a defined field name, the field’s default value is updated so that new instances use the new default. Non-field keys are passed through to the superclass to handle config defaults as before (12865)- To facilitate easy agentic onboarding, Bryntum structural and theme CSS are now loaded from CDN when not present, while also logging a console warning. This can be disabled with
detectCSSCompatibilityIssues: false. For production use, include the CSS in your app
API CHANGES
- When
maximized, aPopupnow honors the configuredmaxWidthandmaxHeight, so a maximizedPopupcan now show some background behind it - DEPRECATED The
maxVersionconfig onOverridehas been deprecated in favor offixedIn.maxVersionis inclusive (applies up to and including the version), whilefixedInis exclusive (does not apply on the specified version or newer).maxVersionwill be removed in a future major version - DEPRECATED The
enableStickyGrid config is deprecated in favor offeatures : { stickyCells : true } - DEPRECATED The
StickyCellsfeaturecontentSelectorconfig is deprecated in favor of the per-columnstickyContentconfig - BREAKING
relayAllnow propagatesreturn falsefrom the relay target back to the original event trigger, which may abort event processing. Previously,return falsefrom relayed listeners was silently ignored
STYLING CHANGES
- Empty parent nodes now show a semi-transparent expand/collapse icon (opacity
0.5) instead of hiding it completely. Controlled by the new--b-tree-empty-parent-icon-opacityCSS variable. Set to0to fully hide the icon - Removed
content: var(--fa)convenience CSS rule from.b-icon::before/.b-fw-icon::before. Font Awesome icon classes likefa-booknow require thefabase class (e.g.,fa fa-book) (12790) - When setting
labelWidthon a field, the label now gets bothmin-widthandwidthstyles to ensure the label does not expand beyond the configured width. This also applies the.b-has-label-widthclass to the label element, which enables text wrapping
DEMOS
- ANGULAR Added theme switching support to all demos (12129)
- REACT Added new React
crmdemo showing a CRM use case. The demo is located inexamples/frameworks/react-vite/crmfolder - Removed legacy Ionic demos and guides. Ionic remains supported via the existing React, Angular, and Vue demos.
- VUE-3 Added theme switching support to all demos (12905)
BUG FIXES
- 13064 – HIGH PRIO Clicking toolbar button leaves focus outline
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.2.4
2026-04-27FEATURES / ENHANCEMENTS
- Added a new guide for creating custom features (5000)
STYLING CHANGES
- Hardcoded
z-indexvalues now use CSS custom properties for easy overriding (13035) - Adjusted event colors in high contrast themes to ensure WCAG-compliant contrast against both light and dark backgrounds
DomHelper.highlightglow animation now usesfilter : drop-shadowinstead ofbox-shadow, so the highlight traces the actual rendered silhouette of the target element (includingclip-path-based shapes such as Gantt milestone diamonds) rather than its rectangular bounding box
BUG FIXES
- 9401 – Allow number editor to allow entering decimals starting with period or negative period
- 9734 – HIGH PRIO
syncnot called when expanded field is set to be persisted - 11745 – HIGH PRIO Cell click events doesn’t work in merged cells when passthrough is enabled
- 12632 –
FieldFilterPickercrashed with array-valued column data when usingisIncludedInoperator - 12827 – Total calculation issue when rows are collapsed and filter applied
- 12929 – Half-pixel column border in Chromium based browsers
- 12934 – BUG Crash in
TreeGridwhensparseIndexis enabled - 12943 – Column headers announce "press Enter to sort" even when sorting is disabled
- 12963 –
ResourceTabCosts table layout crash after change language - 12966 – Panel toolbar
border : truecaused rounded corners onbbarand doubled borders ontbar - 12997 – Popup error when requesting full screen
- 12998 – Combo editor crashed with
TypeErrorinRowExpandernested grid inside shadow DOM - 13002 – Summary calculated incorrectly when filter or tree collapse changed visible records
- 13014 – Kitchen-sink example: clicking a day button in the
DayButtonswidget threwTypeError: Cannot read properties of undefined (reading 'show') - 13026 –
DatePickernavigation broken after selecting trailing next-month cell - 13048 – Add
has aDateHelperparser token to ingest hours
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.2.3
2026-04-09FEATURES / ENHANCEMENTS
- Grid now automatically sets
htmlEncodetofalsewhen a column renderer returns static HTML andhtmlEncodewas not explicitly configured. Aconsole.infomessage is logged to suggest setting it explicitly (12737)
STYLING CHANGES
- Tweaked CSS for Material 3 fields without
labelPositionspecified, to match layout used whenlabelPosition: 'above'is set (12858) - The styling for placeholders in cells used during lazy loading was tweaked to not overlap cell borders
BUG FIXES
- 9401 – Allow number editor to allow entering decimals starting with period
- 12319 –
onInputnow correctly relays DOM input events inDateTimeField - 12778 –
reapplyFilterOnUpdatenot working when filter batching is active (e.g. duringapplyProjectChanges) - 12780 –
LockRowsfilterFnconfig not functioning correctly - 12815 –
Combowith chained store not updating correctly - 12835 –
Grid:scrollRowIntoViewhighlight callback crashes if row not rendered - 12844 – Grid State restoration for collapsible column breaks
- 12852 – Pinch zoom renders floating widgets out of place
- 12862 – Expanding tree node still animates while
transition.toggleTreeNode = false - 12867 –
ChatButtontooltip content for different button states does not show - 12880 – Shift multi-selection does not preserve anchor when initiated with Shift
- 12884 – STM redo produces wrong sort order when tree store has an active filter
- 12886 – Empty cell menu on right click
- 12904 – Print feature missing child columns under collapsible parent columns
- 12907 – Crash on
store.add()in a grouped grid rendered inside invisible element - 12918 – RTL icon mirroring
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.2.2
2026-03-19FEATURES / ENHANCEMENTS
- The
KeyMapmixin’skeyMapproperty now accepts atargetSelectorproperty which filters keystrokes to only those originating from inside elements matching the specified CSS selector - Added
treeGroupevent toTreeGroupfeature, fired when tree grouping levels change (12600)
API CHANGES
- DEPRECATED
DomSync.removeChild()– useDomSync.remove()instead, which derives the parent automatically
LOCALE UPDATES
- A
expandedRowContenthas been added to the language files. The value will be rendered into thearia-labelof the RowExpander’s body element
BUG FIXES
- 12893 –
TreeGrouploses expanded/collapsed state when store data is replaced via framework wrapper - 11036 – HIGH PRIO Compressing grid horizontally causes column misalignment
- 11888 – German locale unit names should be capitalized (nouns are always capitalized in German)
- 12461 – Toggling tree nodes with a subgrid collapsed no longer causes errors
- 12548 – Grid column header drag proxy misplaced in RTL when reordering column headers
- 12628 –
DomSync.removeChilderror when removing descendant elements (e.g. nested events) - 12672 – Grid with
hideHeaders: trueruntime error on focus - 12702 –
WidgetColumnDateFieldpicker config corrupted after row collapse/expand - 12703 –
Combochangeevent not fired when settingpanel.valueswith remoteAjaxStore - 12713 – New data series config option
barWidthnow allows controlling the size of bars in bar charts - 12722 – Empty
DisplayFieldhas incorrect (smaller) height - 12744 –
idFieldwithpersist: falseis still sent to backend - 12748 – Previously focused
Popuprefocused when window loses and regains focus - 12750 –
DatePickereditMonthset tofalseshould useinertnotdisabled - 12753 – Changing cards in a card layout too quickly corrupts the layout
- 12775 – Context Menu Cut row styling not visually changing
- 12779 – SALESFORCE Drag from unplanned grid isn’t working
- 12783 – Dynamic
clsprop not relayed to split/locked clones - 12786 – Grid – Mismatch in sorter properties received by sort event
- 12798 – HSL color definitions missing
%on saturation broke colors on older Safari/iOS - 12804 –
DateTimeFieldTAB key trapped focus whenTimeFieldwas hidden - 12819 – Field with
containerproperty does not have correct grid layout applied - 12836 – Grid:
scrollColumnIntoView()crashes when column is not found - 12848 – Spacer sorted to end when toolbar items defined using object form
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.2.1
2026-02-26DEMOS
- The login process for the new Grid AI demo has been fixed, try the demo here: https://bryntum.com/products/grid/examples/ai-project-summary/
BUG FIXES
- 10695 – HIGH PRIO Column with remote store combo editor doesn’t work when filterParamName is set
- 12575 –
LockRowsfeature row hover persists when moving mouse between locked and unlocked sections - 12662 –
toggleGroupevent not fired when group toggle animation is enabled - 12679 – Factoryable splits type string on spaces as well as commas when registering a class
- 12696 – DOCS Column renderer docs does not mention JSX
- 12700 –
StringHelper.hyphenate()crash when called withundefinedornull - 12709 – Not possible to re-select child columns of grouped columns in export dialog
- 12725 – Kitchen-sink demo tool buttons should be borderless, panel numbers not updating
- 12726 –
StoreChaineddoes not refresh on master store batch operations
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.2.0
2026-02-24FEATURES / ENHANCEMENTS
- Added new
ProgressBarwidget to show a progress bar. Check it out in the newkitchen-sinkdemo - We’ve added a new AI feature which provides an AI agent for the Grid. By using the provided chat panel, the user can ask the agent to interact with the Grid in different ways. For example, the user can ask the agent to filter the data, sort it, or select specific records. The agent can also perform data manipulation operations such as adding, updating, deleting records. The feature and all its related components are marked as experimental and are subject to change.
Widget.query()/Widget.queryAll()now support#idandattr=valueselectors, and accept widget instances directly (returned as-is) (1979)- Added
TreeColumnMixinwhich allows any column type to be used as a tree column by addingtree: trueto the column config. For example,{ type: 'check', tree: true }creates aCheckColumnwith tree functionality (3602) - The
RowExpanderbody element has received a few accessibility upgrades. Most notably the possibility to focus the body element while keyboard navigating and also to focus inner elements like buttons or text fields using keyboard (10491) Widgetnow auto-loads Font Awesome from CDN when it detects Font Awesome icons are expected but no Font Awesome fonts are loaded. A console warning is shown recommending bundling Font Awesome for production use
API CHANGES
- Removed the internal
chainkey frompluginConfig. Useafterinstead, which has the same functionality. Theafterkey is symmetric withbefore(12581)
STYLING CHANGES
Containerhas new CSS variables for bordered containers:--b-container-border-widthand--b-container-border-colorButtontext element now usesspaninstead of invalidlabelelement (12453)
LOCALE UPDATES
- An
expandedRowContenthas been added to the language files. The value will be rendered into thearia-labelof theRowExpander‘s body element
DEMOS
- Added a new Kitchen Sink demo showcasing all the various widgets included in the Bryntum Grid package. The demo is located in the
examples/kitchen-sinkfolder (3961) - Added
ai-project-summarydemo showing the AI agent in action. Demo is located in theexamples/ai-project-summaryfolder
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.1.3
2026-02-18BUG FIXES
- 9724 –
columnCollapseToggleevent missing from TypeScript types - 10394 –
ComboonChangeevent reporteduserAction: truewhen value was set programmatically while picker was open - 11674 –
CheckColumnheader "Select All" checkbox now respects grid and columnreadOnlystate - 12494 – Salesforce Resizing columns with disabled Lightning Web Security
- 12567 – Impossible to hover collapse icon inside grid splitter
- 12609 – Collapsed child panels inside a
drawerPanelhad their collapse-revealer headers hidden - 12659 – Fixed crash when clicking
Comboafter toolbar overflow cycle
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.1.2
2026-02-09FEATURES / ENHANCEMENTS
- Improved "bundle loaded multiple times" exception to show import URLs (9296)
BUG FIXES
- 2048 – Override logging now shows proper class names instead of minified names
- 4085 –
EventHelper.removeEventListenernow clears pending delayed handler calls - 4801 – Field label text should not be selectable
- 7556 – Column
instantUpdatenow responds to combo select events immediately - 8962 –
TreeGroupfeature not supportingdisabledproperty - 9325 – WBS value incorrect when reordering a task to the last position with filters applied
- 9613 –
GridLocationTypeScript type now includesgrid,record, andcolumnproperties - 11746 – Cell editing not working after store record ID change (e.g., after CrudManager sync)
- 11762 – Incorrect column
groupRenderermethod used when changing group by column - 11766 – MessageDialog: Button text not visible when ariaLabel matches text
- 11943 – ActionColumn now supports
ariaHasPopupproperty in ActionConfig for accessibility - 12483 – Keyboard navigation sometimes does not bring new active item into view
- 12491 – Container
onFieldChangenow receives correctsourceproperty when field events are suspended - 12502 – FontAwesome 6 "regular" import breaks checkbox and other icons
- 12511 – Incorrect alignment when icons are used in tree column
- 12512 –
CheckboxGroupdid not firechangeevent when setting value viaContainer.record - 12513 – Tree node move operations now respect
reapplyFilterOnAddconfig - 12515 – TypeScript
Store.filter()can now be called without arguments to reapply filters - 12520 – Custom columns with Container-based
headerWidgetsfail during construction - 12523 – SubGrid jump when clicking row in nested grid
- 12529 – HIGH PRIO Columns misrendered when flex and width are both set
- 12542 –
FilterBarwidgets rendered on each toggle whenColumn.idFieldis not default - 12549 – Nested menu items with checking enabled not closing menu structure when
closeParentconfigured - 12551 –
CheckColumndoes not respectfinalizeCellEdit - 12552 – TypeScript Grid row hover state persists after mouse is moved to column header
- 12558 – DOCS Label width not respected when label set dynamically
- 12560 –
RadioGroupitems misalignment wheninlineisfalse - 12568 –
FilePickerbutton badge cropped - 12570 – TypeScript
Print.print()andPdfExport.export()now have proper config type definitions - 12594 –
AjaxStorewithremoteSortorremoteFilterset tofalsestill appended sort or filter params to URL
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.1.1
2026-01-22FEATURES / ENHANCEMENTS
- List
virtualizeconfig is now public, allowing virtualization to be enabled in environments whereIntersectionObserveris available
BUG FIXES
- 6466 – TypeScript
responsiveLevelstype now allows configuration objects withlevelWidth - 10166 – Incorrect typing for
beforePasteevent missingtextanddataparameters - 11427 – HIGH PRIO
aria-labelgets reset to last non-null value when widget is focused - 11920 – HIGH PRIO Salesforce Unable to select combo editor values with keyboard if LWS disabled
- 12420 – Duplicate new record added after cell edit when focus is reverted to an "Add record" button
- 12441 – Print feature should not show export progress message
- 12445 – Long text in grid cell is overflowing in cell edit mode
- 12446 – The
Columnclass should be Factoryable so that it can be created in the same way asWidget - 12490 – Font Awesome Pro style prefixes (
fa-light,fa-regular, etc.) no longer get basefaclass added - 12492 –
Combo.updateStoreshould properly handlenullstore assignment
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.1.0
2025-12-19FEATURES / ENHANCEMENTS
- Added new
highlightCells()andunhighlightCells()methods to Grid for programmatically highlighting cells. Supports two highlight modes:'fade'(dims non-highlighted cells) and'color'(applies background color to highlighted cells). Also supports auto-scrolling to highlighted cells and auto-unhighlighting after a specified duration (10110) - Added
dragSelectproperty toDatePickerwhich means that if you are usingmultiSelect, a drag over cells will select the date range.
API CHANGES
- Sliders used
labelWidthfor both their value label and their main label. Now,labelWidthonly affects the main label, while a newvalueLabelWidthconfig controls the width of the value label (12395)
STYLING CHANGES
- Added a new
fluent2theme, available in both a light and dark variant (10338)
BUG FIXES
- 12246 – Padded
ButtonGroupneeds:activebutton styling - 12353 – Implement Salesforce support for
7.0 - 12357 – Grid crash when deleting a record from a grouped view
- 12384 – Material 3 styling issues in filter menu of the Gantt
- 12394 –
'b-outer'rule should not be seen in a deep widget hierarchy
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.0.2
2025-12-16FEATURES / ENHANCEMENTS
- The
Buttonsplitconfig now accepts the valuemouseoverto mean that the menu shows as soon as the mouse pointer enters the split icon. Setting it tohovermeans that the menu hides when the mouse pointer leaves the split icon to anywhere else but the menu
API CHANGES
- DEPRECATED LoadMask
htmlconfig is now deprecated. Usetextconfig instead
STYLING CHANGES
- To allow easier customization of icons, all
.b-icon-xxrules now have a corresponding--b-icon-xxCSS variable used for thecontentof the icon pseudo-element. For example,.b-icon-searchnow has a--b-icon-searchvariable
BUG FIXES
- 8789 – ANGULAR Multiple regions for Row Expander configuration trigger TS error
- 10235 – HIGH PRIO Invalid Group Order If State Doesn’t Have Ascending Key
- 11770 – Remote combo triggers store load even with returning false to
beforeLoadlistener - 11860 –
Ctrlclick on rendered cells with links not selectable - 12173 – Should be able to reset
Containerfield value in granular way - 12325 – Maximum call stack size exceeded when selecting nodes in a huge TreeGrid dataset
- 12337 –
loadMaskconfig ignoreshtmlconfig - 12355 – HIGH PRIO
gotoNextHitandgotoPrevHitdo not work when scrolling far past last selected occurrence - 12361 – HIGH PRIO Import from Excel shows incorrectly formatted dates and currencies
- 12380 –
CheckboxGroupvalues are not set within Form
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.0.1
2025-12-05API CHANGES
- DEPRECATED The
eventproperty ofButton‘sclickandactionevents has been deprecated and replaced by thedomEventproperty to better align with naming elsewhere (reducing risk of confusion with Bryntum event objects and Bryntum Scheduler events). It will be removed in a future major release
STYLING CHANGES
- Added a new
padded-filledrendition toButtonGroup. It renders similarly topaddedbut with a filled button style (using the primary color, 12335)
BUG FIXES
- 9934 – DOCS Column renderer
@returnsvalue missingHTMLElement - 11425 –
CheckColumnonToggle not fired - 11597 – Home key does not work while editing a grid cell
- 12130 –
TreeGrid– Header checkbox unselected after first selecting all then toggling a parent node - 12229 –
TreeColumnfolder icon issue - 12262 –
gotoNextHitandgotoPrevHitinSearchfeature doesn’t work correct withGroupfeature enabled - 12265 –
EventEditorand other floating drawers need more accented box shadow - 12268 – Badge overflows if column is narrow in Grid project-summary demo
- 12278 –
DateRangeFieldpicker next icon cropped - 12281 – Docs theme not always toggled correctly
- 12287 – Docs headers remain white on loading
- 12291 – Crash when toggling non-rendered parent node with transitions enabled
- 12295 – Error when adding new record to empty store with animated insert
- 12306 – Inconsistent grid header padding in v7 themes
- 12308 – Initial Grid state not restored
- 12310 – Svalbard theme filter input compact mode border radius
- 12313 – Bryntum 7 css selector too broad
- 12324 – Delayable leaking timeout map
- 12328 – Group title cells should not honour the column’s align property
- 12339 – Color cell content is misplaced when search hit is complete
- 12340 – Container
layout: 'fit'has no effect
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 7.0.0
2025-11-25We are proud to announce version 7.0 of our products. In this update we have overhauled the look and feel of all products, introducing a new CSS variable based theming system with the following new themes available: * Svalbard – our new default theme, flat and modern * Visby – inspired by the town’s old ring wall, uses more borders * Material3 – newer material, up from v1 * Stockholm – a refreshed classic * High contrast – more contrast between text and backgrounds
A special thanks to everyone who helped us by testing our alpha and beta versions. Your feedback and support have been invaluable
FEATURES / ENHANCEMENTS
- All Bryntum products have had a major visual overhaul, modernizing not only their look but also the underlying CSS. See the "Styling changes" section below for more details, and be sure to check out our updated demos
- Updated versioning scheme: for Alpha and Beta pre-releases now follow semantic versioning format (e.g.,
7.0.0-alpha.1,7.0.0-beta.1) - The
RowReorderfeature can now be configured to show drag handles only when hovering a row (by configuringshowGrip: 'hover'), making it less visually intrusive - A new feature called
AIFilterhas been added to the Grid. This feature allows users to filter grid data using natural language input, powered by an AI agent hooked up to a large language model (LLM) such as OpenAI’s GPT-4 - Collapsing grouped columns no longer affects the column’s
hiddenconfig, allowing columns hidden through other means to stay hidden when toggling groups. When using thetoggleAllmode, initial state is determined using the newtoggleAllHiddenfield (11956) - Added new
PinColumnsfeature, which allows users to pin columns to start or end side of the Grid without needing any additional configuration for subGrids. This feature adds aPin columnsoption to the column header and cell context menu, enabling users to pin columns on either side of the Grid (11634) - TypeScript Improved TypeScript definitions to support function parameters in typedef declarations
- You can now define where the Grid´s
emptyTextis displayed using the newregionproperty of theemptyTextproperty. It accepts values likelocked,normalby default
API CHANGES
- BREAKING
DatePicker‘scellRendereris now passed the cell element as thecellproperty of its render context. The inner element into which new content can be added is passed asinnerCell. Previously the inner element was passed in thecellproperty. This will only affect your apps if you have implemented acellRendererin anyDatePicker - Added a new parameter
clearChangesto the store’sapplyChangesetmethod which, when passed asfalse, applies changes to the store without committing them, keeping the store dirty. By default, it istrue. (11089) - BREAKING The
modeconfig ofMaskwas removed. Style the mask using CSS instead. - BREAKING The
getTranslateX/Y()fns ofDomHelpernow only handle thetranslateproperty, it no longer parsestransformvariants - Collapsing, expanding, showing and hiding columns can now be transitioned, because of that the corresponding APIs are now
async - Adding and removing chips from a
ChipViewcan now be transitioned, making the response to those actionsasync - DEPRECATED The following individual animation related configs has been deprecated in favor of the new
transitionconfig:Grid.animateRemovingRows,Grid.animateTreeNodeToggle,Grid.animateFilterRemovalsandRegionResize.animateCollapseExpand - BREAKING The previously deprecated support for
zipcelxin theExcelExporterfeature has been removed. Use thewrite-excel-filepackage instead, or implement a custom provider. - BREAKING The
dateFormatconfig on theExcelExporternow defaults tonull– which exports dates instead of date strings - BREAKING To determine if a child column is hidden by its group being collapsed, the
hiddenfield has been replaced by a readonlyhiddenByCollapseproperty - BREAKING The following previously deprecated API’s have been removed: *
Histogram.getRectClass()*Store.originalCount*Store.allCount*Store.makeChained()*WidgetHelper*Widget.ariaLive*PercentColumn.showCircle*RowExpanderevents:beforeExpand,beforeCollapse,expand,collapse*ExcelExporter.zipcelx
STYLING CHANGES
- BREAKING The styling of all Bryntum products has been migrated from SASS to nested CSS with custom properties (CSS variables). This change makes it much easier to create custom themes, and to change styling settings at runtime. But the change is not backwards compatible, any custom themes will have to be remade using the new system. The built-in themes and how they are applied to an app have also changed, we now ship 4 themes: Material3, Stockholm, Svalbard & Visby + a high contrast theme. Each theme has a light and dark variant. Check out the what’s new guide and the updated styling guides for more information
- BREAKING Bryntum CSS selectors have been normalized to use consistent hyphenated names (kebab-casing). For example, the
TabPanelclass used to have theb-tabpanelclass, but is nowb-tab-panel. This change is not backwards compatible, so any custom CSS will have to be updated - BREAKING FontAwesome Free is no longer built into the Bryntum CSS, you will have to include it in your app for the default icons to show up as intended. This also means that the
b-fa-prefix no longer exists, any icons in your app relying on that has to be changed to FontAwesome’s defaultfa-prefix. This change was done to reduce bloat for anyone using another icon set, and also makes it easier for apps to use a different version of FontAwesome - FontAwesome Free was also updated to version
6.7.2 - BREAKING
Container(and subclasses thereof likePanelandPopup) now use a CSS Grid layout by default. You can configure aContainerwithlayout : 'vbox'to get the old default layout - By configuring a
Container(or subclass thereof) withlabelPosition: 'align-before'when using the new default grid layout, field labels will line up nicely in a single column. You can use the newspanandcolumnconfigs to easily position & size fields in the CSS grid - Row borders (bottom border) were moved to cells. This has a couple of advantages: when asking for a row of
50pxheight you now get that height independent of the border height, and it also gives you more styling options if you are making a spreadsheet kind of app where some cells have thicker borders than others. - Built-in more intense animations, such as collapsing columns or tree nodes, are now automatically disabled when
prefers-reduced-motionis set in the user’s OS (5669) - DEPRECATED Bryntum’s
Buttonnow supports a set of different "renditions", different looks (‘filled’, ‘tonal’, ‘outlined’, ‘elevated’, ‘text’). This new system replaces the old CSS class based button variations likeb-raisedandb-transparent. The old CSS classes are now deprecated and will be removed in a future release - Setting
Column.headerWritingModeno longer directly applies the writing mode in thestyleattribute of the header’s text element. Instead, it adds a CSS class to the header element, allowing for more flexible styling
DEMOS
- The
ai-ecommerce-griddemo has been updated to use the newAIFilterfeature. Demo is located in theexamples/ai-ecommerce-gridfolder - New
pin-columnsdemo is added to show the use ofPinColumnsfeature. Demo is located in theexamples/pin-columnsfolder - ANGULAR New
Pin Columnsdemo is added to show the use ofPinColumnsfeature. Demo is located inframeworks/angular/pin-columnsfolder - REACT-VITE New
Pin Columnsdemo is added to show the use ofPinColumnsfeature. Demo is located inframeworks/react-vite/pin-columnsfolder - VUE-3-VITE New
Pin Columnsdemo is added to show the use ofPinColumnsfeature. Demo is located inframeworks/vue-3-vite/pin-columnsfolder - Added
resource-monitordemo showing sparkline charts usingChartColumnwith updating data and animations. Demo is located inexamples/resource-monitorfolder - ANGULAR Added
resource-monitorAngular demo showing sparkline charts usingChartColumnwith updating data and animations. Demo is located inexamples/frameworks/angular/resource-monitorfolder - REACT Added
resource-monitorReact Vite demo showing sparkline charts usingChartColumnwith updating data and animations. Demo is located inexamples/frameworks/react-vite/resource-monitorfolder - VUE-3 Added
resource-monitorVue 3 Vite demo showing sparkline charts usingChartColumnwith updating data and animations. Demo is located inexamples/frameworks/vue-3-vite/resource-monitorfolder - VUE-3-VITE
Column typesdemo has been updated to use Vue 3 + Vite framework. Updated demo is located inframeworks/vue-3-vite/column-typesfolder
BUG FIXES
- 12009 – DOCS Wrong product title in navbar when browsing
7.0.0docs (alpha issue) - 12084 – Resetting combo value to null does not cancel pending filtering request
- 12160 –
AjaxStorepasses sorter details in load packet even with nullishsortParamName - 12191 – Columns menu in ColumnHeaderMenu is not scrollable
- 12217 – Clear trigger being visible when field is
readOnly/disabled - 12220 – If unregistering
CellEdit,GridBasestore filtering fails - 12226 –
revertChangesleaves removed records in the selection array - 12248 – Single page unscaled export does not work correctly over websocket
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Remix:
>= 2.15.0
Version 6.3.4
2025-11-20FEATURES / ENHANCEMENTS
- VUE-3 Vue 3 npm wrapper packages now include
typesdeclaration inpackage.json(12014) - Added sparse index feature to
Storeto reduce the size of updates when re-ordering rows in large datasets (11220)
API CHANGES
DateTimeFielddocs updated clarifying that the input configs cannot be set on this field. Instead, should be configured directly on the underlyingDateFieldandTimeFieldconfigs.
DEMOS
- New "Grid sparse index" demo shows new feature of
Storewith flat data. The demo is located insparse-indexfolder - New "TreeGrid sparse index" demo shows new feature of
Storewith hierarchical data. The demo is located insparse-index-treefolder
BUG FIXES
- 7373 –
ResizeObserverloop completed with undelivered notifications - 8805 –
namedItemsdoes not work withup.namedItemswhen used at items level incellMenu - 11930 – HIGH PRIO Printed content displayed incorrectly in preview
- 11941 – HIGH PRIO
Undowhen afilteris applied results in row being at wrong hierarchy depth - 11965 – Link field text exceeding column width
- 11982 – Dragging a grid header over another grid throws an error
- 11997 –
Combowith filter not using correct format of parameters - 12119 – Selection column gets saved multiple times with state
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.3.3
2025-10-06FEATURES / ENHANCEMENTS
- Added direction parameter when setting a
sortFnonsortablecolumn configuration, and addeddirectionparameter tosortable(11639) - Update documentation section "Clicking in complex widget" to have same function name (11750)
- Setting
createOnUnmatchedtotrueon aCombowill now create a record for the initial value, or a value programmatically set later, if the value does not exist in the store for the combo (11781)
DEMOS
- Our new Salesforce Community page is up and running. It solves the problem caused by recent change in Salesforce policy regarding Non-Revenue Orgs. Look up "Device Activation Is Always Required for Non-Revenue Orgs"
BUG FIXES
- 11618 – HIGH PRIO
TreeGridselection crashes when using selection - 11754 – HIGH PRIO
Comboshould not allow setting incorrectvalueprogrammatically - 11811 – Cell focus issue with async
finalizeCellEditand check type columns - 11845 – Values are not applied to all selected cells when performing edit operations on multiple cells
- 11858 – REACT Icon disappearing in other rows when collapsing parent node with
Treefeature - 11895 –
showCheckAllis not checked in check column initially when all records are checked - 11916 –
RowExpandergrid widget ignoresdragSelectsetting - 11923 – Filter popup draggable is not configurable
- 11933 – List does not toggle tree node collapsed state on click of the toggle icon
- 11936 – Filter icon click toggles sort when filter feature used together with grouping
- 11938 – HIGH PRIO
this.headerWidgetMapundefined error when columns data is applied from the state withcollapsibleandcollapsedcolumn - 11952 – Performance issues on adding multiple columns
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.3.2
2025-09-15FEATURES / ENHANCEMENTS
- Grid columns now support
headerWritingModeto allow for vertical text display in the column header Try it out in the updatedcolumnsdemo. (11739) - ANGULAR Documentation in "Quick start" and "Data Binding" is now updated to reflect Angular 20 file naming conventions
DEMOS
- ANGULAR New
Lock Rowsdemo is added to show the use ofLockRowsfeature. The demo is located inframeworks/angular/lock-rowsfolder - REACT-VITE New
Lock Rowsdemo is added to show the use ofLockRowsfeature. The demo is located inframeworks/react-vite/lock-rowsfolder - VUE-3-VITE New
Lock Rowsdemo is added to show the use ofLockRowsfeature. The demo is located inframeworks/vue-3-vite/lock-rowsfolder
BUG FIXES
- 11407 – Subclassed toolbar places
spacer : '->'last of the items - 11422 – HIGH PRIO
CheckListFilterCombois not customizable, and is not accessible - 11691 –
RowExpander‘s widget.store config not applied to the store - 11743 – Export to PNG fails
- 11785 – Event handlers should be error-trapped so that the stack is not destroyed
- 11801 – HIGH PRIO Grid’s cell edit not saving changes when clicking to row above (Mobile devices)
- 11805 – VUE-3
LockRowsfeature throws error - 11838 –
store.data = nullclears the store but does not fire the change + dataset event, so UIs do not refresh - 11905 – Export example not working
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.3.1
2025-08-07FEATURES / ENHANCEMENTS
- Internal code improvements and bugfixes
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.3.0
2025-07-21FEATURES / ENHANCEMENTS
- The
TreeGroupfeature now accepts a custom sort function for parent nodes (9366) - PdfExport feature now supports exporting large datasets by streaming data to the export server using WebSocket connection (3953)
- Added new
Chartsfeature, which leverages the newChartandChartDesignerwidgets to enable developers and end users to easily create charts and visualize data directly from selected cells in Bryntum products. Check the "What’s new" guide for details (8442) - New Single Page Unscaled exporter is added. It allows exporting content to a single page without limiting to a specific paper size. PDF export server upgrade to version
2.1.0is required (11397) - Bryntum now ships a
Chartmodule (chart.module.thin.js), to easier integrateChart.js-based charts with our products. Used in the newchartsdemo - Bryntum npm repository provides charts thin package
@bryntum/chart-thinand wrapper packages for major frameworks: Angular (@bryntum/chart-angular-thin), React (@bryntum/chart-react-thin) and Vue 3 (@bryntum/chart-vue-3-thin) - Added Grid columns that can show charts:
SparklineColumnandChartColumn - To pave the way for future improvements, Grid cells are now absolutely positioned inside the rows. A cell size is matched with the size of its column’s header using a
ResizeObserver. If you see any side effect of this change in your app, please report it to us
API CHANGES
- BREAKING The
rendererconfig ofColumnis now also a class property. For TypeScript applications that extend theColumnclass or its descendants and override therendererfunction, you will need to use the following declaration:override renderer: Column'renderer' = ({ column, value }) => { ... };
LOCALE UPDATES
- Moved translations from section
PanelCollapsertoObject - Changed the
Object.collapseandObject.expandkeys to lowercase for consistency - Following locale keys added
SinglePageUnscaledExporter.singlepageunscaled
DEMOS
- New demo with TinyMCE showing how to use a rich text editor in a Grid cell. The demo is located in
examples/tinymce-editorfolder (10679) - New
chartsdemo, showcasing how to combine the newChartsfeature - New
sparklinesdemo, showcasing how to use the newSparklineColumn
BUG FIXES
- 11304 –
Panelcollapse icon does not display any tooltip - 11492 – Tiny MCE editor demo has the wrong index page
- 11615 –
scrollRowIntoView‘s highlight config isn’t passing the item when configured as a function - 11648 – Possible to select multiple radio items
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.5
2025-07-09FEATURES / ENHANCEMENTS
- Linked records (created using
record.link()) now have a publicoriginalRecordproperty that points to the original record. And the original record has alinkedRecordsarray that contains all the links to it - AjaxStore’s
beforeRequestevent allows async event handlers (11542)
STYLING CHANGES
- When using animated row removal (
animateRemovingRows), theb-deleting-rowCSS class is now applied to the row being removed. You can override it to alter the animation used
DEMOS
- The
infinite-scroll-treedemo, which demonstrates the lazy loading support of a tree Grid, has been ported to Angular. It is located in theexamples/frameworks/angular/infinite-scroll-treefolder - The
infinite-scroll-treedemo, which demonstrates the lazy loading support of a tree Grid, has been ported to React. It is located in theexamples/frameworks/react-vite/infinite-scroll-treefolder - The
infinite-scroll-treedemo, which demonstrates the lazy loading support of a tree Grid, has been ported to Vue. It is located in theexamples/frameworks/vue-3-vite/infinite-scroll-treefolder
BUG FIXES
- 8479 – Poor animation when removing a row
- 11355 – TreeGrid crashes with 200K+ data
- 11520 – Right click on the sort icon in the column header should open headerMenu
- 11559 – Store not clearing the
changesoncommitwhen customidFieldis used - 11565 – Grid’s
beforeStateApplyshould describe its properties - 11574 – Screen reader is not announcing filter operation results
- 11584 –
applyChangesetcrashes on remotely filtered store - 11602 –
Tool‘s<button>element needstype="button"
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.4
2025-06-18FEATURES / ENHANCEMENTS
- A lazy loaded tree store no longer requires each parent to provide its full child count via the
remoteChildCountdata field. Instead, it relies on autodetection and, in special cases, the newisFullyLoadedfield can be used instead - The
unloadmethod has been added to a lazy loaded store. For a regular store, it removes the specified records from the store and reloads the next time they are needed. For a tree store, it clears all the child nodes of the specified parent nodes, and reloads them the next time they are needed (8961) showDirtycan be configured now to show red tag for all the cells for the new records. SetnewRecord : trueonshowDirtyto enable it (10344)
API CHANGES
- DEPRECATED The
remoteChildCountfield on a TreeNode was deprecated and will be removed in7.0
DEMOS
- New
infinite-scroll-treedemo, which demonstrates the lazy loading support of a tree Grid. The new demo is located in theexamples/infinite-scroll-treefolder (9714)
BUG FIXES
- 10161 – Windows OS
ContextMenudoes not show after re-rendering of Scheduler - 10904 – HIGH PRIO Refactor pdf export code to generate rows in bulk
- 11221 – HIGH PRIO
ColumnStoresort and re-ordering columns does not work - 11324 – SALESFORCE Expand/collapse not working for tree using keyboard navigation
- 11337 – Pasting invalid text into
TimeFieldresults in permanent invalidity - 11400 – HIGH PRIO Non-editable cell still change value when using multi-select edit
- 11416 – Aria-live not set correctly when using DOM config on empty text
- 11431 – Column state is not restored correctly for
unconfiguredcolumns with sametypeas already exists inColumnStore - 11433 – HIGH PRIO
CellEditcannot cancel editing withEscapekey whenclearableCombois used - 11471 – Export feature should log stack trace to console when export failed
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.3
2025-05-27FEATURES / ENHANCEMENTS
- The
PDF ExportandPrintfeature has a new paper formatA0(11083) - Reordering rows in a flat chained store can now reflect on the master store, if the chained store is configured with
syncOrder: true. Reordering in a chained tree store is always reflected on the master store (11349)
BUG FIXES
- 11045 – Case sensitive filtering is inconsistent
- 11217 –
RowResizefeature doesn’t work with columnautoHeightset totrue - 11343 –
TimeFielddocs mention non-existing step config on the minute field - 11344 –
Slidercomponent cannot be used withinPopupcomponent - 11352 –
TimeFieldis not styled correctly - 11386 – HIGH PRIO
Scrollbarissue after adding columns to empty subgrid - 11394 – HIGH PRIO
FillHandlearea grows on scroll
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.2
2025-05-13FEATURES / ENHANCEMENTS
Listnow has optional support for displaying text when empty, using the newemptyTextconfig- The
ChecklistFilterCombonow displays "No results found" when there are no results in the list. The string is localized using thenoItemslocale key, which was already part of the locales but mistakenly not used - When reloading a lazy-loaded
Store(including remote filtering and sorting) the current dataset will be kept until the load request finishes. Previously, it was cleared upon starting the reload and populated with new data later. If anAjaxStoreis being used (aStoreconfigured with areadUrl) a load mask will be displayed during the reload operation (11261)
STYLING CHANGES
- The
emptyTextshown in aCombo‘s picker has been promoted to an actual element with the.b-empty-textCSS class applied to it, instead of a harder to style pseudo-element
BUG FIXES
- 3164 – Column with just icon and no text should not use
margin-rightfor its icon - 9558 –
headerHeightin group feature causes rendering issues with large datasets - 10066 – Support
TimeFieldfor Salesforce - 10474 – Cannot add items into container after remove previous using
destroy() - 10829 –
beforeLoadPageshould havesortersandfiltersin the params when using remote store - 10986 –
Store.searchshould get the fields fromrecord.fieldsinstead ofrecord.fieldNames - 11026 –
DatePickernot selecting valid value whenminproperty is updated dynamically - 11131 – Applying store group state after initializing grid does not show group icon in column header
- 11170 – Clicking "Don’t show again" in hints popup doesn’t work
- 11172 – AI support in Grid – Two
updateevents triggered by AI formula - 11175 – AI support in Grid – Referencing
$datain an AI formula error - 11235 – Async cell renderer can throw if the row being rendered is destroyed during the await
- 11252 – Field class should disable OnePassword except for if it is a
PasswordField - 11276 – Headers misaligned after tree grouping
- 11277 – Row reorder drag handle should be aligned to the left
- 11281 –
DragHelperexample not working properly - 11294 – Copying a cell when using
FillHandle/ cell selection shows double bottom border
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.1
2025-04-23FEATURES / ENHANCEMENTS
DateFieldnow reveals its expected format when input is in incorrect formatAggregateColumnnow has aincludeFilteredOutRecordswhich lets you include filtered out records in the aggregation (11105)
STYLING CHANGES
SlideToggleno longer has a fixed height defined in the CSS. This allows for more flexibility in styling and layout
LOCALE UPDATES
- The
DateFieldinvalidFormatmessage is now updated to include the expected format. New value isformat => 'Invalid date input, expected format is ' + format
BUG FIXES
- 11063 –
TreeColumnhaving redundant icon whileLockRowsenabled - 11070 – HIGH PRIO Online demos in codepen crashes
- 11071 – Grid summary column resize issue
- 11079 – Cell pasting is inconsistent based on a drag direction
- 11084 –
expandAll/collapseAllcrashes when using GroupSummary feature - 11097 – Should not show "invalid field" while typing the field name
- 11104 – Resizing
Popupsometimes does not stop after mouse-up - 11117 –
Toastprogress aborted in demos after5s
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.2.0
2025-04-10FEATURES / ENHANCEMENTS
TabPanelnow supports adding custom widgets to thetabBarviaContainer#tabBarItems. See updated live demo on theTabPaneldocs page (10047)- Tabs in a
TabPanelcan now be reordered using drag-drop, by settingenableReorderingtotrueon thetabBar(10489) - New
MonthPickerwidget for date picking and calendar control - We’ve improved search in the documentation with new context-aware algorithms, delivering more accurate and relevant results from the API, guides & examples
PdfExportfeature was updated to support row expander. It requires upgrading PDF Export Server to latest version2.0.0which was recently released in a separate GitHub repository and Docker Hub (10533)- A new feature,
RowEdit, allows editing of a whole record row at one time using a side docked editor panel (10690) - A new config for
Panel,drawermarks aPanelas a docked, slide-in panel, which by default slides in over the contents of the browser viewport - Tabs in a
TabPanelthat contain invalid input fields will now have a red border to highlight the invalid state (10789) RowReorderfeature now allows drag-drop reordering of rows into new groups to update values of leaf nodes (5689)- Setting
requiredon a Field now automatically appends a * to its label, ifshowRequiredIndicatoris set totrue(10835) - New
CheckboxGroupwidget added (2018) - Popups can now be resized on all sides and corners via the new
resizableproperty (6856) - Decimal separator and group separator for formatted numbers can now be configured globally using new static properties on
NumberFormat:decimalSeparatorandgroupSeparator(11016) - BREAKING Since most apps have a build process that includes a transpilation step, starting with
v6.2.0we use the minimum possible transpile polyfills for the source code inside the@bryntum/grid-thinnpm package to ensure that it works for all currently supported frameworks. Previously, each source file was transpiled with more polyfills, which introduced unnecessary overhead from transpilation helper functions. After this change, the size of your built app should be reduced. If you encounter issues with your framework’s builder parsing the code, consider upgrading to a newer framework version that supports the latest ECMAScript specification (10797)
API CHANGES
- The
Widget.accessibilityproperty has been removed. We now detect when keyboard control is being used, and this can be read from the newWidget.focusVisibleproperty - Widget drag-drop is no longer done using the native HTML drag-drop (10793)
- Popups are now
draggableby default - The type of the
valueproperty on checkboxes was for legacy reasonsString, it has now been changed to the more expectedBoolean - BREAKING The
AjaxHelper.fetch()utility function no longer appliescredentials: 'include'by default, to better match how the nativefetchAPI works. This change also affectsAjaxStore, if used by your app to handle remote data (10886)
STYLING CHANGES
- Grid cells with overflowing text now use ellipsis by default. If you prefer the old behavior where text is cropped, set Grid’s
cellEllipsisproperty tofalse(2982) - Changed the
showDirtyindicator pseudo-element from:beforeto:afterso both therowReordergrip handle and theshowDirtyindicator can display simultaneously. If you have custom styles targeting:beforeforshowDirtyindicator, please update them to target:afterinstead (10966) multiSelectLists now display empty checkbox icons when unselected and checked checkboxes when selected
LOCALE UPDATES
- Added translation keys
Object.informationandObject.showDetails,Object.to,Object.at,Object.on,Object.editing,Object.settings,Object.go - New locale key
Toolbar.showOverflowingItemsadded for the tooltip shown for toolbar overflow scroll buttons - New locale key
RowNumberColumn.rowNumberadded for theRowNumberColumnheader tooltip
DEMOS
- New
roweditdemo, which Demonstrates theRowEditfeature, that edits records in a docked panel. The new demo is located inexamples/roweditfolder - New
ai-review-griddemo showing how to use aFormulaProviderto populate field values using AI. Demo located inexamples/ai-review-gridfolder - New
ai-ecommerce-griddemo showing how to use AI to generate SEO description + keywords in bulk. Demo located inexamples/ai-ecommerce-gridfolder
BUG FIXES
- 10373 –
Filterdropdown should include thesameDayandsameTimeoperators - 10623 – Misalignment dragging tab last
- 10625 – ACCESSIBILITY
CheckboxandTabselector buttons have no visible focus rendition - 10868 – Previous filter not shown when filtering assigned resources
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.1.9
2025-04-07FEATURES / ENHANCEMENTS
- Added a new
stateSettingsconfig to control how column state is restored. It includes arestoreUnconfiguredColumnsoption to toggle whethercolumnsnot explicitly defined in the grid configuration should be restored (10943)
BUG FIXES
- 8782 – Salesforce LWS support in Firefox
- 11014 – Export Issue: Column Type ChipView is empty on export
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.1.8
2025-04-01FEATURES / ENHANCEMENTS
- We’ve launched nightly npm package builds on our Bryntum npm server. Versions follow the format
X.Y.Z-nightly.YYYYMMDD(e.g.6.1.8-nightly.20250330), reflecting the current version and publish date - When using the
CellEditfeature, cells, which contain focusable elements may now be included in thecell-to-cellnavigation by settingtabToFocusablesproperty (6999) - A grid store filter, which results in only removal of a contiguous block of records within the visible viewport will now update the UI in the same way as a store
removeoperation (10706) - The
CellCopyPastefeature now supports pasting into multiple non-contiguous cells (10696) - New
applyDefaultsmethod added to theBaseclass to allow setting default values for class configs/properties (10876) AggregateColumnnow lets you toggle aggregation on / off using the newenableAggregationfield (10909)PdfExportnow has anisExportingproperty, which you can use to check if an export operation is ongoing (10947)LockRowsfeatures now supports configuring the bottom grid section using thebottomGridConfigconfig (10958)Combowidget now supports togglingmultiSelectmode on / off at runtimePanelheaderconfig now accepts aniconClsproperty to show an icon in the headerTreeNodeallUnfilteredChildrenproperty is now public, allowing you to retrieve all children of a node, ignoring any active store filters (11013)
API CHANGES
- The
rtlconfig property of widgets is now public. By default, widgets conform to the writing direction of the element they are rendered to. But with the now publicrtlproperty, you can force a widget, and all descendant widgets to lay out from right to left (10859) - The
Widget‘selementAttributesconfig is now public allowing to specify attributes to assign to the root element of this widget (10940)
DEMOS
- We have introduced UI localization for our Vanilla JavaScript demos, supporting all 45 currently available locales
BUG FIXES
- 10206 –
parentIdfield cannot be remapped - 10621 – HIGH PRIO Opening month picker in event editor closes entire editor in Safari
- 10636 –
groupRenderernot triggering for empty string values during Excel export - 10701 – TYPESCRIPT Update
AjaxStorebeforeRequestandafterRequestparameters docs - 10726 –
Gridcrashes and shows a blank section when scrolling to an invalid editor outside the viewport - 10763 –
Gridnot using correctAjaxHelper.DEFAULT_FETCH_OPTIONSfor paged stores - 10795 – SALESFORCE Remove
Map/Setpolyfills - 10812 –
Fillhandledisappears if mouseup happens outside browser window - 10814 – HIGH PRIO Column header misaligned if resize when used regions
- 10825 –
Gridcrashes when reverting changes and reapplying filters on update - 10826 – Error when specifying
labelWidthwith'label'forDateRangeFieldwidget - 10840 – Cells still selected when returning
falsefrom aselectionChangelistener - 10854 – Selecting multiple cells should copy all the selected cell Records when
cellCopyPasteis disabled - 10874 –
Griderror withfinalizeCellEditand sorting - 10889 – Export to excel should include group header
- 10897 – Sticky elements not correctly accounted for when calculating visible rectangle
- 10924 – React Editor popup cutoff on last row
- 10938 – HIGH PRIO Incorrect CSS
sourceMappingURLin Bryntum thin npm packages - 10944 –
Gridcolumn with combo editor behaves different with picker title specified - 11002 –
GridIncorrect focus behaviour when editing grouping fields of records
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.1.7
2025-02-21FEATURES / ENHANCEMENTS
- Copied
Modelinstances now have acopyOfproperty that points to the original instance (10587) - The
Buttonclass now accepts asplitproperty, which means that its menu will only be shown when clicking on its arrow icon, and it will only toggle itspressedstate and action itsclickhandler when clicking on the main part (10678) - A new config,
scrollActionfor theCellEditfeature specifies what should happen if the cell editor is scrolled out of view, for example when using a mousewheel. The default value isnullwhich preserves the current behaviour of continuing the edit (10760) - The
CellEditfeature now supports rendering the editor as a floating element outside the cell element (10767)
API CHANGES
- Tree stores got a new
keepExpandedOnLoadconfig inv6.1.4, but it fell out of the changelog. When set totrue, the tree will restore matching nodes expansion state after a reload (10017)
DEMOS
- REACT-VITE "Vue Renderer" JavaScript demo has been updated to use to React + Vite. The new demo is located in
examples/frameworks/vue-3-vite/vue-rendererfolder (10680) - REACT-VITE New
infinite-scrolldemo showing how to load data on demand using RTK Query + lazyLoad feature of Bryntum Grid. Demo is located inexamples/frameworks/react-vite/infinite-scrollfolder (9886) - New Demo
collapsible-inline-columnsshowing collapsing / expanding of inline columns. Demo is located inexamples/collapsible-inline-columnsfolder (10266)
BUG FIXES
- 9587 – HIGH PRIO
StoreDataFieldchange tracking not working when using store field - 10586 –
TreeGroupcheck column not grouping null values with false - 10652 – Grid crashes on
store.removeAll()whenlazy-loadingenabled - 10665 – VUE-3 Unexpected warnings from the wrapper
- 10699 –
deselectFilteredOutRecordsnot working on a Tree Grid - 10704 – Check column still changes when column is set to be
readOnly - 10714 – Clicking on custom expand and collapse icon makes record selected
- 10715 –
StateProviderdoesn’t preserve thescrollTop - 10739 – Horizontal time axis scroll position reset when entering time axis header using keyboard
- 10761 – Using
scrollableconfig insubGridconfiguration breaks the SubGrid’s scrollability - 10763 – Grid not using correct
AjaxHelper.DEFAULT_FETCH_OPTIONS - 10784 – Groups not collapsing when using a check column
- 10785 – HIGH PRIO Exception when dragging linked record to an empty group
- 10787 – Wrong width then using row reorder and selectable row
- 10794 – Column filter not clearing correctly when empty input
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.78.0 - Remix:
>= 2.15.0
Version 6.1.6
2025-01-31FEATURES / ENHANCEMENTS
- ACCESSIBILITY
TreeColumncells in parent rows now include anaria-expandedvalue ensuring that row collapsed state is announced (4643) - Tabs in a
TabPanelcan now beclosablewhich shows an X icon (8679) - ACCESSIBILITY
FilterBarfields now have anaria-labeldefined to let screen readers announce context - ACCESSIBILITY
Widgetnow has anannounceAriaLivemethod letting you provide a text message to screen readers via anaria-liveelement - The
CellEditfeature now supports usingWebComponentsas input elements making it possible to provide an Angular component as a cell editor (10471)
API CHANGES
- DEPRECATED Widget
ariaLiveproperty was deprecated and will be removed in7.0
DEMOS
- ANGULAR New Angular
celleditdemo, which Demonstrates theCellEditfeature has been added. New demo is located inexamples/frameworks/angular/celleditfolder - REACT-VITE Added React Color cell editor to
cell-editexample to demonstrate how to use popup editors. Updated the React version of the demo to19.0.7and Vite version to6.0.9. Demo is located inexamples/frameworks/react-vite/cell-editfolder
BUG FIXES
- 73 – React components rendered inside the cells are not overflowing it
- 1356 – Export summary rows to Excel
- 4280 – Pressing shift shows cell focus outline
- 9518 – Sort count is being shown when only 1 sort count is used along with grouping
- 9946 – Resolve prototype pollution warnings from GitHub Advanced Security
- 10215 – ACCESSIBILITY No records found after the filtering the scheduler not announced by the Voice-Over
- 10407 –
DateRangeFieldignoresclearableconfig - 10428 – Enable CSS targeting of column-specific filter UI fields
- 10466 – Nested grid with chart demo race condition
- 10490 – ACCESSIBILITY
RowExpandercolumn has noaria-label - 10495 – ACCESSIBILITY
RowExpanderbutton needsaria-label - 10516 –
TimeFieldlabel misaligned if initial value has not been set - 10519 – Grid splitter has lower
z-indexthanemptyText - 10591 – HIGH PRIO Not possible to provide
ariaLabelin Column subclass - 10617 –
Shift + Backspaceclears text field value - 10624 – HIGH PRIO
CellEditfreezes when tabbing into readonly row
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.38.0
Version 6.1.5
2024-12-25BUG FIXES
- 10393 – VUE-3-NUXT Basic demo doesn’t display the demo title
- 10467 – Moving a column to the left section does not work when using
LockRows - 10468 –
emptyTextshould not show during store load - 10488 – HIGH PRIO
grid-taskboarddemo code is not available in online Code Editor - 10496 – ACCESSIBILITY Key navigation stuck after landing on a checkbox inside a grid cell
- 10502 – ACCESSIBILITY Rating column cannot be edited using keyboard
- 10504 – ACCESSIBILITY
TimeFieldcannot stop editing usingESCkey - 10510 – Configuring a store and items leaves a combo store misconfigured
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.38.0
Version 6.1.4
2024-12-09FEATURES / ENHANCEMENTS
- Starting with the
6.1.4release, there are now trial versions of thin NPM packages available on our NPM server. These can be used to evaluate combining multiple products before purchasing a license. Please check the "What’s new" guide for the details
API CHANGES
- For more similar behavior between browsers,
DateHelper.parsenow ignores very short strings and discards any dates with a year before1900when falling back tonew Date()parsing. This affectsDateFields usingstrictParsing: false(the default). Before this change, Chrome parsed'2'asFeb 2001, while Safari parsed it asJan 0002
STYLING CHANGES
- When dragging multiple grid rows, a new proxy showing each record was added. The old
b-row-dragging-multipleCSS class is no longer used (10340) - Added a new config
closeOnEscapeto control whether pressing theESCkey will close the popup
DEMOS
- ANGULAR Added new Angular
basic-thindemo showing use of thin NPM packages. Demo is located inexamples/frameworks/angular/basic-thinfolder - REACT Added new React
basic-thindemo showing use of thin NPM packages. Demo is located inexamples/frameworks/react-vite/basic-thinfolder - VUE-3 Added new Vue-3
basic-thindemo showing use of thin NPM packages. Demo is located inexamples/frameworks/vue-3-vite/basic-thinfolder - WEBPACK Added new Webpack
basic-thindemo showing use of thin NPM packages. Demo is located inexamples/frameworks/webpack/basic-thinfolder - REACT Added new React
renderer-context-react-19demo showing use of context rendering with React 19 JSX components. Demo is located inexamples/frameworks/react-vite/renderer-context-react-19folder
BUG FIXES
- 7065 – HIGH PRIO Export to PDF feature missing paper formats
- 10364 – Restore expand on non-editable input click for
TextAreaPickerField - 10367 – Context menu opened from keyboard throws in Salesforce
- 10384 – Add missing percentage docs to
Numberfield - 10386 – Adjust increment/decrement/error tooltip handling of percentage
Numberfield - 10397 – Block
ESCkey from propagating in cell editor - 10413 –
FillHandleonly works on the first table selected when there are two or more tables on the page - 10414 –
DatePickerdoesn’t highlight today date - 10415 –
DateFieldpicker shows previously selected date after input is cleared - 10419 – Combo does not return record
- 10424 – RTL Popups with centered set to true are not centered in RTL mode
- 10429 – Keystrokes on actionable items in grid cells no longer work
- 10446 – Records are duplicated when row is dropped to an empty group
- 10448 – REACT JSX renderers are not supported with
React 19 - 10452 – Drop to a group with empty array field should clear the array field on the corresponding record
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.38.0
Version 6.1.3
2024-11-18FEATURES / ENHANCEMENTS
Printfeature is supported in Salesforce with LWS enabled (7917)- The
RowExpanderfeature now exposes therefreshRowfunction, which when called with arecord, refreshes the content of an already expanded row (10167) - A sort direction param was added to
CollectionSorter´ssortFnfunction (10171) - Stores can now be configured with
reapplySortersOnUpdateto trigger sort after a record is updated (877) - Store sorters can now be configured with a
caseSensitiveboolean if you want sorting to be case-insensitive (10267) - Salesforce LWC build now using generators instead of async/await as a workaround for Firefox bug. LWC bundle is now compiled with
"chrome": "54"babel target (7849) - By configuring a data field with
complexMapping : false, it can now point to a data property containing a dot (.), for example{ "member.name" : "value" }. Previously (since v4.1), the dot was always interpreted as a nested object path (10168)
API CHANGES
- The CellEdit
beforeFinishCellEditevent now also includes anoldValueparam - VUE 2 reached end of life on December 31, 2023. As a result, we will no longer be updating our Vue 2 components. While the components will continue to exist, we will remove them in a future release and recommend that you upgrade to Vue 3 for continued support
STYLING CHANGES
- Certain color adjustment functions in SASS has been deprecated and will be removed from SASS in a future version. To be prepared for that, we have replaced our usages of these functions with the new ones. In general, this should not affect the look of components, with reservation for minor color variations (for more information, see https://sass-lang.com/documentation/breaking-changes/color-functions)
DEMOS
- Renamed "theme" demo to "custom-theme". The updated demo is located in
examples/custom-themefolder (10155)
BUG FIXES
- 9018 – HIGH PRIO Localization doesn’t work for Microsoft Dynamics CRM Online
- 9691 –
columnDragevent paraminsertBeforedoes not get updated once we setcontext.validtofalse - 10084 – Error in currency format
- 10127 – Store changes not being tracked as expected when using a tree store with filters
- 10177 – Spamming row expander causes crash
- 10204 – Remove
tbar,bbarandheaderfrom cloned grid in LockRows feature - 10234 – HIGH PRIO Correct formatting of
NumberFieldpercentage with decimal digits - 10255 – Error when replacing data with
parentIdproperty - 10258 –
showAnimationdoes not animate the Popup - 10260 – React flushSync was called from inside a lifecycle method runtime error
- 10263 – Card layout
activeItemyields the hidden, previousactiveItemin show listeners - 10273 – DOCS
beforeFinishCellEditeventvalueparam points to the old value - 10278 – TYPESCRIPT Define the
GridSelectionModetype - 10285 – HIGH PRIO Combobox does not clear unmatched initial value
- 10309 – Error in
Combogrouping after updating to6.1.0
VERSIONS SUPPORT
- NodeJS:
>= 20.0.0 - TypeScript:
>= 3.6.0 - Angular:
>= 9.0.0 - React:
>= 16.0.0 - Vue:
>= 3.0.0 - Ionic:
>= 5.0.0 - Vite:
>= 4.0.0 - Webpack:
>= 4.0.0 - Sass:
>= 1.38.0
Older versions
- Full release version history can be found here.