Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The latest release listed in Puppeteer’s combined changelog for puppeteer and puppeteer-core is 25.12.0, released September 23, 2026. It rolls the bundled browser versions and includes maintenance and drag-and-drop fixes. If you are upgrading from an earlier major version, check the breaking changes in 25.0.0: Puppeteer now requires Node.js 22 or newer, and two methods that previously returned values synchronously now return Promises.

What changed in Puppeteer 25.12.0?

The official Puppeteer changelog is a combined changelog for puppeteer and puppeteer-core. Its latest listed release as of October 3, 2026 is 25.12.0, dated September 23, 2026.

  • Browser rolls: The release notes list Chrome 154.0.8037.57 and Firefox 156.0.
  • Dependency update: @puppeteer/browsers was updated from 3.2.2 to 3.2.3.
  • Launcher cleanup: Temporary profiles are cleaned up when the process exits.
  • Drag-and-drop fix: Puppeteer releases the mouse button when a drag-and-drop operation fails.
  • Accessibility fix: The release includes a shadow-host fix.

The notes also include additional browser rolls. Browser-version changes and dependency updates are maintenance changes; they are not necessarily new Puppeteer API features. Check the changelog for the full entry and subsequent releases before updating, since release and browser versions can change quickly.

What should you check before upgrading?

The main compatibility checkpoint is Puppeteer 25.0.0, released May 12, 2026. Its changelog labels these as breaking changes:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Puppeteer.product was removed.
  • The minimum Node.js version increased to 22.
  • executablePath and defaultArgs now return Promises.

Before moving to version 25, verify your Node.js runtime and search your code for uses of Puppeteer.product, executablePath, and defaultArgs. Code that expects the latter two to produce immediate values may need to use await or otherwise handle a Promise. Review the exact version’s changelog and migration guidance when planning a major-version update.

Which Puppeteer version and browser should you use?

Use the supported-browser matrix for the exact Puppeteer release you intend to run rather than assuming that the newest browser roll is compatible with every version. The official supported-browsers page says that if an exact match is not listed, Puppeteer uses the browser version supported by the immediately prior Puppeteer version. Stable Firefox support began with Puppeteer 23.0.0; consult the matrix for the specific Puppeteer and browser combination you need.

Installation and browser downloads can depend on your environment and configuration. Puppeteer documents browser installation and management in its browser management guide, configuration in its configuration interface reference, and cache-related setup in its troubleshooting guide. Check those references alongside the support matrix when setting up CI or a deployment image.

How do CDP and WebDriver BiDi fit into Puppeteer?

Puppeteer supports WebDriver BiDi, but that does not mean it has announced CDP as a replacement or that one protocol applies to every browser. The changelog records that Puppeteer 23.0.0 changed Firefox automation to use WebDriver BiDi by default. For Chrome, the Puppeteer FAQ says: “We are not going to stop supporting automation of Chrome with CDP – despite Puppeteer’s support for WebDriver BiDi.” The project FAQ attributes library maintenance to the Chrome Browser Automation team. See the Puppeteer FAQ and confirm the protocol supported by your chosen browser and release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose how Puppeteer manages the browser

Launch a browser or connect to one

Puppeteer can launch a managed browser process or connect to an existing browser. Choose based on your deployment: launching gives the automation process direct control over browser startup, while connecting is appropriate when a browser is already provided by the surrounding environment. See the browser management guide for setup details.

Isolate work with BrowserContexts

When separate automation tasks need isolated browser contexts, use BrowserContexts rather than sharing page state indiscriminately. The browser management guide describes this approach for isolating tasks.

Choose the headless implementation deliberately

Standard headless Chrome and chrome-headless-shell are not identical. The shell does not fully match regular Chrome behavior, but Puppeteer’s headless modes guide says it can be more performant for automation when its reduced feature set is sufficient. Prefer the mode that matches your need for browser fidelity; do not assume performance or behavior is interchangeable.

Troubleshoot common upgrade and setup problems

  • Installation fails after a major upgrade: Confirm the runtime is Node.js 22 or newer when using Puppeteer 25, and compare your installed release with its changelog entry.
  • Code receives a Promise where it expected a value: Update callers of executablePath and defaultArgs to handle their Promise-returning behavior in version 25.
  • A browser is missing or cannot be found: Check browser download configuration, environment variables, and cache location in the browser management guide and troubleshooting guide. The troubleshooting documentation covers PUPPETEER_CACHE_DIR.
  • Your browser and Puppeteer versions do not line up: Check the supported-browser matrix for your exact Puppeteer release; do not infer support solely from the newest changelog browser roll.
  • Firefox automation behaves differently after an upgrade: Verify the release’s protocol behavior and the supported browser pairing. Firefox’s default automation changed to WebDriver BiDi in Puppeteer 23.0.0.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your task is simply to produce a website screenshot, ScreenshotNeo offers a screenshot API and MCP server instead of requiring you to manage a Puppeteer browser. A single GET request returns an image or PDF. Cookie banners and consent prompts, newsletter popups, and chat widgets are removed before capture; bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. Its MCP server lets AI agents use screenshot tools, and the free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. See the API documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Best Value
The SQL Programming Language: .
  • Used Book in Good Condition

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.