Puppeteer and headless Chromium are heavy, slow to cold-start, and awkward on serverless. For structured documents like invoices you don't need a browser at all — InvoicePDF renders straight from JSON.
A headless browser ships ~300MB of Chromium, needs system libraries, and adds seconds of cold-start on serverless. For a document with a known layout that's pure overhead. A structured renderer is smaller, faster, and free to host.
POST your invoice JSON, get application/pdf back. No browser pool, no --no-sandbox flags, no memory tuning. Try it at the live playground.