Licensing and keys
Free until your use crosses a line that is stated rather than implied. When it does, one string in your bootstrap is the whole integration.
When you need nothing
No key, no account, no signup, in any of these cases:
- Personal projects and learning.
- Open-source projects.
- Evaluation, development, prototypes and CI — any use that is not production.
- Production too, if the company shipping it earns under $250,000 a year.
Nothing is held back in that case. There is no reduced feature set, no watermark and no page limit — a viewer you cannot evaluate on your real documents is a viewer you cannot buy. See pricing for the rest.
Installing a key
import { setLicenseKey } from '@apertura/core';
// Anywhere before the first viewer is created.
setLicenseKey('APRT1.eyJsaWNlbnNlZSI6...');The key is not a secret. It is served to every visitor along with the rest of your bundle, which means it is public by construction — so it contains nothing but the licensee name, the tier, an identifier and a date. Commit it, do not try to hide it.
How it is verified
Locally, against a public key compiled into the bundle. There is no network request in the library, which is what allows it to work inside an air-gapped network where nothing can reach a licence server — and it is also why there is nothing to switch off for privacy.
The check compares the build date of the release you are runningagainst the date in the key, rather than today's date. Three consequences follow, and all of them are deliberate:
- A licence never expires. What you paid for keeps working forever, because the build date of that release never changes.
- Moving the system clock does nothing, in either direction. The date being tested is inside the artefact, not in the environment.
- Renewal buys newer releases, not continued operation. You renew when you want a fix, not to keep production alive.
What happens without a key
One message in the console, once per page load. That is the entire enforcement mechanism.
Air-gapped installations
Nothing special is required. The library makes no requests, the key needs no activation, and there is no telemetry to block. If your security review asks what the component talks to, the answer is nothing, and the network tab is the proof.