One provider. TypeScript. Done.
Monaiq's TypeScript client gives you license enforcement with full type definitions. Install from npm, wrap your app in a provider, and gate features with a single assertion.
npm install @sidub-inc/licensing-clientWhy licensing React apps is hard
Most licensing tools were built for server-side languages. They assume you have a backend, a database, and a secure runtime. React developers get an afterthought — a REST API with no React bindings and no type safety.
Client-side verification matters. Your React app needs to check entitlements without round-tripping to your server on every render. It needs to handle loading states, cache authorization data, and ride out a dropped connection. That's not a wrapper around a REST call — that's a purpose-built SDK.
Monaiq's client is TypeScript-first, ships a React provider, and handles cryptographic signature validation in the browser. It fits the way React developers already build — a context provider at the top, and plain calls wherever a component needs an answer.
Built for the React ecosystem
A real client behind a React provider, not a wrapper around a REST call.
One Shared Client
useLicensingContext hands any component the shared LicensingClient — getAuthorization, assertLicense, performOperation. Repeated calls are served from the client's cache.
Context Provider
LicensingProvider wraps your app once. Every component below gets automatic access to the licensing client — no prop drilling, no manual instantiation.
Full Type Safety
TypeScript-first API with full type definitions. Assertions, features, and authorization objects are all strongly typed — your editor knows what's valid.
Cryptographic Verification
Built-in signature validation using Web Crypto API. License authorizations are cryptographically verified in the browser — matching the .NET SDK's security model.
Rides Out Outages
Assertions evaluate locally against the cached, verified authorization. If the service is briefly unreachable, the last good authorization keeps being served for a grace window.
Framework Agnostic
Plain React 16.8 or later, so it fits client components in any React setup — and the same package runs in Node without React, alongside PurchaseClient for in-app purchase.
From npm install to feature gating in minutes
Wrap your app in a provider. Gate features with an assertion. Ship it.
import { LicensingProvider } from '@sidub-inc/licensing-client';
// 1. Wrap your app with the provider
<LicensingProvider config={{
licenseServiceUri: 'https://monaiq-apim-a7ut4jehosnbm.azure-api.net/licensing',
encodedCredential: 'SIDUB_LIC_...'
}}>
<App />
</LicensingProvider>import { useEffect, useState } from 'react';
import {
useLicensingContext,
ServiceAccessAssertion,
ServiceAccessLevel
} from '@sidub-inc/licensing-client';
// 2. Check authorization in any component
function PremiumFeature() {
const client = useLicensingContext();
const [hasAccess, setHasAccess] = useState(false);
useEffect(() => {
client.getAuthorization().then((authorization) =>
setHasAccess(client.assertLicense(
ServiceAccessAssertion.create('premium-feature', ServiceAccessLevel.Allowed),
authorization)));
}, [client]);
return hasAccess ? <PremiumDashboard /> : <UpgradePrompt />;
}Works with your React stack
Same package, same client, every React setup.