<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj" -->

---
title: Write PDFs in React. Render them from Go. No Node, no...
description: A developer built &#x27;waffle&#x27;, an open-source library that lets you author PDF documents using React 18 components and render them entirely inside a Go binary —...
canonical: https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Write PDFs in React. Render them from Go. No Node, no browser, no sidecar. | daily.dev
og:description: A developer built &#x27;waffle&#x27;, an open-source library that lets you author PDF documents using React 18 components and render them entirely inside a Go binary —...
og:url: https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj
og:image: https://api.daily.dev/og/posts/YOQ6VDFyj.png
og:image:alt: Write PDFs in React. Render them from Go. No Node, no browser, no sidecar.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Write PDFs in React. Render them from Go. No Node, no browser, no sidecar.

**[Medium](https://daily.dev/sources/medium_js)** · 9 min read · 91 upvotes · 2 comments

## Summary

A developer built 'waffle', an open-source library that lets you author PDF documents using React 18 components and render them entirely inside a Go binary — no Node.js, no headless Chromium, no sidecar process. It uses esbuild (pure Go) to compile JSX in memory and goja (a JS engine written in Go) to execute real React. The element tree produced by React is serialized as JSON, then a Go pipeline handles flexbox layout, pagination, and PDF writing. A warm 1-page render takes ~6.6ms serially; an 8-page document with fonts uses ~83 MiB peak vs. hundreds of MB for a browser-based approach. Trade-offs include no arbitrary HTML/CSS, synchronous-only rendering, and a per-template asset cache.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@kikochaudhuri/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar-6e9668e235f2>

## Community discussion

Top comments from developers on daily.dev.

**@juanmateo** · 4 upvotes

> React is no longer just for the browser. 🚀
> The idea of using React components to generate PDFs through a Go-powered rendering pipeline is a great example of how modern frameworks can be adapted beyond their original purpose. Very impressive work!

**@ajaychoudhary80** · 0 upvotes

> Those memory numbers are impressive compared to browser-based PDF generation stacks.

## Similar posts on daily.dev

- [How to Convert PDF to HTML in JavaScript \(React Guide\)](https://daily.dev/posts/how-to-convert-pdf-to-html-in-javascript-react-guide--ocbrqgp5e) · Medium · 1 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#react](https://daily.dev/tags/react), [#golang](https://daily.dev/tags/golang)

[View this post on daily.dev](https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Write PDFs in React. Render them from Go. No Node, no browser, no sidecar.","url":"https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj"},"datePublished":"2026-07-18T07:36:00.442Z","dateModified":"2026-07-18T08:21:00.357Z","description":"A developer built 'waffle', an open-source library that lets you author PDF documents using React 18 components and render them entirely inside a Go binary —...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e992a0ef99b40009cc4b6bdff5ed1333?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e992a0ef99b40009cc4b6bdff5ed1333?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":2,"discussionUrl":"https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":91},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"webdev,react,golang","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Write PDFs in React. Render them from Go. No Node, no browser, no sidecar."}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/write-pdfs-in-react-render-them-from-go-no-node-no-browser-no-sidecar--yoq6vdfyj","comment":[{"@type":"Comment","text":"React is no longer just for the browser. 🚀\nThe idea of using React components to generate PDFs through a Go-powered rendering pipeline is a great example of how modern frameworks can be adapted beyond their original purpose. Very impressive work!","datePublished":"2026-07-20T12:00:01.611Z","url":"https://daily.dev/posts/YOQ6VDFyj#c-CVgjcJQ56","author":{"@type":"Person","name":"JuanMateo","url":"https://daily.dev/juanmateo"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"Those memory numbers are impressive compared to browser-based PDF generation stacks.","datePublished":"2026-07-22T04:45:53.956Z","url":"https://daily.dev/posts/YOQ6VDFyj#c-2RZtRPXOV","author":{"@type":"Person","name":"Ajay Choudhary","url":"https://daily.dev/ajaychoudhary80","image":"https://media.daily.dev/image/upload/s--WkX8wDW2--/f_auto/v1780989706/avatars/avatar_QNZlI2SgVnNSx5PSRpCVx?_a=BAMAMiWQ0"}}]}
```

