Puppeteer now launches with headless: true by default, which uses the new Headless Chrome mode (a full Chrome instance running without a display)
The old headless implementation is available as a separate chrome-headless-shell binary; to use it explicitly, pass headless: 'shell' in your launch options
For most automation tasks, the new headless mode (headless: true) is recommended as it matches the behavior of headed Chrome more closely and is more feature-complete
If your scripts rely on behaviors unique to the old shell (e.g., certain rendering differences or lower startup overhead for simple tasks), test them against the new mode first and switch gradually
Verify browser version and headless mode at runtime by reading browser.version() and checking the userAgent if your automation targets need to match specific Chrome behavior
Known gotchas
The new headless mode can consume more memory than chrome-headless-shell because it runs more of the full Chrome stack; benchmark memory usage before switching in resource-constrained environments
Some DevTools Protocol features behave differently or are unavailable between the two modes; if you use low-level CDP commands, test them explicitly after switching
Confirm you are using a recent enough version of Puppeteer (and Chromium) that supports the new headless mode; older versions may not respect the headless: 'shell' string
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp