diegomura / diegomura/react-pdf

@react-pdf/renderer crashes when used via external package in Next.js App Router (monorepo)

Open
#3,285 1 comment 1 reaction 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.