NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #664 most downloaded on pub.dev
A high-level API to control headless Chrome over the DevTools Protocol. This is a port of Puppeteer in Dart.
Last release 1 months ago
13 Aug 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
95 releases · first in 2019
Update to Chrome 152.0.7977.42.
Complete WASM compatibility: route dart:isolate through the same shim.
dart:isolate through the same shim.One column per quarter.
The package is now WASM-compatible, so web keeps full marks for platform support. puppeteer.connect() and page interaction over the DevTools websocket
web keeps full marks for platform support. puppeteer.connect() and page interaction over the DevTools websocket can be compiled to WebAssembly (dart compile wasm). Internally, dart:io is now reached through a conditional shim that re-exports the real dart:io on native platforms (so the public API is unchanged there) and a stub on web/WASM. On web/WASM, puppeteer.launch(), downloadChrome and the File/IOSink convenience overloads throw UnsupportedError — only connect() and CDP-based page interaction are supported.Fix downloadChrome on Windows: download coordination is now keyed per platform, so fetching multiple platforms of the same Chrome version (e.g. window
Add the Locator API ( page.locator() / frame.locator() ): auto-waits for the element and retries the whole action on failure. Includes map / filter /
page.locator() / frame.locator()): auto-waits for themap/filter/Locator.race, ElementHandle.asLocator() and page.locatorFunction().::-p-text(...), ::-p-xpath(...), deep combinators >>>/>>>> (piercetext//xpath//pierce/ prefixes. (::-p-aria not yet.)waitForFunction now awaits asynchronous (Promise-returning) predicates.await page.locator('::-p-text(Sign in)').click();Update to Chrome 148.0.7778.97.
downloadChrome is now safe to call concurrently across isolates anddart test isolates each callpuppeteer.launch() against an empty cache.cachePath moved from .local-chrome/ to.dart_tool/puppeteer/local-chrome/ (under the current Dart project or~/Library/Caches/puppeteer, ~/.cache/puppeteer, or%LOCALAPPDATA%\puppeteer). Existing .local-chrome/ directories on diskUpdate to Chrome 147.0.7727.56.
Update to Chrome 146.0.7680.66.
Update to Chrome 140.0.7339.82.
Update to Chrome 138.0.7204.94.
Update to Chrome 135.0.7049.95.
Update to Chrome 133.0.6943.53.
Update to Chrome 131.0.6778.204
Change close code for websocket in web to 1000
Update to Chrome 128.0.6613.137
Update to Chrome 127.0.6533.119
Update to Chrome 126.0.6478.126
- Update to Chrome 125.0.6422.60 - Fix navigation error
Update to Chrome 124.0.6367.201
Update to Chrome 123.0.6312.122
- Update to Chrome 122.0.6261.69
Update to Chrome 121.0.6167.184
Update to Chrome 119.0.6045.105
- Update to Chrome 118.0.5993.70
- Update to Chrome 117.0.5938.92
- Update to Chrome 117
- Update to Chrome 116 - Require Dart 3.1.0
- Update to Chrome 115
Update to Chrome 114.0.5735.133
package:httpFix a bug on Windows when a relative directory was passed to userDataDir
userDataDirDownload "Chrome for Testing" instead of Chromium.
.local-chrome instead of .local-chromiumint revision parameter with String version in downloadChrome3.0.0 version.Nothing published for this version
Nothing published for this version
- Update to Chromium 112
Check for null child node/Ids in Accessibility
Add additional screenshot parameters
onDownloadProgress callback on downloadChrome function- Update to Chromium 110
Fixed a bug: page.waitForSelector('#selector', timeout: Duration.zero) throws instantly instead of disabling timeout #210.
page.waitForSelector('#selector', timeout: Duration.zero) throws instantly instead of disabling timeout #210.Adds a setter for the TargetInfo type
Update the default arguments used to launch the chromium process
Worker class- Update to Chromium 108
Upgrade package:petitparser to version 5.1.0
package:petitparser to version 5.1.0Allow puppeteer.connect to be called on the Web platform (Dart code compiled to JavaScript).
puppeteer.connect to be called on the Web platform (Dart code compiled to JavaScript).- Update to Chromium 107
Fix a bug during request interception. In NetworkManager.continueRequest original headers were discarded.
NetworkManager.continueRequest original headers were discarded.- Update to Chromium 105
- Update to Chromium 104
Use dart enhanced enums for all enumerations in the protocol
enums for all enumerations in the protocolNothing published for this version
Nothing published for this version
Nothing published for this version
- Update to Chromium 102
- Update to Chromium 101
Resolving browser paths in windows
- Update to Chromium 99
Add BrowserPath to have access to installed browser executable path. `dart var browser = await puppeteer.launch(executablePath: BrowserPath.chromeCana
BrowserPath to have access to installed browser executable path.var browser = await puppeteer.launch(executablePath: BrowserPath.chromeCanary);
- Update Chromium to version 97
- Update Chromium to version 93
Make defaultViewport nullable in the connect method.
defaultViewport nullable in the connect method.- Update Chromium to version 92 - Add drag-and-drop support
Your coding agent can read these notes before it upgrades. Set up the MCP server →