diff --git a/src/content/changelogs-next/2025-01-30-browser-rendering-more-instances.mdx b/src/content/changelogs-next/2025-01-30-browser-rendering-more-instances.mdx new file mode 100644 index 000000000000000..f9d858fa102a4e3 --- /dev/null +++ b/src/content/changelogs-next/2025-01-30-browser-rendering-more-instances.mdx @@ -0,0 +1,49 @@ +--- +title: More concurrent Br +description: Browser Rendering now supports more concurrent browser sessions. +products: + - workers + - browser-rendering +date: 2025-01-30T13:00:00Z +--- + +import { Render, PackageManagers, TypeScriptExample } from "~/components" + +[Browser Rendering](/browser-rendering/) now supports 10 concurrent browser instances per account _and_ 10 new instances per minute, up from the previous limits of 2. + +This allows you to launch more browser tasks from [Cloudflare Workers](/workers). + +To manage concurrent browser sessions, you can use [Queues](/queues/) or [Workflows](/workflows/): + + + +```ts +interface QueueMessage { + url: string; + waitUntil: number; +} + +export interface Env { + BROWSER_QUEUE: Queue; + BROWSER: Fetcher; +} + +export default { + async queue(batch: MessageBatch, env: Env): Promise { + for (const message of batch.messages) { + const browser = await puppeteer.launch(env.BROWSER); + const page = await browser.newPage(); + + try { + await page.goto(message.url, { + waitUntil: message.waitUntil + }); + // Process page... + } finally { + await browser.close(); + } + } + } +}; +``` + diff --git a/src/content/docs/browser-rendering/platform/limits.mdx b/src/content/docs/browser-rendering/platform/limits.mdx index 06e7ea94eefd852..823a9d21b4c71b2 100644 --- a/src/content/docs/browser-rendering/platform/limits.mdx +++ b/src/content/docs/browser-rendering/platform/limits.mdx @@ -5,7 +5,14 @@ sidebar: order: 30 --- -- 10 new browsers per minute per account. -- 10 concurrent browsers per account. -- By default, a browser instance gets killed if it does not get any [devtools](https://chromedevtools.github.io/devtools-protocol/) command for 60 seconds, freeing one instance. Users can optionally increase this by using the `keep_alive` [option](/browser-rendering/platform/puppeteer/#keep-alive). -- `browser.close()` releases the browser instance. +import { Render } from "~/components" + +| Feature | Limit | +| --------------------------------------------- | ------------------------------------------------------------- | +| Concurrent browsers per account | 10 per account [^1] | +| New browser instances per minute | 10 per minute [^1] | +| Browser timeout | 60 seconds [^1][^2] | + +[^1]: Contact our team to request increases to this limit. +[^2]: By default, a browser instance gets killed if it does not get any [devtools](https://chromedevtools.github.io/devtools-protocol/) command for 60 seconds, freeing one instance. Users can optionally increase this by using the `keep_alive` [option](/browser-rendering/platform/puppeteer/#keep-alive). `browser.close()` releases the browser instance. +close()` releases the browser instance.