Browser Run - Multiple concurrent clients per session
Browser Run sessions now accept multiple concurrent connections instead of one at a time, allowing multiple Workers to connect to the same browser simultaneously. Each connection uses separate browser contexts to isolate pages, cookies, and storage, reducing cold-start time and browser limits.
Browser Run sessions now accept multiple concurrent connections. Before, a session accepted only one connection at a time, and other Workers had to wait until that connection closed. Now multiple Workers can connect to the same browser at the same time.
Each puppeteer.connect() call opens its own Chrome DevTools Protocol (CDP) connection. Create a separate browser context for each request to keep its pages, cookies, and storage apart from other clients.
const browser = await puppeteer.connect(env.MYBROWSER, sessionId);
const context = await browser.createBrowserContext();
try {
const page = await context.newPage();
await page.goto("https://example.com");
// ...
} finally {
await context.close();
await browser.disconnect(); // keep the shared browser running
}const browser = await puppeteer.connect(env.MYBROWSER, sessionId);
const context = await browser.createBrowserContext();
try {
const page = await context.newPage();
await page.goto("https://example.com");
// ...
} finally {
await context.close();
await browser.disconnect(); // keep the shared browser running
}
Sharing sessions means fewer new browsers to launch, less cold-start time, and fewer concurrent browsers counted against your limits.
Concurrent connections require @cloudflare/puppeteer version 1.1.0 or later.
Refer to Reuse sessions for a full example.
Source: original entry ↗
More from Cloudflare
Follow Cloudflare to get its new changes in your feed and email digest.
Persistent browser tool in Agents SDK with tabs and logins
The Cloudflare Agents SDK now includes a browserTool that allows agents to maintain a persistent browser session across multiple turns, preserving tabs, cookies, and login sessions. The browser remains alive even when the Durable Object hibernates, with a 10-minute idle timeout before creating a fresh session.
Cloudflare API MCP server sends Workers Issues as MCP Events
The Cloudflare API MCP server now exposes Workers Issues as MCP Events through webhook subscriptions, allowing agents to receive real-time notifications when production failures are detected without polling. Clients can subscribe to cloudflare.alert.workers_observability_real_time_issue scoped to an account or individual Worker.
Web Analytics: Deeper Core Web Vitals Diagnostics with LCP & INP Sub-Part Metrics
Real User Monitoring in Web Analytics now breaks down Largest Contentful Paint (LCP) and Interaction to Next Paint (INP) into their constituent phases, plus splits connection time into TCP and TLS components. These sub-part metrics are available in the dashboard and queryable through the GraphQL Analytics API to help identify which specific area is impacting page performance.