Phase 1 - Reliability, compatibility and playground foundation
S
Saurabh Choudhary
This phase focuses on strengthening vue-pdf-export without breaking the existing public API.
Planned work:
- Fix selectable-text Print properly
- Repair Print behavior in renderMode="text"
- Keep Canvas-mode Print working
- Improve browser E2E coverage for Print
- Introduce a unified generation result and timing foundation
- Add a common internal result model
- Preserve the current GeneratePdfResult API
- Prepare the package for richer output and telemetry later
- Expose total generation time in the playground
- Add overall generation duration
- Add stage-level timing
- Add per-page timing instrumentation
- Surface useful performance information without changing generated PDFs by default
- Expose stress-test page-count presets in the playground
- 5
- 10
- 25
- 50
- 100
- 200
- 500
- 1000
- Custom page count / multiplier
- Include safe warnings for heavy and extreme tests
- Preserve cancellation and recovery
- Add package-manager consumer compatibility fixtures
- npm
- pnpm
- Yarn
- Yarn Plug'n'Play
- Bun
- Verify install, TypeScript resolution, production build, CSS import, and runtime PDF generation
- Add Nuxt 3 and Nuxt 4 SSR compatibility fixtures
- Ensure package imports do not crash during SSR
- Audit browser-only globals and imports
- Add explicit Nuxt integration guidance
- Add <ClientOnly> integration blueprint
- Keep actual PDF generation browser-side
- Add data-pdf-ignore
- Allow developers to exclude elements from generated PDFs
- Apply exclusion only in the export/staging copy
- Avoid permanently mutating the live application DOM
- Add page/body styling APIs
- Page background color
- Body background color
- Page CSS/classes
- Body CSS/classes
- Per-page style customization
- Keep behavior predictable across Canvas and selectable-text rendering modes
Primary goals:
- improve reliability
- improve browser compatibility
- improve package-manager compatibility
- improve Nuxt SSR safety
- improve playground diagnostics
- add low-risk customization features
- avoid breaking existing users
This phase should be implemented incrementally with regression tests after each step.
S
Saurabh Choudhary
Phase 1 is now complete and released in vue-pdf-export@1.1.0.
This phase ended up covering the full reliability and compatibility foundation we planned, including selectable-text Print fixes, unified generation results, opt-in timing metrics, stress-test presets, npm/pnpm/Yarn/Yarn PnP/Bun consumer verification, Nuxt 3/4 SSR compatibility, data-pdf-ignore, and page/body styling APIs.
A few additional pieces were also completed as part of the same foundation:
Added ArrayBuffer and Base64 PDF output support
Added generatePdfArrayBuffer() and generatePdfBase64()
Added public output serialization helpers and TypeScript types
Added source/API verification for the new public output methods
Improved portrait/landscape handling and export layout behavior
Improved header/footer rendering and reusable asset handling
Added stronger cleanup and staging-DOM lifecycle behavior
Expanded playground diagnostics and documentation
Added a dedicated stress playground page
Final verification is green across:
Unit tests
Production build
Browser E2E
SSR / Nuxt 3 / Nuxt 4
npm
pnpm
Yarn
Yarn Plug'n'Play
Bun
The goal of this phase was to strengthen the package without breaking the existing public API, and that foundation is now in place.
Phase 1: Complete ✅
Next up: smarter page-break intelligence and more advanced document-layout controls.