Skip to content

Migration

Move from jsreport to Formfeed

jsreport templates with Handlebars and the chrome-pdf recipe render with Chromium, like Formfeed. The importer takes your .jsrexport file, keeps the markup and the page settings, and tells you which custom helpers and scripts need a new home.

Free plan with 100 units a month, no credit card

1. Import the templates

Export from the jsreport Studio or the jsreport command line, then open Templates, choose Import and jsreport, and pick the templates from the file; Create drafts makes a Handlebars template of each. The command line does the same with formfeed import jsreport. Every mapping is in the migration guide.

  • Kept. Handlebars markup, header and footer templates with page numbers, paper, margins, scale, page ranges, PDF metadata and the sample data.
  • Resolved. Assets become data URIs or inline CSS, child templates and components are inlined, toJS becomes json.
  • Reported. Custom JavaScript helpers with every call, scripts, pdf-utils operations and engines or recipes Formfeed does not have.

2. Replace custom helpers

jsreport runs your helpers as code on your server; Formfeed does not run custom code. Formatting, dates, sums, QR codes and barcodes are built-in helpers, and anything else is computed in your application and sent with the data.

3. Switch the API

Publish each imported draft first: the API renders the published version. Then jsreport's report endpoint becomes a render that names the template by its slug (its jsreport name in lowercase with dashes) and sends the data jsreport's request carried. Batches, webhooks, idempotency keys and output storage come with the API.

RenderShell
curl https://api-eu.formfeed.dev/v1/renders \
  -H "Authorization: Bearer ff_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "template": "invoice", "data": { "number": "R-7", "total": 12.5 } }'

What you no longer run

  • No report server. No Chromium to patch, no queue to size, no storage to clean up. Rendering, storage and signed download links are part of the service.
  • EU processing. Database and rendering in Frankfurt, outputs stored in the EU, with a data processing agreement.
  • Templates as files. Keep templates in your repository and test them in CI, as before, with the engine the API uses.

FAQ

Which templates can be imported?
Handlebars templates with the chrome-pdf or chrome-image recipe; the html recipe becomes a PDF template. jsrender, EJS and Pug templates are imported with an error so you can rewrite them. Excel, Word and other recipes are reported and imported as PDF templates for reference only. Word output can be rebuilt as a Word template (Starter and above): your own .docx with Handlebars tags, filled from the same data.
Do I need to import child templates separately?
No. Child templates and components are inlined into the templates that use them.
What happens to large images and fonts?
Files up to 256 KB are embedded as data URIs. Larger ones become {{asset "logo.png"}} references to the workspace’s file library: upload each file there once under the same name, on the Files page or with formfeed files push.

Start rendering today

The free plan includes 100 units a month and free test renders. Change plans when you need more.