diegomura / diegomura/react-pdf

RuntimeError with WebAssembly in @react-pdf/yoga on Node.js Server

Open
#2,589 5 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
16.8k
Forks
1.3k
Avg merge
5h 6m
Merged PRs (30d)
52

Description

Hello,

I've encountered a critical issue while using @react-pdf/renderer in a Node.js Express server environment. The server crashes with a RuntimeError related to WebAssembly memory allocation when attempting to generate PDFs. The error message is as follows:

```javascript
RuntimeError: Aborted(RangeError: WebAssembly.instantiate(): Out of memory: wasm memory). Build with -sASSERTIONS for more info.
at w (/usr/app/node_modules/yoga-layout/binaries/wasm-async-node.js:14:73)
at /usr/app/node_modules/yoga-layout/binaries/wasm-async-node.js:62:60
```
This error suggests that the WebAssembly module within yoga-layout, which is a dependency of @react-pdf/renderer, is running out of memory.

**To Reproduce**
1. Set up a basic Express server that uses @react-pdf/renderer to generate PDFs.
2. Trigger the PDF generation endpoint with the necessary data.
3. The server crashes with the above RuntimeError after a few successful PDF generations.
Expected Behavior:

The PDF generation should complete successfully without causing a server crash or running out of WebAssembly memory.

**Actual Behavior:**

The server crashes with a RuntimeError indicating that WebAssembly ran out of memory.

**Additional Context:**

The issue seems to occur after generating multiple PDFs, suggesting a potential memory leak or insufficient memory allocation for WebAssembly in the yoga-layout module.
Reducing the complexity of the PDF layout temporarily mitigates the issue but does not solve it entirely.
I would appreciate any insights or suggestions on how to resolve this issue. If there are any known workarounds or if additional information is needed, please let me know.

**Environment:**

Node.js version: v16.18.1
Express version: ^4.18.2
@react-pdf/layout": "3.10.3",
@react-pdf/renderer": "3.3.4",
Operating System: docker image

Thank you for your time and assistance.

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.