Skip to content

Docs Home

Start From The Right Door

Flyfish Viewer is an offline-first frontend file preview system for web applications. It is designed for attachment centers, workflow tools, knowledge bases, support portals, and self-hosted intranet products that need broad file coverage without running a document conversion backend.

What To Read First

GoalPage
Run the viewer in a projectQuickstart
Pick the right npm packageEcosystem packages
Embed the official demo without npm packagesQuickstart: Zero-dependency integration
Choose minimal imports or composed presets2.1.0 modular import paths
Keep host CSS from leaking into the viewerStyle isolation and customization
Check format coverageSupported formats
Understand npm, GitHub, releases, and self-hosted assetsDistribution

Positioning

Flyfish Viewer is not trying to replace specialist editors. It gives business products a practical, embedded preview layer for common and uncommon attachments: documents, spreadsheets, slides, PDFs, archives, email, diagrams, CAD drawings, 3D assets, code, logs, media, and data files.

The project keeps a pure TypeScript core under @file-viewer/core, split renderer packages for heavier formats, native component packages for Web Components, Vue, React, jQuery, and Svelte, and product-shaped presets for common capability sets.

The 2.1.0 architecture is modular by default: use minimal renderer imports when you need one exact format, or choose preset-lite, preset-office, preset-engineering, or preset-all when your product needs a composed capability set. In Vite projects, @file-viewer/vite-plugin auto-discovers installed presets and injects the capability layer, so most teams do not hand-write renderer imports.

Every standard component defaults to Shadow DOM so uncontrolled global CSS cannot break the viewer. Theme customization should use --file-viewer-* tokens and stable ::part() surfaces; use options.styleIsolation:'none' only for legacy deep overrides.

For heavy users that need everything immediately, use the native Full package. It already includes preset-all; do not install or pass another preset:

bash
npm install @file-viewer/vue3-full
npm install -D @file-viewer/vite-plugin # Vite
ts
fileViewerRenderers({ copyAssets: true })

Vite publishes complete assets in both dev and build. Webpack, Vue CLI, Rspack, Rollup, Umi, and other non-Vite projects run the same-version CLI included by the Full package:

bash
npx --no-install file-viewer-copy-assets ./public/file-viewer

Script-tag deployments can publish the complete @file-viewer/web-full/dist/ directory without a copy step.

Released under the Apache-2.0 License.