{"id":16094,"date":"2026-11-02T13:13:02","date_gmt":"2026-11-02T10:13:02","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=16094"},"modified":"2026-11-02T14:49:03","modified_gmt":"2026-11-02T11:49:03","slug":"maintenance-release-dhtmlx-spreadsheet-6-0-4-suite-9-4-1-9-4-2-vault-5-0-8","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/maintenance-release-dhtmlx-spreadsheet-6-0-4-suite-9-4-1-9-4-2-vault-5-0-8\/","title":{"rendered":"Maintenance Release: DHTMLX Spreadsheet 6.0.4, Suite 9.4.1 &#8211; 9.4.2, Vault 5.0.8"},"content":{"rendered":"<p>Ghosts, pumpkins, and other Halloween decorations took over the DHTMLX office last Friday. But even this spooky atmosphere could not scare our team away from finishing the latest patch versions of DHTMLX components. The biggest news comes from DHTMLX Suite and Spreadsheet, which received extensive accessibility enhancements to meet WCAG 2.2 AA, Section 508, and EN 301 549 requirements, as well as massive packs of useful fixes. In addition, we also rolled out a small improvement for DHTMLX Vault.<\/p>\n<p>Let\u2019s review each patch release in more detail.<\/p>\n<h2>DHTMLX Spreadsheet 6.0.4<\/h2>\n<p><strong>6.0.4 (November 2, 2026)<\/strong><\/p>\n<h3>New functionality<\/h3>\n<p>1) Accessibility support that targets WCAG 2.2 AA, Section 508 and EN 301 549: keyboard operation of every part of the Spreadsheet, screen reader support and a visible focus in every theme. Check the <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/accessibility\/\" target=\"_blank\">Accessibility Guide<\/a> and the <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/accessibility_conformance_report\/\" target=\"_blank\">Accessibility Conformance Report<\/a><br \/>\n2) The ability to turn the selection of cells off and on:<\/p>\n<ul>\n<li>new configuration property: selection<\/li>\n<li>new methods of the selection module: <strong>enable()<\/strong>, <strong>disable()<\/strong>, <strong>isDisabled()<\/strong><\/li>\n<\/ul>\n<p>3) The <strong>announce()<\/strong> method sends a status message to screen readers<br \/>\n4) New commands of the context menu: Column width, Row height and Open filter\n<\/ul>\n<h3>Updates<\/h3>\n<p>1) Keyboard navigation (check the <a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/hotkeys\/\" target=\"_blank\">Hot keys list<\/a>):<\/p>\n<ul>\n<li>the focus stays on the active cell, <strong>Tab and Shift + Tab<\/strong> leave the cells from the last and the first cell of the sheet, and <strong>Ctrl + F6<\/strong> moves the focus between the menu, the toolbar, the sheet and the sheet tabs<\/li>\n<li>the toolbar, the menu bar and the sheet tabs are single tab stops navigated with the arrow keys<\/li>\n<li>new shortcuts are added, for example, <strong>Shift + F10<\/strong> for the context menu and <strong>Ctrl (Cmd) + Shift + 9 \/ Ctrl (Cmd) + Shift + 0<\/strong> for showing hidden rows and columns<\/li>\n<li>the toolbar color and border popups take the focus when they open and close with <strong>Esc<\/strong> and <strong>Tab<\/strong><\/li>\n<\/ul>\n<p>2) The arrow keys stop at the first and last visible row and column instead of moving to the opposite edge, and an arrow key at the edge reduces a selected range to the active cell<br \/>\n3) Text composed with an input method editor (IME) is shown in the active cell and starts the edit through the startEdit() method, so the beforeEditStart and afterEditStart events fire for it<br \/>\n4) The <strong>setFocusedCell()<\/strong> method moves the keyboard focus to the cell<br \/>\n5) A link in a cell is rendered as a real link that opens in a new tab, and Alt (Option) + Enter opens the link of the active cell<br \/>\n6) The read-only mode keeps the keyboard navigation, the selection, copying and search, and screen readers announce the refused edits. To turn the selection off, use the selection: false option<br \/>\n7) Removing a row or a column through a merged cell removes all the rows or columns of the merged cell<br \/>\n8) New interface and screen reader strings in the spreadsheet locale, and translation of the built-in widgets<br \/>\n9) The <strong>&#8211;dhx-spreadsheet-focus-color<\/strong> variable for the keyboard focus, and the formula reference colors with a higher contrast in the light themes<br \/>\n10) React Spreadsheet: the <strong>selection<\/strong> prop, the <strong>ISelection<\/strong> type, and readonly as an <strong>init-only<\/strong> prop<\/p>\n<h3>Fixes<\/h3>\n<ul>\n<li>A merged cell was dropped instead of shifted when a row or column before it was deleted. Now a merged cell left with a single cell becomes an ordinary cell and keeps its value (Done)<\/li>\n<li>Deleting a row or column through a merged cell removed only one line of the merge (Fixed)<\/li>\n<li>The context menu labels for removing rows and columns didn&#8217;t show all the rows or columns of a merged cell that would be removed (Fixed)<\/li>\n<li>Rows were not deleted when they covered the whole filtered range (Fixed)<\/li>\n<li>The frozen area didn&#8217;t shrink when frozen rows or columns were deleted (Fixed)<\/li>\n<li>Autofill threw an error when the dragged cells held no plain number (Fixed)<\/li>\n<li>The page froze on <strong>Home, End, Ctrl (Cmd) + Home, Ctrl (Cmd) + End and Ctrl (Cmd) + Arrow<\/strong> keys when the first or last row or column was hidden (Fixed)<\/li>\n<li>The font size was lost when cells were copied to Excel or pasted from Excel or within the Spreadsheet (Fixed)<\/li>\n<li>The invalid-value tooltip appeared away from the invalid cell or wasn&#8217;t shown (Fixed)<\/li>\n<li><strong>Esc<\/strong> and <strong>Tab<\/strong> didn&#8217;t work in the list editor after the arrow keys were used (Fixed)<\/li>\n<li>The search highlighted the second match first and didn&#8217;t refresh the results after an edit or a sheet switch (Fixed)<\/li>\n<li>A script error occurred on import or export in a browser without WebAssembly (Fixed)<\/li>\n<li>Document listeners and inner widgets were left behind after <strong>destructor()<\/strong> (Fixed)<\/li>\n<li>The keyboard focus was lost after the search bar closed (Fixed)<\/li>\n<li>A closed context menu reopened (Fixed)<\/li>\n<li>The active cell was scrolled one cell short of the viewport edge during keyboard navigation (Fixed)<\/li>\n<li>A formula with an invalid reference showed a broken or repeated <strong>#REF!<\/strong> error instead of a single <strong>#REF!<\/strong> (Fixed)<\/li>\n<li>React Spreadsheet: the event callbacks and <strong>onStateChange<\/strong> didn&#8217;t fire after the Spreadsheet was recreated by an <strong>init-only<\/strong> prop change (Fixed)<\/li>\n<li>React Spreadsheet: the event handlers of the wrapper were not removed on unmount (Fixed)<\/li>\n<li>React Spreadsheet: the data from loadUrl was loaded twice on mount and again over the kept data after the Spreadsheet was recreated (Fixed)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/docs.dhtmlx.com\/spreadsheet\/whats_new\/#version-604\" target=\"_blank\">Check the documentation ><\/a><\/p>\n<h2>DHTMLX Suite 9.4.1 \u2013 9.4.2<\/h2>\n<p><strong>9.4.1 (October 26, 2026)<\/strong><\/p>\n<ul>\n<li>Tabbar. The issue where hiding a nested Layout cell during a tab switch caused a TypeError (Cannot set properties of null) and left the tab blank when reopened (Fixed)<\/li>\n<\/ul>\n<p><strong>9.4.2 (November 2, 2026)<\/strong><\/p>\n<h3>Updates<\/h3>\n<p>1) Calendar. <strong>Space<\/strong> selects a date, a month or a year, as Enter does (<strong>WCAG 2.1.1<\/strong>).<br \/>\n2) Combobox. While the list is open, the input tells a screen reader which option is highlighted, so the option is announced as the user moves through the list with the arrow keys (<strong>WCAG 4.1.2<\/strong>).<br \/>\n3) Form. Accessible names of the form and its controls:<\/p>\n<ul>\n<li>Every control is named by one rule: the new <strong>ariaLabel<\/strong> property of the control, otherwise the label (also with <strong>hiddenLabel<\/strong>), otherwise the visible text of the control (<strong>WCAG 1.3.1<\/strong>, <strong>WCAG 2.5.3<\/strong>, <strong>WCAG 4.1.2<\/strong>).<\/li>\n<li>The form is named by the new <strong>ariaLabel<\/strong> property, otherwise by its title.<\/li>\n<li>Generated names such as &#8220;type text&#8221; or &#8220;select color&#8221; are no longer used, and <strong>helpMessage<\/strong> is announced as the description of a control, not as its name.<\/li>\n<li>A checkbox group and a radio group are announced as named groups.<\/li>\n<\/ul>\n<p>4) Form. States and errors:<\/p>\n<ul>\n<li>A toggle reports its pressed state (<strong>WCAG 4.1.2<\/strong>).<\/li>\n<li>A control in the error state is reported as invalid, and its error message is announced as its description (<strong>WCAG 3.3.1<\/strong>).<\/li>\n<\/ul>\n<p>5) Form. Colorpicker, Datepicker and Timepicker:<\/p>\n<ul>\n<li>The colorpicker field reports that it opens a palette and whether the palette is open (<strong>WCAG 4.1.2<\/strong>).<\/li>\n<li>\u2192 moves focus to the selected color, the selected date or the hour input; after a choice focus returns to the field (<strong>WCAG 2.1.1, WCAG 2.4.3<\/strong>).<\/li>\n<\/ul>\n<p>6) Form. Avatar:<\/p>\n<ul>\n<li>The upload and remove controls are reachable from the keyboard and are shown while the field has focus (<strong>WCAG 2.1.1<\/strong>).<\/li>\n<li>The remove button has a name that can be translated through the locale (<strong>WCAG 4.1.2<\/strong>).<\/li>\n<\/ul>\n<p>7) List. Every option has an element id, so the option can be referenced from outside the list, for example, by the input of a combo box.<br \/>\n8) Toolbar\/Sidebar. A menuItem control with nested items is announced as a button that opens a menu, and it reports whether its menu is open. The top-level items of the Menu bar keep the menu item role (<strong>WCAG 4.1.2<\/strong>).<br \/>\n9) Toolbar\/Sidebar\/Ribbon\/Menu. Enter and Space on a control that opens a menu move focus to the first item of the menu, and \u2191 on a control whose menu opens below it moves focus to the last item (<strong>WCAG 2.1.1<\/strong>, <strong>WCAG 2.4.3<\/strong>).<\/p>\n<h3>Fixes<\/h3>\n<ul>\n<li>Calendar. A script error (<strong>Cannot read properties of undefined<\/strong>) that occurred when a calendar was destroyed right after its value had been set (Fixed)<\/li>\n<li>Calendar. The arrow keys scrolling the page while moving between dates (Fixed)<\/li>\n<li>Colorpicker. A script error (<strong>Cannot read properties of null<\/strong>) that occurred when a colorpicker was destroyed right after its value had been set (Fixed)<\/li>\n<li>Combobox. A script error (<strong>Cannot read properties of undefined<\/strong>) that occurred when the <strong>clear()<\/strong>, <strong>focus()<\/strong>, or <strong>blur()<\/strong> method was called before the combobox was rendered (Fixed)<\/li>\n<li>ContextMenu. An issue where the first menu item got stuck when selected using the mouse (Fixed)<\/li>\n<li>Form. A script error that occurred when a form with the Colorpicker, Datepicker, or Timepicker control was destroyed or rebuilt right after the value of the control had been set (Fixed)<\/li>\n<li>Form. Enter not working on the buttons inside the popup of the Colorpicker, Datepicker, and Timepicker fields (Fixed)<\/li>\n<li>Form. The keyboard focus being lost after a choice in the popup of the Colorpicker, Datepicker, and Timepicker fields (Fixed)<\/li>\n<li>Form. Tab leaving the page with the popup of the Colorpicker, Datepicker or Timepicker field still open (Fixed)<\/li>\n<li>Form. Enter not applying the value typed in an editable Colorpicker, Datepicker, or Timepicker field (Fixed)<\/li>\n<li>Layout. A script error (<strong>Cannot set properties of null<\/strong>) that occurred when a layout attached to a popup or to another widget was destroyed before it had been rendered (Fixed)<\/li>\n<li>Timepicker. A script error (<strong>Cannot read properties of null<\/strong>) that occurred when a timepicker was destroyed right after its value had been set (Fixed)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/docs.dhtmlx.com\/suite\/whatsnew\/#version-942\" target=\"_blank\">Check the documentation ><\/a> <\/p>\n<h2>DHTMLX Vault 5.0.8<\/h2>\n<p><strong>5.0.8 (October 21, 2026)<\/strong><\/p>\n<ul>\n<li>The issue where the drop area remained visible after dragging a file away when the component&#8217;s CSS height was set to &#8220;auto&#8221; (Fixed)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/docs.dhtmlx.com\/vault\/whats_new.html#version508\" target=\"_blank\">Check the documentation ><\/a><\/p>\n<p><strong>Download the latest versions of our libraries and test them free of charge for 30 days:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSpreadsheet\/download.shtml\" target=\"_blank\">Spreadsheet trial version<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/download.shtml\" target=\"_blank\">Suite trial version<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxVault\/download.shtml\" target=\"_blank\">Vault trial version<\/a><\/li>\n<\/ul>\n<p>For current customers, the updated packages are available in their <a href=\"https:\/\/dhtmlx.com\/clients\/\" target=\"_blank\">Client\u2019s Area<\/a>.<\/p>\n<p>Alongside the latest DHTMLX maintenance releases, the end of October also brought a new addition to our product profile &#8211; <a href=\"https:\/\/dhtmlx.com\/docs\/products\/planning-engine\/\" target=\"_blank\">DHTMLX Planning Engine<\/a>. This headless library adds advanced scheduling and resource management to business applications while fitting into existing architectures without unnecessary complications. Learn more about the new DHTMLX product in the <a href=\"https:\/\/dhtmlx.com\/blog\/dhtmlx-planning-engine-1-0\/\" target=\"_blank\">release article<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ghosts, pumpkins, and other Halloween decorations took over the DHTMLX office last Friday. But even this spooky atmosphere could not scare our team away from finishing the latest patch &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":16098,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,16,34,10],"class_list":["post-16094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-dhtmlxvault","tag-spreadsheet","tag-dhtmlxsuite"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/16094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=16094"}],"version-history":[{"count":5,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/16094\/revisions"}],"predecessor-version":[{"id":16100,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/16094\/revisions\/16100"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/16098"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=16094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=16094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=16094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}