Live
OpenShift 5 observability adds autonomous troubleshooting with LightspeedPartitioned __cf_bm cookie enables Bot Management continuity in third‑party iframesAI Production Architecture: Lessons from Microsoft Ignite’s Frontier TransformationBorderless Lakehouse Redefines Data Access for AI AgentsDynamic Model Switching in Gemini 4 Cuts Coding Agent Latency and Token CostRunning SGLang‑Neuron on AWS Trainium: Architecture and Ops GuideTerraform v5.29.0 adds full namespace control for Cloudflare AI SearchBeyond Token Pricing: Managing Amazon Bedrock Cost per TaskOpenShift 5 observability adds autonomous troubleshooting with LightspeedPartitioned __cf_bm cookie enables Bot Management continuity in third‑party iframesAI Production Architecture: Lessons from Microsoft Ignite’s Frontier TransformationBorderless Lakehouse Redefines Data Access for AI AgentsDynamic Model Switching in Gemini 4 Cuts Coding Agent Latency and Token CostRunning SGLang‑Neuron on AWS Trainium: Architecture and Ops GuideTerraform v5.29.0 adds full namespace control for Cloudflare AI SearchBeyond Token Pricing: Managing Amazon Bedrock Cost per Task
Cloudflare

Concurrent Workers with Cloudflare Browser Run: Architecture and Ops Guidance

AI SummaryPowered by AI

Browser Run sessions now support multiple Workers connecting to the same browser instance at once. This change lets edge functions run headless browsers in parallel, but requires careful context isolation and resource management.

Cloudflare Browser Run now permits several Workers to attach to the same browser instance simultaneously. The change replaces the previous single‑connection model, where each session could only serve one Worker at a time, forcing the rest to wait.

For engineers who embed headless browsers in edge functions, this opens the door to higher throughput and lower latency, but it also introduces new responsibilities around context isolation, resource budgeting, and cleanup.

How Concurrent Connections Are Established

Each call to puppeteer.connect() creates an independent Chrome DevTools Protocol (CDP) channel. The browser process remains shared, while the CDP streams are distinct per Worker. To keep data such as cookies, local storage, and page state separate, the recommended pattern is to create a fresh browser context for every request.

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 alive
}

Implementation Checklist for Workers

  • Invoke puppeteer.connect() with the environment‑provided browser endpoint and the current sessionId.
  • Immediately call createBrowserContext() to obtain an isolated sandbox.
  • Perform all navigation and interaction inside that context.
  • In a finally block, close the context and disconnect the CDP client so the shared browser stays alive for other Workers.

Operational and Security Implications

Because the underlying Chrome process is now a shared resource, the following considerations become relevant:

  • Resource contention: Multiple Workers can compete for CPU, memory, and file‑descriptor limits. Monitoring per‑session usage and setting appropriate quotas is advisable.
  • Isolation guarantees: Browser contexts provide logical separation, but they share the same binary and OS‑level sandbox. Any vulnerability that escapes a context could affect all attached Workers.
  • Lifecycle management: Failing to close contexts or disconnect CDP clients can lead to leaked state, inflated memory usage, and eventual session exhaustion.
  • Observability: Logs and metrics should be correlated with the originating Worker ID to trace issues back to a specific request.

Related CloudNinjas coverage: hands-on guides.

What This Means For Practitioners

Adopting concurrent Browser Run sessions can reduce cold‑start latency and increase parallelism for AI model inference, web‑scraping, or security testing workloads. Teams should update their Workers to create a new browser context per request, enforce strict cleanup, and instrument resource usage. Ongoing evaluation of context isolation limits and runtime quotas will help maintain a secure and performant edge environment.

Originally published atCloudflare Developer Platform