Repository navigation
Releases: AngleSharp/AngleSharp
Releases · AngleSharp/AngleSharp
Release list
v1.8.6
Released on Sunday, October 25 2026
What's Changed
- Removed temporary copies when serializing text that needs no HTML escaping @perfloop-agent in #1388
- Fixed
INode.Equals(isEqualNode) to compare what the DOM spec compares: character data, doctype identifiers, processing instructions, element prefixes and attribute local names, no longer base URLs, without overflowing the stack on deep trees - Fixed
IAttr.Equalscomparing the prefix instead of the local name - Fixed
IDocument.Import(importNode) returning nodes owned by the source document instead of the importing one - Fixed
IDocument.Importaccepting a shadow root instead of throwingNotSupported - Fixed
INode.CloneandImportoverflowing the stack on deeply nested trees and templates - Fixed a shallow clone of a
<template>copying its contents - Fixed serializing
<and>in attribute values unescaped, which let markup break out when reparsed under different rules (mutation XSS); they are now written as<and>like browsers do since the HTML spec change of May 2025 - Fixed
IRange.CopyContentandExtractContentoverflowing the stack on deeply nested ranges - Fixed
Dispatch(dispatchEvent) returningtruefor a canceled event - Fixed
MutationObservernot observing a document itself and throwing for one without a root element - Fixed
MutationObserver.Disconnectkeeping the previous targets for a laterConnect - Fixed a failing navigation or submission from
DoClickcrashing the process; it is reported as a context error - Fixed
URLSearchParamstreating non-ASCII values as single bytes and leaving+undecoded @NotAFlightRisk in #1390 - Added the
IHtmlSelectElement.SelectedIndexsetter - Added
HtmlParserOptions.MaximumDepth(default 512) to stop deeply nested markup from building trees that overflow the stack - Added focusing of elements with a
tabindexand blurring of any focused element - Added
DoClickAsyncto await a click's navigation or form submission - Added toggling the parent
<details>when clicking its<summary> - Added declarative shadow DOM: the parser attaches
<template shadowrootmode="open">(orclosed) as the shadow root of its parent - Added
:host(<compound>), and selectors in a shadow tree reaching its host (only through:host) - Released 1.8.6 by @FlorianRappl in #1391
New Contributors
- @perfloop-agent made their first contribution in #1388
Full Changelog: v1.8.5...v1.8.6
1.8.5
Released on Thursday, October 15 2026
What's Changed
- Fixed select selectedness and option dirtiness across mutations, reset and cloning (#1384) @PrzemyslawKlys
- Fixed fragment parsing losing the context document's quirks and limited-quirks modes (#1382) @PrzemyslawKlys
- Fixed
:lang()inheritance and namespace precedence in HTML and foreign content (#1379) @PrzemyslawKlys - Fixed
URLSearchParamscutting values at a second=such astoken=abc==(#1385) @NotAFlightRisk - Released 1.8.5 by @FlorianRappl in #1386
Full Changelog: v1.8.4...v1.8.5
1.8.4
Released on Wednesday, October 7 2026
What's Changed
- Improved selection when parsing
<select>(#1364) @PrzemyslawKlys - Updated constraint validation eligibility of
fieldsetandoutputelements (breaking behavior change) (#1373) @PrzemyslawKlys - Fixed change of
<select>value (IsSelected) (#1365) @PrzemyslawKlys - Fixed indeterminate input state when cloning (#1367) @PrzemyslawKlys
- Fixed
<select>form submission including unselected options and options in disabled groups (#1366) @PrzemyslawKlys - Fixed option indexes inside option groups (#1368) @PrzemyslawKlys
- Fixed selecting an option leaving other single-select options selected (#1372) @PrzemyslawKlys
- Fixed validity checks for controls excluded from validation (#1370) @PrzemyslawKlys
- Fixed template content document when adopting a subtree (#1374) @PrzemyslawKlys
- Fixed checking a radio leaving other group members checked (#1371) @PrzemyslawKlys
- Fixed parsed radio checkedness depending on attribute order @PrzemyslawKlys
- Fixed SVG
annotation-xmlelements being treated as HTML integration points @NotAFlightRisk - Fixed required radio validation across group members (#1369) @PrzemyslawKlys
- Released 1.8.4 by @FlorianRappl in #1377
New Contributors
- @NotAFlightRisk made their first contribution in #1376
Full Changelog: v1.8.3...v1.8.4
1.8.3
Released on Wednesday, September 30 2026
What's Changed
- Improved cancellation of queued timer callbacks (#1357) @PrzemyslawKlys
- Improved configuration / setup performance (#1360) @PrzemyslawKlys
- Fixed form submission ignoring sandbox restrictions (#1358) @PrzemyslawKlys
- Fixed
<base>elements not following frozen document base URL and tree-order mutation rules (#1355, #1362) - Fixed native
Unloadinghandlers subscribing tounloadinginstead ofbeforeunload(#1354) @PrzemyslawKlys - Added
OnResetevent to inform script hosts of native listener removals (#1356) @PrzemyslawKlys - Added pull-based HTML serialization stream (#1361) @PrzemyslawKlys
- Released 1.8.3 by @FlorianRappl in #1363
New Contributors
- @PrzemyslawKlys made their first contribution in #1356
Full Changelog: v1.8.2...v1.8.3
1.8.2
Released on Friday, September 18 2026
What's Changed
- Improved attribute selector serialization to write only the case-sensitivity modifier that was specified (#1351)
- Improved id/name lookup on collections (
document.forms["x"],form.elements["x"], ...) to enumerate the underlying sequence once instead of twice - Improved performance of
form.elements/fieldset.elementsby walking the tree directly (#1350) - Improved
GetElementsByTagName/GetElementsByClassNametraversal to stop double-scanning each element's children - Improved selector specificity (
Selectors.Specificity,ComplexSelector.Specificity) to be computed once instead of recomputed on every read - Improved
ListSelector.GetMatchingSelectorto sort its selectors once instead of on every call - Improved performance of HTML tree construction by keeping mutation logic out of it (#1347)
- Improved performance of DOM mutations by building a mutation record only when an observer will consume it (#1347)
- Improved performance of parser attribute duplication check
- Fixed
Document.Formsallocating a new collection instance per read, contradicting its own[DomSameObject]contract - Fixed
classListand the other reflected token lists writing their content attribute without running the attribute change steps or queueing a mutation record - Fixed clearing a reflected boolean attribute such as
disabledremoving it without running the attribute change steps or queueing a mutation record - Fixed vulnerability via SVG style serialization (GHSA-cgp3-27rh-pcp2)
- Fixed a
StackOverflowExceptionwhen parsing a document with deeply nested unclosed<template>elements - Added
Document.MutationVersion, a synchronous counter of DOM mutations that a parse leaves unchanged (#1344, #1347) - Released 1.8.2 by @FlorianRappl in #1353
New Contributors
- @RichardJansma made their first contribution in #1352
Full Changelog: v1.8.1...v1.8.2
1.8.1
Released on Thursday, September 10 2026
What's Changed
- Updated
DoFocusandDoBlurto apply to form elements - Improved explicit form ownership to take precedence over ancestor forms for connected controls (#1323) @sebastienros
- Fixed HTML hyperlink pseudo-classes omitting empty
hrefand matchinglinkelements (#1337) @sebastienros - Fixed HTML-namespace element creation losing local-name case (#1327) @sebastienros
- Fixed
:enabledincorrectly matching HTML links with nonemptyhref(#1324) @sebastienros - Fixed changing focus of elements
- Released 1.8.1 by @FlorianRappl in #1343
New Contributors
- @sebastienros made their first contribution in #1338
Full Changelog: v1.8.0...v1.8.1
1.8.0
Released on Saturday, September 5 2026
What's Changed
- Improved AngleSharp's test website
- Fixed script data escaped state potentially not bouncing back correctly
- Added the
DomSameObjectannotation for the respective IDL members (#1314) @lahma - Added the
DomReturnTypeannotation for methods returning a different IDL type (#1318) - Released 1.8.0 by @FlorianRappl in #1317
Full Changelog: v1.7.3...v1.8.0
1.7.3
Released on Thursday, September 3 2026
What's Changed
- Improved tracking of parse exceptions in the
HtmlParser(#1315) @lahma - Fixed tokenizer buffer overrun on encoding change (#1290) @jafin
- Fixed selector text dropping the nth-child of clause (#1292) @jafin
- Fixed selector text dropping the case-insensitive (#1291) @jafin
- Fixed selector specificity carrying between fields instead of saturating (#1300) @meziantou
- Fixed condition check for disposed state in ReturnToPool (#1296) @meziantou
- Fixed ArgumentOutOfRangeException CSS escapes (#1299) @meziantou
- Fixed whitespace around An+B CSS selector notations (#1297)
- Fixed unsupported pseudo-classes matching everything (#1295)
- Fixed DomException for invalid foreign attribute names such as
xml:lang[(#1294) - Fixed script data escaped state leaving escaped mode too early (#1298)
- Fixed
CurrentScriptnot indicating the currently executing script (#1308) @lahma - Fixed returned missing attribute-properties to use empty string instead of null (#1313) @lahma
- Fixed removal of
data-*attributes (#1310) @lahma - Added missing DomName/DomAccessor annotations (#1301) @meziantou
- Added missing
DomLiteralsattribute toAdjacentPosition(#1311) @lahma - Released 1.7.3 by @FlorianRappl in #1302
Full Changelog: v1.7.2...v1.7.3
1.7.2
Released on Sunday, August 23 2026
What's Changed
- Fixed matching of
annotation-xmlencoding to be case-insensitive (#1284) @arpitjain099 - Fixed
<xmp>usage in<select>elements - Added ability to parse immutable byte buffers without a stream (#1286) @dv00d00
- Released 1.7.2 by @FlorianRappl in #1288
New Contributors
- @arpitjain099 made their first contribution in #1284
Full Changelog: 1.7.1...v1.7.2
1.7.1
Released on Wednesday, August 5 2026
- Migrated the build system from NUKE to Fallout by @jafin in #1275
- Improved WHATWG Url specification (#802) @jafin
- Improved tokenizer read performance (#1274) @dv00d00
- Fixed auxiliary browsing context lifetime (#1278) @jafin
- Fixed duplicated
DomNameattributes on DOM geometry - Fixed
document.open()destroying the DOM tree in case of encoding problems (#1276) - Fixed source references having wrong line (#1280)
- Released 1.7.1 by @FlorianRappl in #1281
Full Changelog: 1.7.0...v1.7.1