Breaking changes
Iframes and workers no longer load by default. This makes resource loading
consistent: nothing loads unless you ask for it.
- Restore the old behavior with
--load-resources iframeand--load-resources worker. - External stylesheets stay off by default too: use
--load-resources stylesheet.
Deprecated flags (they still work, but now print a warning):
--disable_subframes→ iframes are off by default; use--load-resources iframeto turn them on.--disable_workers→ workers are off by default; use--load-resources workerto turn them on.--enable_external_stylesheets→ use--load-resources stylesheet.--log-filter-scopes→ renamed to--log-scopes.- Comma-separated list values (e.g.
--adblock-lists a,b) → pass the option multiple times instead (--adblock-lists a --adblock-lists b). Affects--strip-mode,--adblock-lists,--block-cidrs,--block-urls.
Protocols
- WebDriver BiDi support (with a
[classic]WebDriver start); protocol selection via CLI; both CDP and BiDi can be served on the same port - WebDriver: better keyboard and mouse handling
New Web APIs
URLPatternnavigator.geolocation+Emulation.setGeolocationOverrideWorkerNavigatorcanvas.toDataURL/toBlob(returns a 1x1 PNG)HTMLElement.draggableIDL attribute- Many element getters/setters added and reworked; improved XPath support
New features
- Screenshot support (
--dump png,screenshottool): renders the page's markdown - PDF support (
--dump pdf,Page.printToPDF): renders the page's markdown - Ad blocker: EasyList parsing (initial)
--load-resourceswith animageparameter (mimics image fetches)--http-headerto send headers on every HTTP request--http-version 1.1/autoflag- Optional HTTP rate limit
exasearch engine support;Keenableengine with a keyless option
Web API behavior / fixes
searchParamskeeps a linkedURLin sync;URLSearchParamsiterator and percent-escape fixesFormDataencodingFileReaderis now asynchronous with proper text decoding- Blob / File conformance; correct content-type for blobs;
application/octet-streamMIME - XHR: sync requests, Blob response type
- Edit-key support in
input/textarea; improved hover events - Prevent
click()from triggeringclick() - Re-parse
element.stylewhen thestyleattribute changes - Promise-returning operations reject (not throw) on a bad receiver
- Reject XML documents that are not well-formed
DOMParsercaptures the owning frame for the correct URL- Handle immediate
meta refreshnavigation
Rendering / CSS
clientHeight/clientWidthreturn the viewport for the bodydevice-width/device-heightmedia features- Compare visibility and CSS keyword values case-insensitively
- Reuse storage for updated property values
- Markdown dump separates flex and grid items; skips hidden elements
HTTP / Networking
- Strip
Authorizationon cross-origin redirects - Send
Sec-Ch-Ua-Full-Version-Listheader - Better
robots.txtstatus handling - Fix WebSocket data send on a small buffer
- Guarantee a single-outcome callback contract for
Transfer
CDP (Chrome DevTools Protocol)
- Answer unknown methods with
-32601, like Chrome - Enforce
Network.enablelimits - Accept the emulation and setup calls drivers send at context creation
- Pass more
Runtimemethods through to the inspector; fill allDOM.getBoxModelquads obeyRobotsadded toLP.configureCDP
MCP / tools
- Negotiate the protocol version on initialize; enforce HTTP conditions; close the connection after
keep_alive=false - Add title and annotations to
tools/list; logfmt is now a config default - Add
maxBytesandstripto thehtmltool;--selector/--max-bytesforfetch - Interactive/links/markdown: skip hidden elements, take roles and names from the AXNode, dedup links by href
Agent
- List all agent providers and gateway examples in the README
- Fix agent history in JS mode
Stability / memory
- Disconnect runaway mutation observers; drop async module completions after termination
- Fix double-release and other edge-case memory issues
- Fix UAF when a
PerformanceObserverdisconnects in its callback - Fix arena leak on page shutdown with live animations
- Several crash fixes: null deref on cross-context
ReadableStream, unsafe element cast, label click Node.flagsfor lookup short-circuit (perf)
Build
- Simplify
build.zig; pindev_fastto the host glibc; use an orderfile on Linux CI builds -Ddev_fastspeeds up Linux debug builds: shared V8 + Zig's self-hosted backend (instead of LLVM)