Repository navigation
Fullbleed Node 0.2.0: optional process isolation
Fullbleed for Node.js 0.2.0 adds optional process isolation for PDF rendering:
const result = await renderPdf({
html: '<h1>Monthly statement</h1>',
isolation: 'process',
timeoutMs: 10_000,
maxPages: 20,
});A failed child process rejects with PROCESS_FAILED, allowing the caller to handle the error and serve another request. Success, timeout, and cancellation wait for the render process to stop and IPC to disconnect. Child startup excludes application flags and NODE_OPTIONS. ESM, CommonJS, and inline module callers are supported.
Process mode requires a host that permits child processes and adds startup and memory costs. There is no process pool or automatic retry. The default worker mode, bundled fonts, runtime dependencies, and exact Fullbleed 2.5.8 engine pin are unchanged.
Validation: 32 rendering tests per CI job; packed installs on Node 22/24/26 across Linux, Windows, and macOS; seven native/WASI PDF and preview comparisons; seven embedded-font fixtures and ten font-family cases. The installed process consumer checks that the parent never loads WebAssembly or rendering workers, excludes application preloads, forces child termination, and renders successfully afterward. Tests also cover a PDF followed by a failed exit, malformed/missing IPC replies, spawn failure, IPC loss, concurrent cancellation, and document errors. PDFs, PNGs, logs, and hashes are retained in the attached evidence.
The original intermittent native crash in issue #7 remains open. These checks establish the tested fault handling; they do not reproduce or fix that crash.
See the process isolation guide. Install with npm install --save-exact fullbleed@0.2.0 from npm, or use the attached tarball.