Open source·MIT

A modern React
PDF viewer

LumiPDF is a high-performance pdf viewer with virtualized rendering, search, annotations, and a clean TypeScript API. Built on PDF.js.

Open playground

Capabilities

A focused React PDF viewer - high-performance rendering, search, annotations, and a developer-friendly API.

Virtualized rendering that stays smooth at scale.

PDF.js under the hood - zoom, search, and navigate thousand-page documents without jank.

Get started

Themes & composition

Light and dark themes out of the box. Compose toolbar, sidebar, and viewer the way your product needs.

Private by design

Runs fully client-side. Documents stay in the browser - no backend required to render or search.

Drop-in React component

Ship a full PDF experience with a single component. TypeScript types, hooks, and gradual-migration helpers included.

Docs

Guides, API, and migration

Installation, quick start, annotations, theming, and a full DocumentViewer reference - structured like the docs you already know from other React libraries.

ReactTypeScript
Quick start →
import { DocumentViewer } from "lumipdf";
import "lumipdf/styles";

// Drop-in viewer
export function App() {
  return (
    <DocumentViewer
      source={{ kind: "url", url: "/report.pdf" }}
      theme="light"
    />
  );
}

Support

We're here when you ship.

LumiPDF is free and open source. Get help from the docs, report issues on GitHub, or contribute improvements.

GitHub Issues

Report bugs, request features, and track releases.

Open issues

Documentation

Installation, guides, migration, and API reference.

Browse docs

Community

Star the repo, open discussions, and contribute PRs.

View repository

Need a deeper dive?

Start with the support guide in the documentation.

Support guide