Behavior changes
- JS page errors now log under a new
page_errorscope at WARN (silence with--log-filter). - Each top-level page now has its own session history; a second page no longer shows up in the first page's back/forward.
--block-private-networksnow blocks more non-routable ranges (CGNAT, benchmarking, multicast, reserved, NAT64).no-corsfetches with a non-safelisted method are now rejected.- An unreadable
--http-cache-dirdatabase is now discarded instead of exiting. - Console values written to the log are now escaped and capped.
New Web APIs
- Web Crypto: Ed25519, X25519, ECDSA, RSA-PSS, RSASSA-PKCS1-v1_5,
wrapKey/unwrapKey+ AES-KW; EC and RSA-OAEP import/export - WebCodecs,
OfflineAudioContext, WebVTT improvements - XML document parsing
setRangeText()on<input>and<textarea>;textarea.textLengthHTMLProgressElementvalue/max/position;HTMLOptionElement.index; missing table APIsdocument.hasFocus();window.outerWidth/outerHeight/screenX/screenY/screenLeft/screenTop:nth-child(An+B of S)and:nth-last-child(An+B of S)PermissionStatusis now anEventTarget;DOMExceptionis now structured-cloneable;ImageDataoverload- Missing global event handlers added to
window,documentandbody
Web API behavior / fixes
- Element widths are now resolved relative to their parent (block, inline, floats, %, min/max-width, basic flex)
- Client rects (
getBoundingClientRect,getClientRects) are now viewport-relative - Mouse events now reach into shadow DOM and iframes
- Escape now closes the topmost modal dialog
- Iframes inside a shadow root now load when their host connects
replaceWithcompliance and cross-document adoption;isEqualNode(null)now returns falseinsertAdjacentHTMLnow works on SVG elements- Trusted key events now report Chrome's legacy
keyCode/which/charCode - Text selection offsets now count UTF-16 code units
TextDecodernow only strips a BOM for UTF-8/UTF-16form.elementsnow lists fieldset, object and output- Sequence arguments now accept any iterable
- Better
getComputedStyle().transform - Fixed CSS nested rule parsing; escapes are now decoded in unquoted attribute selectors
- Cookies are now sent longest path first, then oldest first
- 401/407 responses are now delivered as-is when no auth challenge header is present
CDP
Fetch.continueRequestinterceptResponseis now supportedFetch.continueWithAuthwithDefault/CancelAuthnow delivers the original 401/407, as Chrome doesRuntime.exceptionThrownis now emitted for unhandled promise rejections, with the context the exception was thrown inLog.entryAddedis now emitted for resources that fail to loadDOM.scrollIntoViewIfNeededis now supported (previously a no-op)LP.getPageStatusadded: page issue summary (JS errors, skipped resources, fetch stats). Also included infetchoutput when--jsonis used- Custom ARIA states and focusability are now exposed in the AX tree
- Non-UTF-8 status text and headers are now reported as strings rather than a byte array
- Permission overrides are now cleared when a browser context closes
Serve / CLI
serve --unix-socket <path>added: CDP over a Unix domain socket--remote-allow-originsadded: allow CDP connections that send anOriginheader (rejected by default), matching Chromeservenow honors--cookie-jar: the jar is saved when a connection closes. With multiple connections, last write winsfetch --dump structured_dataaddedfetch --markdown-alternateadded: follow a page'stext/markdownalternate.text/markdowndocuments are now dumped as-is
Tools
markdowntool:alternateoption added- A failed
gotonow closes the page - Tree tool: links kept inside headings, multi-line names kept on one line
Performance / stability
- Reworked TaggedOpaque (less memory)
- The scheduler now runs from a snapshot and no longer runs after every script evaluation
- Faster forgiving base64 decode
- UAF fixes: blob navigation, attribute change, file→blob layout; recursive close during load
- Script rejects no longer run microtasks mid-evaluation