Skip to content

BrowserRendering ​

Cloudflare Browser Rendering allows you to run a full browser instance within your Worker to take screenshots, generate PDFs, and automate browser tasks.

Minimal Example ​

Create a basic Worker with browser rendering capabilities:

ts
import { Worker, BrowserRendering } from "alchemy/cloudflare";

const worker = await Worker("browser-worker", {
  name: "browser-worker",
  entrypoint: "./src/browser.ts",
  compatibilityFlags: ["nodejs_compat"],
  bindings: {
    BROWSER: new BrowserRendering()
  }
});

Worker Runtime Usage ​

Use Puppeteer to control the browser in your Worker:

ts
// src/browser.ts
import puppeteer from "@cloudflare/puppeteer";

export default {
  async fetch(request: Request, env: any) {
    const { searchParams } = new URL(request.url);
    const url = searchParams.get("url");

    if (!url) {
      return new Response("Please add an ?url=https://example.com/ parameter");
    }

    const browser = await puppeteer.launch(env.BROWSER);
    const page = await browser.newPage();
    await page.goto(url);
    const screenshot = await page.screenshot();
    await browser.close();

    return new Response(screenshot, {
      headers: {
        "content-type": "image/jpeg",
      },
    });
  },
};