- Added support for Unicode v18.0.0 in internationalized domain names.
- Reduced package size and memory use for CSS property definitions. (@scttcper)
- Fixed severe slowdowns when building large DOM trees, including SVG charts with D3, which regressed in v30.1.0. (@cmdcolin)
- Fixed exponentially slow reads of empty inherited CSS custom properties in deeply nested documents, and custom properties incorrectly inheriting past an
initialreset. (@scttcper) - Fixed
getComputedStyle()returning stale results after editing stylesheet declarations, selectors, or media queries, including in imported stylesheets. (@trooney) - Fixed selector matching and computed styles after changes to form control checkedness, indeterminacy, selection, values, and validity, including during form resets and canceled clicks. (@trooney)
- Fixed computed styles for
:focus,:focus-visible,:focus-within, and selectors containing them after focus changes, including inside focus and blur listeners. (@asamuzaK) - Fixed
element.focus()incorrectly focusing elements hidden by 'display', including through shadow hosts and slots, and elements excluded by shadow DOM slot assignment. (@asamuzaK) - Fixed
getComputedStyle()throwing for elements without inline-style support, including XML and MathML elements. (@asamuzaK) - Fixed a memory leak where stylesheet parsing retained the last parsed stylesheet's window after
window.close(). - Fixed memory growth from long-lived
MutationObserverinstances retaining bookkeeping for garbage-collected nodes. (@scttcper) - Fixed retained
select.selectedOptionscollections becoming stale after selection changes and form resets. - Fixed rejection of negative CSS sizing values, including for 'min-width', 'min-height', 'max-width', and 'max-height', which regressed in v30.1.0.
- Fixed handling of deeply nested
color-mix()expressions, including exceptions during color resolution. (@asamuzaK) - Fixed
element.matches()andelement.closest()failing to match SVG elements such as<foreignObject>and<linearGradient>, which regressed in@asamuzakjp/dom-selectorv9.0.3. (@asamuzaK) - Fixed
:nth-child(n+B)and:nth-last-child(n+B)matching inelement.matches()and stylesheet rules. (@asamuzaK) - Fixed stale selector results for sibling combinators after DOM changes. (@asamuzaK)