puppeteer
A high-level API to control headless Chrome over the DevTools Protocol. This is a port of Puppeteer in Dart.
3.26.0
317K downloads/mo
#664 most downloaded on pub.dev
xvrh/puppeteer-dart
What this package is like to depend on
Last release 11 days ago
13 Aug 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 86 of 95 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
95 releases · first in 2019
9 releases in the last 12 months
see the full history below
Release timeline
95 releases · Apr 2019 to Aug 2026Releases
latest 60 of 95-
3.26.013 Aug 2026 -
3.25.120 Jun 2026 -
3.25.020 Jun 2026Release notes
Open source →- The package is now WASM-compatible, so
webkeeps full marks for platform support.puppeteer.connect()and page interaction over the DevTools websocket can be compiled to WebAssembly (dart compile wasm). Internally,dart:iois now reached through a conditional shim that re-exports the realdart:ioon native platforms (so the public API is unchanged there) and a stub on web/WASM. On web/WASM,puppeteer.launch(),downloadChromeand theFile/IOSinkconvenience overloads throwUnsupportedError— onlyconnect()and CDP-based page interaction are supported.
Release notes
Open source →- The package is now WASM-compatible, so
webkeeps full marks for platform support.puppeteer.connect()and page interaction over the DevTools websocket can be compiled to WebAssembly (dart compile wasm). Internally,dart:iois now reached through a conditional shim that re-exports the realdart:ioon native platforms (so the public API is unchanged there) and a stub on web/WASM. On web/WASM,puppeteer.launch(),downloadChromeand theFile/IOSinkconvenience overloads throwUnsupportedError— onlyconnect()and CDP-based page interaction are supported.
- The package is now WASM-compatible, so
-
3.24.120 Jun 2026Release notes
Open source →- Fix downloadChrome on Windows: download coordination is now keyed per platform, so fetching multiple platforms of the same Chrome version (e.g. windows32 and windows64) no longer collides on the .downloading rename.
Release notes
Open source →- Fix
downloadChromeon Windows: download coordination is now keyed per platform, so fetching multiple platforms of the same Chrome version (e.g.windows32andwindows64) no longer collides on the.downloadingrename.
-
3.24.020 Jun 2026Release notes
Open source →- Add the Locator API (
page.locator()/frame.locator()): auto-waits for the
element and retries the whole action on failure. Includesmap/filter/
Locator.race,ElementHandle.asLocator()andpage.locatorFunction(). - Add Puppeteer-specific selectors anywhere a selector is accepted:
::-p-text(...),::-p-xpath(...), deep combinators>>>/>>>>(pierce
shadow DOM) and thetext//xpath//pierce/prefixes. (::-p-arianot yet.) waitForFunctionnow awaits asynchronous (Promise-returning) predicates.
await page.locator('::-p-text(Sign in)').click();
Release notes
Open source →- Add the Locator API (
page.locator()/frame.locator()): auto-waits for the element and retries the whole action on failure. Includesmap/filter/Locator.race,ElementHandle.asLocator()andpage.locatorFunction(). - Add Puppeteer-specific selectors anywhere a selector is accepted:
::-p-text(...),::-p-xpath(...), deep combinators>>>/>>>>(pierce shadow DOM) and thetext//xpath//pierce/prefixes. (::-p-arianot yet.) waitForFunctionnow awaits asynchronous (Promise-returning) predicates.
await page.locator('::-p-text(Sign in)').click(); - Add the Locator API (
-
3.23.004 May 2026Release notes
Open source →- Update to Chrome 148.0.7778.97.
downloadChromeis now safe to call concurrently across isolates and
processes: only one caller actually downloads Chrome; others wait and
share the result. Useful when multipledart testisolates each call
puppeteer.launch()against an empty cache.- Default
cachePathmoved from.local-chrome/to
.dart_tool/puppeteer/local-chrome/(under the current Dart project or
workspace root), per Dart's project-specific tool caching convention. For
AOT-compiled binaries with no package config, falls back to an OS user
cache dir (~/Library/Caches/puppeteer,~/.cache/puppeteer, or
%LOCALAPPDATA%\puppeteer). Existing.local-chrome/directories on disk
can be deleted manually.
Release notes
Open source →- Update to Chrome 148.0.7778.97.
downloadChromeis now safe to call concurrently across isolates and processes: only one caller actually downloads Chrome; others wait and share the result. Useful when multipledart testisolates each callpuppeteer.launch()against an empty cache.- Default
cachePathmoved from.local-chrome/to.dart_tool/puppeteer/local-chrome/(under the current Dart project or workspace root), per Dart's project-specific tool caching convention. For AOT-compiled binaries with no package config, falls back to an OS user cache dir (~/Library/Caches/puppeteer,~/.cache/puppeteer, or%LOCALAPPDATA%\puppeteer). Existing.local-chrome/directories on disk can be deleted manually.
-
3.22.009 Apr 2026 -
3.21.009 Mar 2026 -
3.20.010 Sep 2025 -
3.19.010 Jul 2025 -
3.18.016 Apr 2025 -
3.17.012 Feb 2025 -
3.16.020 Dec 2024 -
3.15.018 Sep 2024Release notes
Open source →- Update to Chrome 129.0.6668.58
- Change close code for websocket in web to 1000
-
3.14.011 Sep 2024 -
3.13.022 Aug 2024 -
3.12.026 Jun 2024 -
3.11.017 May 2024 -
3.10.013 May 2024 -
3.9.023 Apr 2024 -
3.8.026 Feb 2024 -
3.7.017 Feb 2024 -
3.6.002 Nov 2023 -
3.5.020 Oct 2023 -
3.4.129 Sep 2023 -
3.4.019 Sep 2023 -
3.3.020 Aug 2023 -
3.2.006 Aug 2023 -
3.1.115 Jun 2023Release notes
Open source →- Update to Chrome 114.0.5735.133
- Widen constraint on dependency
package:http
-
3.1.013 Jun 2023Release notes
Open source →- Update to Chrome 114
- Fix a bug on Windows when a relative directory was passed to
userDataDir
-
3.0.010 May 2023Release notes
Open source →- Download "Chrome for Testing" instead of Chromium.
- Update to Chrome 113
- Cache the browser binaries by default in
.local-chromeinstead of.local-chromium - Replace
int revisionparameter withString versionindownloadChrome - Require minimum Dart
3.0.0version.
-
2.25.122 Aug 2024Nothing published for this version
-
2.25.021 May 2024Nothing published for this version
-
2.24.024 Mar 2023 -
2.23.027 Feb 2023 -
2.22.028 Jan 2023Release notes
Open source →- Add additional screenshot parameters
- Add
onDownloadProgresscallback ondownloadChromefunction
-
2.21.012 Jan 2023 -
2.20.022 Dec 2022Release notes
Open source →- Fixed a bug:
page.waitForSelector('#selector', timeout: Duration.zero)throws instantly instead of disabling timeout #210. - Internal refactor of target management to use auto discover feature of Chromium.
- Fixed a bug:
-
2.19.008 Dec 2022 -
2.18.002 Dec 2022Release notes
Open source →- Expose
Workerclass - Update the default arguments used to launch the chromium process
- Expose
-
2.17.026 Oct 2022 -
2.16.025 Oct 2022 -
2.15.021 Oct 2022Release notes
Open source →- Allow
puppeteer.connectto be called on the Web platform (Dart code compiled to JavaScript).
- Allow
-
2.14.009 Oct 2022 -
2.13.023 Sep 2022Release notes
Open source →- Fix a bug during request interception. In
NetworkManager.continueRequestoriginal headers were discarded.
- Fix a bug during request interception. In
-
2.12.024 Jul 2022 -
2.11.025 Jun 2022 -
2.10.002 Jun 2022Release notes
Open source →- Update to Chromium 103
- Use dart enhanced
enumsfor all enumerations in the protocol
-
2.9.313 Jan 2023Nothing published for this version
-
2.9.205 Jan 2023Nothing published for this version
-
2.9.110 Nov 2022Nothing published for this version
-
2.9.010 May 2022 -
2.8.020 Apr 2022 -
2.7.007 Mar 2022 -
2.6.007 Feb 2022 -
2.5.008 Dec 2021Release notes
Open source →- Add
BrowserPathto have access to installed browser executable path.
var browser = await puppeteer.launch(executablePath: BrowserPath.chromeCanary);- Fix bug to make current version work with chrome stable 96
- Add
-
2.4.030 Nov 2021 -
2.3.015 Aug 2021 -
2.2.112 Jul 2021 -
2.2.004 Jun 2021