Browser Run: now running on Cloudflare Containers — faster and more scalable
Key Points
- 120 concurrent browsers (4× increase)
- Quick Actions over 50% faster
- State moved from KV to D1+Queues with 100-row batching
Summary
Browser Run has been rebuilt on Cloudflare Containers (Durable Object-enabled) and is live with no customer changes required. Engineers get higher throughput, lower latency, and better reliability: you can spin up 60 browsers/min via the Workers binding and run up to 120 concurrent browsers (4× previous limits). Quick Action response times dropped by more than 50%, and the team can ship fixes and features faster thanks to dedicated container images.
Key Points
- Migration approach: gradual dual support (Containers + prior Browser Isolation) via a Worker proxy, validate per-plan, then roll out globally without requiring customer redeploys.
- Capacity & limits: 60 browsers/min acquisition through Workers binding; 120 concurrent sessions; Quick Actions now >50% faster.
- Latency strategy: use regional pools of pre-warmed DO-backed containers to minimize user→DO and DO→container hops and reduce WebSocket/RTT penalties.
- State management: moved from Workers KV (eventual consistency) to transactional D1 + Queues to eliminate race conditions when claiming browsers.
- Batching & throughput: containers write state every 5s into a location queue; consumers batch writes (100 rows, 1s max timeout) to D1 — this enables scaling to ~500k containers per location and yields a P95 batch write of ~0.1ms.
- Operational fallbacks: region-specific queue backlogs fall back to a designated backup region until queues catch up.
- Developer impact: faster browser upgrades and new capabilities (WebGL, WebMCP); Browser Run available on all Workers plans; no API or worker changes required.
Practical takeaways for engineers
- Avoid KV for critical, sub-30s request-path state. Use transactional DBs (D1/SQL) when you need atomic claims.
- Batch frequent heartbeat/state updates via queues (example consumer: max_batch_size=100, max_batch_timeout=1s).
- Pre-warm regional pools to constrain cross-region latency for bidirectional or WebSocket-heavy flows.
- Expect improved throughput and response times out-of-the-box when using Browser Run on Workers.
References: check the Browser Run docs, Quick Actions, /crawl endpoint, and Agents SDK for implementation details.