I replaced JasperReports with JavaScript – and it's 4 faster
Description and use
ReportWright replaced JasperReports, speeding report generation 4–5× and supporting PDF, Excel, Word, PowerPoint, and interactive HTML in a JavaScript environment.
Problem
JasperReports, SSRS, and Crystal Reports require JVM/.NET and paid servers, and do not fit a JavaScript stack.
Outcome
ReportWright is 4–5× faster than JasperReports for grouped reports, 2× faster than QuestPDF for single invoices, and streams a million rows in 53 s with flat memory.
Workflow
- Install ReportWright packages via npm
- Define report schema in JSON
- Provide data sources and datasets
- Render report with render()
- Export PDF with exportPdf()
- Write output to file
Evidence
I benchmarked it on GitHub Actions (4 vCPU) against other engines, checking every output file.
0.91 s vs 3.9 s vs 2.7 s for 10,000 rows
A million rows streams in 53 s with flat memory.
- Record date: 2026-10-11T11:56:01.816Z