pdf-viewer-expo
v1.0.0
Published
A lightweight Expo Go–compatible PDF viewer for React Native using WebView and PDF.js.
Downloads
21
Maintainers
Readme
📄 Expo PDF Viewer
A lightweight, Expo Go–compatible PDF viewer for React Native — powered by WebView and PDF.js.
No native modules required. Works seamlessly on iOS, Android, and Web inside Expo Go.
🚀 Features
- ✅ Works inside Expo Go — no native build required
- 📄 View remote or local PDFs
- 🌐 Cross-platform (iOS, Android, Web)
- ⚡ Fast & lightweight, only uses WebView
- 🎨 Simple API inspired by
rn-pdf-reader-js - 💻 Based on PDF.js, an industry-standard renderer
📦 Installation
npm install pdf-viewer-expo react-native-webview
# or
yarn add pdf-viewer-expo react-native-webview💡 If you're using Expo Go,
react-native-webviewis already supported — no config or prebuild needed.
💡 Usage Example
import React from 'react';
import { View } from 'react-native';
import { ExpoPDFViewer } from 'pdf-viewer-expo';
export default function App() {
return (
<View style={{ flex: 1 }}>
<ExpoPDFViewer uri="https://arxiv.org/pdf/2203.00001.pdf" />
</View>
);
}🧩 Props
| Prop | Type | Required | Description |
|------|------|-----------|-------------|
| uri | string | ✅ | PDF source (local file or remote URL) |
| style | ViewStyle | ❌ | Optional custom styling for the WebView container |
⚙️ How It Works
Expo PDF Viewer renders PDFs entirely with JavaScript.
It embeds a minimal HTML template inside a WebView that uses PDF.js to load, parse, and draw the PDF on a <canvas> element.
This approach avoids native code entirely — making it fully Expo Go compatible and lightweight to maintain.
🧱 Planned Features
- [ ] Pagination (Next / Prev)
- [ ] Zoom controls
- [ ] Offline & base64 PDF support
- [ ] Dark mode
- [ ] Loading & error states
- [ ] Pre-bundled PDF.js worker for offline use
🧪 Local Development
You can clone this repo and link it to an Expo app to test changes:
git clone https://github.com/abdelouali/pdf-viewer-expo.git
cd pdf-viewer-expo
npm install
npm run build
npm packThen install it in your Expo project:
cd ../your-expo-app
npm install ../pdf-viewer-expo/pdf-viewer-expo-1.0.0.tgz🤝 Contributing
Contributions, issues, and feature requests are welcome!
Feel free to open an issue or submit a pull request.
If you build something cool on top of this library, please share it — I’d love to feature community projects.
🪪 License
MIT © Abdelouali Benkheil
⭐ Support
If you find this project helpful, consider giving it a star on GitHub 🌟
It helps others discover the library and motivates future development.
