What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Puppeteer’s BrowserLauncher.launch(options) starts a browser and resolves to a Browser instance. Its public role is to provide a configurable launch interface—not a supported class for third-party code to instantiate or extend. The choices that matter most are which browser binary Puppeteer starts, which headless mode it uses, and how the process is configured.
What BrowserLauncher does
Puppeteer documents BrowserLauncher as an abstract launcher. Calling launch() returns a Promise<Browser>: once launch succeeds, the promise resolves to a Puppeteer Browser object that the application can use to control the browser.
As an Amazon Associate I earn from qualifying purchases.
The class constructor is internal. Treat the launcher as Puppeteer’s abstraction behind its launch API, not as a public extension point. For ordinary application code, use the documented launch API rather than constructing or subclassing BrowserLauncher. See the BrowserLauncher API reference and launch method reference.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →How launch options shape the browser process
launch() accepts LaunchOptions, which extend connection options. They let the caller select a browser and binary, set launch arguments, choose headless behavior, configure the process environment and output, select a user-data directory, control signal handling and startup timeout, and choose pipe transport for Chrome. The exact option set and caveats depend on the installed Puppeteer version; check that version’s API reference before relying on a setting.
#1 Best Overall
| Decision | What it controls | Documented behavior or caution |
|---|---|---|
| Browser and binary | Which browser family and executable Puppeteer launches. | Defaults to Chrome. A channel locates a regular Chrome installation; executablePath specifies an executable directly. Compatibility with arbitrary installations is not guaranteed. |
| Headless mode | Whether Chrome runs headless, in the separate shell mode, or visibly. | true selects current Chrome headless; 'shell' selects chrome-headless-shell; false launches headful Chrome. |
| Arguments | Additional browser command-line arguments and, when deliberately configured, changes to Puppeteer’s defaults. | ignoreDefaultArgs can disable or filter default arguments. Puppeteer cautions that it should be used carefully. |
| Process behavior | Environment, output streams, user-data directory, signal handling, timeout, and transport. | Documented defaults include a 30-second startup timeout and enabled handling for SIGHUP, SIGINT, and SIGTERM. dumpio: true pipes browser stdout and stderr to Node.js streams. |
The options reference documents devtools: true as forcing headful mode. These settings are launch-time controls; do not assume a configuration option changes installation-time browser downloads or vice versa. See LaunchOptions.
Choosing the browser binary
There are three common ways to determine which executable is used:
Rank #2
- Use Puppeteer’s bundled browser. This is the default path and the compatibility choice Puppeteer tests against.
- Use a Chrome channel. Set
channelto ask Puppeteer to locate a regular Chrome installation at a known system path. - Use an explicit executable. Set
executablePathto point at a particular browser binary.
The distinction matters particularly with puppeteer-core: its launch API requires either executablePath or channel. The configuration guide also describes installation-time configuration, including choosing an executable path or default browser and skipping browser downloads; documented environment variables can override configuration settings. Browser installation and the choice made in an individual launch() call are related, but they are not the same setting. See the installation guide and browser management documentation for installation and executable-path management.
Puppeteer’s InstallOptions documentation states: “Puppeteer only tests and guarantees compatibility with default binaries.” If you supply a custom executable, record its version and platform and test the browser behavior your project depends on. The browser-installation documentation says custom providers are not officially supported, leaving compatibility testing and maintenance to the user; do not assume a browser that launches is necessarily compatible with every Puppeteer feature. See InstallOptions.
Understanding Puppeteer’s headless modes
headless: true: launches Chrome’s current headless mode.headless: 'shell': selects the separatechrome-headless-shellbinary, an older headless implementation. It does not fully match regular Chrome, but the documentation notes it may be more performant for automation that does not need the complete Chrome feature set.headless: false: launches headful Chrome.
For current behavior, do not carry forward the historical default: before Puppeteer v22, old headless was the default. The current headless guide distinguishes the modes above. Select shell only when its behavioral differences suit the automation, and validate the pages and browser features the task requires. See headless modes.
A practical way to choose launch settings
- Start with the binary. Prefer Puppeteer’s bundled browser when you want the compatibility path. Use
channelorexecutablePathwhen you specifically need a system or custom browser, and test that combination. - Choose the rendering mode. Use
headless: truefor current headless Chrome,headless: 'shell'only if its narrower compatibility is acceptable, orheadless: falsewhen the browser must be visible. - Add only necessary process controls. Configure arguments, environment, timeout, output, user-data directory, signal handling, or pipe transport to meet a concrete requirement. Avoid changing default arguments without understanding what they do.
- Check the installed version’s reference. BrowserLauncher’s class reference is on Puppeteer’s
nextdocumentation branch, and the option details are version-sensitive. Confirm behavior against the stable documentation for the Puppeteer version in your project.
What the public documentation does—and does not—establish
The docs describe the launch contract, available configuration axes, and headless choices. They do not establish a universal internal sequence of private method calls for every release. The BrowserLauncher API reference is on the next branch, so its precise class-level description should be read as documentation for the forthcoming/current-next version rather than applied uncritically to every stable release. For a line-by-line implementation account, inspect the source and tests for the exact Puppeteer release you use.
Rank #4
Or skip the browser setup
If your goal is a website screenshot rather than controlling a browser process, ScreenshotNeo offers a screenshot API and MCP server. One GET request can return an image or PDF without you installing and launching Puppeteer:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteQuick Recap
Best Value
- Used Book in Good Condition
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. It removes cookie/consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots, and the free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.
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.




