diegomura / diegomura/react-pdf
@react-pdf/renderer crashes when used via external package in Next.js App Router (monorepo)
- Dominant language
- TypeScript
- Stars
- 16.8k
- Forks
- 1.3k
- Avg merge
- 5h 6m
- Merged PRs (30d)
- 52
Description
When using @react-pdf/renderer in a Next.js App Router project via an external package (e.g. from a monorepo), PDF generation fails at runtime.
However, the same code works correctly if @react-pdf/renderer is installed directly in the Next.js application.
```bash
TypeError: Cannot read properties of undefined (reading 'S')
```
Thrown during renderToStream.
Environment
• Next.js: 15 (App Router)
• React: 19
• Node.js: 22
• Monorepo: Turborepo
• Package manager: pnpm
• @react-pdf/renderer: 4.3.2
Project structure
```text
apps/
web/ ← Next.js App Router app
packages/
pdf/ ← custom package wrapping @react-pdf/renderer
```
packages/pdf exports React components based on @react-pdf/renderer:
```tsx
// packages/pdf/components.ts
export { Document, Page, Text } from "@react-pdf/renderer";
```
❌ Failing case (renderer used via external package)
```tsx
// apps/web/app/api/pdf/route.tsx
import { Document, Page, Text } from "@repo/pdf/components";
import { renderToStream } from "@repo/pdf/server";
export async function GET() {
const stream = await renderToStream(
Hello
);
return new Response(stream);
}
```
Result:
```bash
TypeError: Cannot read properties of undefined (reading 'S')
```
✅ Working case (renderer installed in app)
```tsx
// apps/web/app/api/pdf/route.tsx
import { Document, Page, Text, renderToStream } from "@react-pdf/renderer";
export async function GET() {
const stream = await renderToStream(
Hello
);
return new Response(stream);
}
```
✅ Works without errors.
Key observation
• JSX, runtime, and code are identical
• Only difference:
• ❌ @react-pdf/renderer resolved from external package
• ✅ @react-pdf/renderer resolved from Next.js app itself
This indicates a possible issue with:
• multiple React renderers / reconciler instances
• module resolution in monorepos
• assumptions inside @react-pdf/renderer about React element identity
• interaction with Next.js App Router (RSC)
Contributor guide
Assessment
This issue has not been assessed yet.