Skip to content

Commit 7c3b836

Browse files
kathaylToriLindsay
andauthored
Update faq.mdx (#24922)
* Update faq.mdx first pass at cleaning FAQ. put things in sections * Update limits.mdx added Limits FAQ * Update pricing.mdx added Pricing FAQ and moved relevant FAQ questions over * Update faq.mdx deleted FAQ questions that I've moved to Pricing FAQ and Limits FAQ * Update src/content/docs/browser-rendering/faq.mdx Co-authored-by: ToriLindsay <[email protected]> * Update src/content/docs/browser-rendering/faq.mdx Co-authored-by: ToriLindsay <[email protected]> * Update src/content/docs/browser-rendering/platform/limits.mdx Co-authored-by: ToriLindsay <[email protected]> * Update src/content/docs/browser-rendering/platform/limits.mdx Co-authored-by: ToriLindsay <[email protected]> * Update src/content/docs/browser-rendering/platform/limits.mdx Co-authored-by: ToriLindsay <[email protected]> * Update src/content/docs/browser-rendering/platform/pricing.mdx Co-authored-by: ToriLindsay <[email protected]> --------- Co-authored-by: ToriLindsay <[email protected]>
1 parent c9458a0 commit 7c3b836

File tree

3 files changed

+62
-47
lines changed

3 files changed

+62
-47
lines changed

src/content/docs/browser-rendering/faq.mdx

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,53 @@ import { GlossaryTooltip } from "~/components";
1212

1313
Below you will find answers to our most commonly asked questions. If you cannot find the answer you are looking for, refer to the [Discord](https://discord.cloudflare.com) to explore additional resources.
1414

15-
### I see `Cannot read properties of undefined (reading 'fetch')` when using Browser Rendering. How do I fix this?
15+
---
1616

17-
This error occurs because your Puppeteer launch is not receiving the Browser binding or you are not on a Workers Paid plan.
17+
## Getting started & Development
18+
19+
### Does local development support all Browser Rendering features?
20+
21+
Not yet. Local development currently has the following limitation(s):
22+
- Requests larger than 1 MB are not supported.
1823

19-
To resolve: Pass your Browser binding into `puppeteer.launch`.
24+
For full feature access, use `npx wrangler dev --remote`.
2025

2126
### Will Browser Rendering bypass Cloudflare's Bot Protection?
2227

2328
No, Browser Rendering requests are always identified as bots by Cloudflare and do not bypass Bot Protection.
2429

2530
If you are attempting to scan your **own zone** and need Browser Rendering to access areas protected by Cloudflare’s Bot Protection, you can create a [WAF skip rule](/waf/custom-rules/skip/) to bypass the bot protection using a header or a custom user agent.
2631

32+
### Does Browser Rendering rotate IP addresses for outbound requests?
33+
34+
No. Browser Rendering requests originate from Cloudflare's global network and you cannot configure per-request IP rotation. All rendering traffic comes from Cloudflare IP ranges and requests include [automatic headers](/browser-rendering/reference/automatic-request-headers/), such as `cf-biso-request-id` and `cf-biso-devtools` so origin servers can identify them.
35+
36+
### Is there a limit to how many requests a single browser session can handle?
37+
38+
There is no fixed limit on the number of requests per browser session. A single browser can handle multiple requests as long as it stays within available compute and memory limits.
39+
40+
### How can I manage concurrency and session isolation with Browser Rendering?
41+
42+
If you are hitting concurrency [limits](/browser-rendering/platform/limits/#workers-paid), or want to optimize concurrent browser usage with the [Workers Binding method](/browser-rendering/workers-bindings/), here are a few tips:
43+
44+
- Optimize with tabs or shared browsers: Instead of launching a new browser for each task, consider opening multiple tabs or running multiple actions within the same browser instance.
45+
- [Reuse sessions](/browser-rendering/workers-bindings/reuse-sessions/): You can optimize your setup and decrease startup time by reusing sessions instead of launching a new browser every time. If you are concerned about maintaining test isolation (for example, for tests that depend on a clean environment), we recommend using [incognito browser contexts](https://pptr.dev/api/puppeteer.browser.createbrowsercontext), which isolate cookies and cache with other sessions.
46+
47+
If you are still running into concurrency limits you can [request a higher limit](https://forms.gle/CdueDKvb26mTaepa9).
48+
49+
---
50+
51+
## Errors & Troubleshooting
52+
53+
### I see `Cannot read properties of undefined (reading 'fetch')` when using Browser Rendering. How do I fix this?
54+
55+
This error typically occurs because your Puppeteer launch is not receiving the Browser binding. To resolve: Pass your Browser binding into `puppeteer.launch`.
56+
2757
### Why can't I use an XPath selector when using Browser Rendering with Puppeteer?
2858

2959
Currently it is not possible to use Xpath to select elements since this poses a security risk to Workers.
3060

31-
As an alternative try to use a css selector or `page.evaluate` for example:
61+
As an alternative, try to use a css selector or `page.evaluate`. For example:
3262

3363
```ts
3464
const innerHtml = await page.evaluate(() => {
@@ -45,55 +75,16 @@ const innerHtml = await page.evaluate(() => {
4575

4676
:::note
4777

48-
Keep in mind that `page.evaluate` can only return primitive types like strings, numbers, etc.
49-
50-
Returning an `HTMLElement` will not work.
78+
Keep in mind that `page.evaluate` can only return primitive types like strings, numbers, etc. Returning an `HTMLElement` will not work.
5179

5280
:::
5381

54-
### What are the usage limits for Browser Rendering and how do I estimate my costs?
55-
56-
You can view the complete breakdown of concurrency caps, request rates, timeouts, and REST API quotas on the [limits page](/browser-rendering/platform/limits/).
57-
58-
You can monitor your Browser Rendering usage in the [Cloudflare dashboard](https://dash.cloudflare.com). Go to **Compute (Workers)** > **Browser Rendering**. Then, you can use [the pricing page](/browser-rendering/platform/pricing/) to estimate your costs.
59-
60-
### Does Browser Rendering rotate IP addresses for outbound requests?
82+
### Why is my screenshot blurry?
6183

62-
No. Browser Rendering requests originate from Cloudflares global network, but you cannot configure per-request IP rotation. All rendering traffic comes from Cloudflare IP ranges and requests include special headers [(`cf-biso-request-id`, `cf-biso-devtools`)](/browser-rendering/reference/automatic-request-headers/) so origin servers can identify them.
84+
It may be because you increased the height and width of the viewport. To fix this, increase the value of the `deviceScaleFactor` (default is 1).
6385

6486
### I see `Error processing the request: Unable to create new browser: code: 429: message: Browser time limit exceeded for today`. How do I fix it?
6587

6688
This error indicates you have hit the daily browser-instance limit on the Workers Free plan. [Free-plan accounts are capped at free plan limit is 10 minutes of browser use a day](/browser-rendering/platform/limits/#workers-free) once you exceed those, further creation attempts return a 429 until the next UTC day.
6789

6890
To resolve: [Upgrade to a Workers Paid plan](/workers/platform/pricing/) which allows for more than 10 minutes of usage a day and has higher [limits](/browser-rendering/platform/limits/#workers-paid). If you recently upgraded but still see this error, try redeploying your Worker to ensure your usage is correctly associated with your new plan.
69-
70-
### Does local development support all Browser Rendering features?
71-
72-
Not yet. Local development currently has the following limitation(s):
73-
- Requests larger than 1 MB are not supported.
74-
75-
For full feature access, use `npx wrangler dev --remote`.
76-
77-
### I upgraded from the Workers Free plan, but I'm still hitting the 10-minute per day limit. What should I do?
78-
79-
If you recently upgraded to the Workers Paid plan to increase your Browser Rendering usage limits, but you're still encountering the 10-minute per day cap, try redeploying your Worker. This ensures your usage is correctly associated with your new plan.
80-
81-
### Why is my screenshot blurry?
82-
83-
If your screenshot is blurry, it may be because you increased the height and width of the viewport. To fix this, increase the value of the `deviceScaleFactor` (default is 1).
84-
85-
### How can I manage concurrency and session isolation with Browser Rendering?
86-
87-
If you are hitting concurrency limits, or would like to better manage concurrent browser usage with the [Workers Binding method](/browser-rendering/workers-bindings/), here are a few tips:
88-
89-
- Optimize with tabs or shared browsers: Instead of launching a new browser for each task, consider opening multiple tabs or running multiple actions within the same browser instance.
90-
- [Reuse sessions](/browser-rendering/workers-bindings/reuse-sessions/): You can optimize your setup and decrease startup time by reusing sessions instead of launching a new browser every time. If you are concerned about maintaining test isolation, for example for tests that depend on a clean environment, we recommend using [incognito browser contexts](https://pptr.dev/api/puppeteer.browser.createbrowsercontext), which isolate cookies and cache with other sessions.
91-
92-
If you are still running into concurrency limits you can [request a higher limit](https://forms.gle/CdueDKvb26mTaepa9).
93-
94-
### Is there a limit to how many requests a single browser session can handle?
95-
96-
No, there is not a fixed limit on the number of requests per browser session. A single browser can handle multiple requests as long as it stays within the available compute and memory limits.
97-
98-
### Do failed API calls, such as those that time out, add to billable browser hours?
99-
No. If a request to the Browser Rendering REST API fails with a `waitForTimeout` error, the browser session is not charged.

src/content/docs/browser-rendering/platform/limits.mdx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,18 @@ By default, a browser will time out if it does not get any [devtools](https://ch
5252
## Note on concurrency
5353

5454
While the limits above define the maximum number of concurrent browser sessions per account, in practice you may not need to hit these limits. Browser sessions close automatically—by default, after 60 seconds of inactivity or upon task completion—so if each session finishes its work before a new request comes in, the effective concurrency is lower. This means that most workflows do not require very high concurrent browser limits.
55+
56+
## FAQ
57+
58+
### I upgraded from the Workers Free plan, but I'm still hitting the 10-minute per day limit. What should I do?
59+
60+
If you recently upgraded to the [Workers Paid plan](/workers/platform/pricing/) but still encounter the 10-minute per day limit, redeploy your Worker to ensure your usage is correctly associated with the new plan.
61+
62+
### How can I manage concurrency and session isolation with Browser Rendering?
63+
64+
If you are hitting concurrency [limits](/browser-rendering/platform/limits/#workers-paid), or want to optimize concurrent browser usage with the [Workers Binding method](/browser-rendering/workers-bindings/), here are a few tips:
65+
66+
- Optimize with tabs or shared browsers: Instead of launching a new browser for each task, consider opening multiple tabs or running multiple actions within the same browser instance.
67+
- [Reuse sessions](/browser-rendering/workers-bindings/reuse-sessions/): You can optimize your setup and decrease startup time by reusing sessions instead of launching a new browser every time. If you are concerned about maintaining test isolation (for example, for tests that depend on a clean environment) we recommend using [incognito browser contexts](https://pptr.dev/api/puppeteer.browser.createbrowsercontext), which isolate cookies and cache with other sessions.
68+
69+
If you are still running into concurrency limits you can [request a higher limit](https://forms.gle/CdueDKvb26mTaepa9).

src/content/docs/browser-rendering/platform/pricing.mdx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ You can monitor your Browser Rendering usage in the [Cloudflare dashboard](https
2323
Cloudflare calculates concurrent browsers as the **monthly average of your daily peak usage**. In other words, we record **the peak number of concurrent browsers each day** and then average those values over the month. This approach reflects your typical traffic and ensures you are not disproportionately charged for brief spikes in browser concurrency.
2424
</Details>
2525

26-
### Examples of Workers Paid pricing
26+
## Examples of Workers Paid pricing
2727
<br/>
2828
#### Example: REST API pricing
2929
If a Workers Paid user uses the REST API for 50 hours during the month, the estimated cost for the month is as follows.
@@ -47,3 +47,12 @@ For **concurrent browsers**:
4747

4848
For **browser duration** and **concurrent browsers**:
4949
<br/>$3.60 + $10.00 = $13.60
50+
51+
## FAQ
52+
53+
### How do I estimate my Browser Rendering costs?
54+
55+
You can monitor your Browser Rendering usage in the [Cloudflare dashboard](https://dash.cloudflare.com). Go to **Compute (Workers)** > **Browser Rendering**. Then, you can use [the pricing page](/browser-rendering/platform/pricing/) to estimate your costs.
56+
57+
### Do failed API calls, such as those that time out, add to billable browser hours?
58+
No. If a request to the Browser Rendering REST API fails with a `waitForTimeout` error, the browser session is not charged.

0 commit comments

Comments
 (0)