Skip to content

puppeteer

This is a tool reference

What a tool or project is, who makes it, and what it is for, whether someone else wrote it or I did. Everything I have learned about it lives elsewhere and links back here.

puppeteer1 drives a browser from JavaScript. It is rarely a direct dependency here: it arrives underneath something else, which is what makes the one fact on this page worth writing down.

Author Google, from the Chrome DevTools team
Licence Apache-2.0
Language TypeScript
Distribution npm, as puppeteer and as puppeteer-core
Source github.com/puppeteer/puppeteer
Version read 25.13.0, the latest release

Every release carries its own browser version

PUPPETEER_REVISIONS in puppeteer-core names one exact Chrome build per release2. puppeteer downloads that build on install and launches it by default; puppeteer-core ships the same constant but downloads nothing, leaving the caller to say which browser to use.

The constant moves roughly every two releases, and quickly:

Release Default Chrome
25.4.0 151.0.7922.47
25.6.0 151.0.7922.77
25.8.0 152.0.7977.42
25.9.0 152.0.7977.54
25.10.0 152.0.7977.75
25.11.0 153.0.8010.36
25.12.0 154.0.8037.57
25.13.0 155.0.8059.39

Those were read out of the published tarballs, from package/src/revisions.ts, which is the way to answer the question for a release that is not the current one.

puppeteer browsers install chrome@<version> adds a browser to the cache. It does not change which one gets launched. The two look interchangeable and are not: one populates a directory, the other is a constant compiled into the library. A project that installs a pinned Chrome and leaves the library version floating has pinned nothing, which is the finding this page exists for. The procedure that follows from it is Pin the browser behind a pre-commit link checker.

Where it turns up here

Underneath linkspector, whose second checking pass loads a page in headless Chrome for any link an HTTP request could not settle. The browser is part of what decides whether a link is reported as broken, which is why Pin transitive runtime dependencies, not just the tool names it rather than treating it as an implementation detail of the link checker.

The following pages link to this page: