Understanding Radiant's Freemium model, the 'Localhost is Sacred' rule, and how to configure Enterprise Air-Gapped licensing.
Radiant utilizes a Freemium (Open-Core) licensing model. The core library is free for commercial use, offering full performance on all Community-tier chart types. Advanced chart types and watermark-free production rendering require a Pro or Enterprise license.
We believe that developers should be able to build, test, and prototype without arbitrary limitations or visual clutter. During local development (when served from localhost or 127.0.0.1), the Community tier is completely unrestricted and operates 100% silently with no watermarks.
When deployed to a production domain (any non-localhost hostname), Community charts will display a highly visible, un-CSS-able Canvas watermark ("Radiant Charts — Free Edition"). This watermark is mathematically entangled with the rendering pipeline to ensure compliance.
Upgrading to a Pro or Enterprise tier provides a standard license key. When you inject this key into the RadiantLicenseProvider, the library sends a SHA-256 digest of the key to your application's /api/validate-license endpoint. The server responds with a signed JWT whose RS256 signature is verified client-side against a hardcoded public key — the raw license key is never transmitted over the wire.
// _app.tsx or root layout
import { RadiantLicenseProvider } from 'radiant-charts';
export default function RootLayout({ children }) {
return (
<RadiantLicenseProvider licenseKey={process.env.NEXT_PUBLIC_RADIANT_LICENSE_KEY}>
{children}
</RadiantLicenseProvider>
);
}For defense, finance, and healthcare clients operating in strict Content Security Policy (CSP) or air-gapped environments, we offer Zero-Telemetry Cryptographic License Keys.
These Offline Keys are RS256 JWTs. When injected into the RadiantLicenseProvider, the library automatically detects the JWT format. It verifies the cryptographic signature entirely offline via the Web Crypto API, unlocking Pro and Enterprise features instantly without any outbound network requests.
// Simply provide the JWT as your license key
<RadiantLicenseProvider licenseKey={process.env.NEXT_PUBLIC_RADIANT_OFFLINE_KEY}>
{/* The library verifies the JWT signature locally */}
<App />
</RadiantLicenseProvider>