mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Webevaluationupdated 26 Aug 2026

pdfcn review

pdfcn is a registry of React components and complete document blocks for generating PDFs with Takumi or Forme. Developers copy the source into their application through the shadcn workflow, then adapt tables, forms, charts, invoices, reports, themes, headers, and page controls as local code.

+41stars / 7d
Verdict

Our pdfcn install pulled 716 packages and used 729 MB, then its production build passed in 96 seconds, but there was no test target to run. Use it when a React team wants editable invoice and report components delivered through the shadcn copy-in model. Choose a lower-level renderer when you need a stable library API rather than copied source, and budget your own document regression tests either way.

We ran it

Lab card: what happened when we ran pdfcnScreenshot of pdfcn (pdfcn.dev)
Install✓ · 68s716 packages · 729 MB
Build✓ · 96s
Testsn/ano test script
Repo653 files~40,443 lines of source · 3.7 MB · 1 CI workflows

Answers from our run

Does pdfcn build from source?

Dependencies installed in 68 seconds (716 packages), and the build succeeded in 96 seconds. We cloned commit e754375 into a clean Debian container with 3 CPUs and no project-specific setup.

Does pdfcn have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use pdfcn?

Teams wanting a hosted API that accepts HTML or data and returns a PDF: pdfcn gives you React source and renderer integrations to run in your application.

What are the alternatives to pdfcn?

React-pdf, PDFKit, jsPDF. Our pdfcn install pulled 716 packages and used 729 MB, then its production build passed in 96 seconds, but there was no test target to run.

Setup4/5Build passed; copy-in setup is clear but dependency tree is large
Docs4/5Live component, block, theme, and installation documentation
Community3/5870 stars and August 2026 activity, with a very small queue
Maturity3/5Working dual-renderer registry, but no releases or test target

Who it’s for

React teams that want owned PDF component source instead of a remote document service.
shadcn/ui users who prefer a familiar registry command and copy-in customization model.
Product teams building invoices, reports, forms, tables, charts, signatures, or branded document layouts.
Developers willing to choose and understand either the Takumi or Forme rendering base.

Who it’s NOT for

Teams wanting a hosted API that accepts HTML or data and returns a PDF: pdfcn gives you React source and renderer integrations to run in your application.
Projects outside React that cannot use TSX components or the shadcn registry workflow.
Contributors requiring an executable test suite: our checkout had no test script or target and no tests directory; the contribution guide names type checking instead.
Small dependency budgets: our install pulled 716 packages and occupied 729 MB for the documentation and registry monorepo.
Buyers who want a long release history before adoption: GitHub had no latest release for the repository.

Setup reality

Our commit e754375 checkout installed 716 pnpm packages in 68 seconds and used 729 MB on disk. The production build succeeded in 96 seconds. There was no tests script or target, so tests were skipped; the repository had 1 CI workflow file and no tests directory.

Consumer setup uses the shadcn registry flow, then adds copied components to a React project using either Takumi or Forme. Fonts, images, document data, renderer selection, output delivery, and any server runtime still belong to the host application.

The repository itself needs Node 20 or newer and pnpm. Its build creates the shadcn registry before building the Next.js documentation site. Contributors are directed to type checking and formatting checks rather than a documented unit-test command.

Copied React source is the product

pdfcn follows the shadcn model: a registry command places component source inside your project, where the team can inspect and change it. That is different from installing a black-box PDF service or calling a hosted conversion API. The repository provides focused pieces for text, headings, tables, graphs, forms, page numbers, headers, footers, watermarks, signatures, QR codes, lists, images, and layout control. It also includes complete invoice and report blocks for teams that need a useful starting document rather than a blank renderer.

Owning the code is valuable when brand rules or document quirks require local changes. It also transfers maintenance to the adopter. A copied table will not receive upstream fixes until someone compares or reapplies changes, and a customized invoice can drift from its registry source. Teams already comfortable with shadcn/ui will recognize that bargain. Teams expecting conventional semantic-version upgrades may prefer a normal package whose components remain behind an imported API.

Two renderers give choice and duplicate decisions

The same component families are documented for Takumi and Forme. pdfcn calls these its two rendering bases and provides blocks under each. That lets a team choose the engine that suits its runtime and output needs without abandoning the higher-level component vocabulary. It also means renderer choice is a design decision the registry cannot make for you. Font handling, supported layout behavior, image loading, pagination, and deployment characteristics need testing with the selected base and the actual documents.

The repository's package manifest used Takumi PDF 0.11.0 and Forme packages 0.10.5 when we inspected it. Those are implementation details of the reviewed checkout, not promises that both engines behave identically. A component name shared across two folders does not prove byte-for-byte output or equal feature support. Before standardizing, render the same difficult sample through the intended base: long tables, missing fields, non-Latin text, remote images, page breaks, and the largest document the application expects.

What happened when we ran it

Our commit e754375 checkout installed 716 pnpm packages in 68 seconds on Node 22 and occupied 729 MB. The production build succeeded in 96 seconds. The checkout contained 653 files, about 40,443 lines of source, and 3.7 MB of repository data. Installation size mainly reflects the documentation site, registry tooling, both renderers, and the wider frontend toolchain; it should not be read as the size of one copied component in a consumer application.

There was no test script or target, so our harness skipped tests. The repository had 1 CI workflow file, no Dockerfile, no tests directory, and monorepo workspaces. The contribution guide asks developers to run TypeScript checking plus formatting and lint checks, and says those checks run in CI. Static checks are useful, but they do not replace visual or semantic PDF assertions. We did not receive a test count or document-output comparison from this run, so the successful build is the strongest execution signal we have.

A 729 MB repository install needs context

Consumers copy selected source rather than shipping the whole documentation repository, so the 729 MB installation should not be presented as the cost of adding one PDF table. It is still relevant to contributors, registry maintainers, and teams planning a fork. The root application includes Next.js 16.3.0, React 19.2.5, documentation tooling, syntax highlighting, PDF previews, the shadcn CLI, TypeScript 6.0.3, and both generation bases. A contributor is maintaining a documentation site, registry builder, examples, and component source together.

The build order also matters. pnpm build first runs shadcn build to produce registry artifacts and then builds the Next.js site. Our 96-second success shows that path worked at commit e754375 in a fresh container. It does not prove a copied block will render correctly inside every Next.js, serverless, browser, or Node deployment. The host application owns its runtime boundary and should add a smoke test that generates and opens a representative PDF.

Invoices and reports save the most initial work

The component catalog is useful, but the finished blocks are the stronger reason to try pdfcn. The documentation tree includes classic, consultant, corporate, creative, minimal, and modern invoices for both renderers. It also has financial, marketing, operations, and security report layouts. A team can start from a document with hierarchy and spacing already decided, then replace types, data, colors, fonts, and sections. That is much faster than assembling every line, total, header, and page rule from primitives.

Templates can also create false confidence. Invoice requirements vary by jurisdiction, reports need accessible reading order and correct chart labels, and a good preview with sample data may break on unusually long customer names or hundreds of rows. pdfcn provides presentation code, not legal, accounting, accessibility, or archival guarantees. The adopter should validate those obligations with real fixtures and compare generated documents, ideally at both the text-extraction and rendered-image levels.

August activity is current, while release history is absent

The repository was pushed on August 25, 2026. GitHub reported 870 stars, 2 open issues and pull requests, an MIT license, and no latest release. A small queue is encouraging only in a limited sense; it may also reflect a young audience. The initial changelog entry is dated August 13, and the absence of GitHub releases means adopters should pin copied registry inputs or record the commit used for each import.

React-pdf is the clearest alternative when a team wants a maintained renderer library and will build its own design system. PDFKit and jsPDF suit imperative generation without React. pdfcn earns its place when the missing layer is reusable document design rather than raw PDF capability. Our build passed, the docs expose both component and block source, and the MIT license permits adaptation. The missing automated test target means your application must supply the confidence that the registry itself did not demonstrate in our run.

Alternatives

ProjectWhat it isPick it when
React-pdfA React renderer for creating PDF documents with its own primitives and layout engine.pick this instead when you want a direct library dependency and will design the document components yourself.
PDFKitA JavaScript PDF generation library with drawing, text, image, and document APIs.pick this instead when imperative PDF control matters more than React components and shadcn-style source ownership.
jsPDFA JavaScript library for generating PDFs in browsers and other JavaScript environments.pick this instead when client-side programmatic PDF creation is the main requirement and prebuilt React blocks add little.

What people are saying

  1. [velocity-scout] shadcn-labs/pdfcn

Sources

  1. pdfcn README
  2. pdfcn installation documentation
  3. pdfcn contributing guide
  4. pdfcn repository metadata

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →