# Configuration & Setup ## Installation ```bash npm install @cloudflare/puppeteer # or @cloudflare/playwright ``` **Use Cloudflare packages** - standard `puppeteer`/`playwright` won't work in Workers. ## wrangler.json ```json { "name": "browser-worker", "main": "src/index.ts", "compatibility_date": "2025-01-01", "compatibility_flags": ["nodejs_compat"], "browser": { "binding": "MYBROWSER" } } ``` **Required:** `nodejs_compat` flag and `browser.binding`. ## TypeScript ```typescript interface Env { MYBROWSER: Fetcher; } export default { async fetch(request: Request, env: Env): Promise { // ... } } satisfies ExportedHandler; ``` ## Development ```bash wrangler dev --remote # --remote required for browser binding ``` **Local mode does NOT support Browser Rendering** - must use `--remote`. ## REST API No wrangler config needed. Get API token with "Browser Rendering - Edit" permission. ```bash curl -X POST \ 'https://api.cloudflare.com/client/v4/accounts/{accountId}/browser-rendering/screenshot' \ -H 'Authorization: Bearer TOKEN' \ -d '{"url": "https://example.com"}' --output screenshot.png ``` ## Requirements | Requirement | Value | |-------------|-------| | Node.js compatibility | `nodejs_compat` flag | | Compatibility date | 2023-03-01+ | | Module format | ES modules only | | Browser | Chromium 119+ (no Firefox/Safari) | **Not supported:** WebGL, WebRTC, extensions, `file://` protocol, Service Worker syntax. ## Troubleshooting | Error | Solution | |-------|----------| | `MYBROWSER is undefined` | Use `wrangler dev --remote` | | `nodejs_compat not enabled` | Add to `compatibility_flags` | | `Module not found` | `npm install @cloudflare/puppeteer` | | `Browser Rendering not available` | Enable in dashboard |