Marked as helpful by the asker
Move PDF generation to a server route: render the invoice as an HTML page and print it to PDF with Playwright or a service like Browserless. Browser PDF libraries are where bundle size and Safari bugs go to live. Your React invoice component can stay exactly as it is.