@nozle-js/react has ready-made components for pricing pages, checkout, plan changes, billing settings, usage, credits and feature gates. Each component page lists every option, shows the component in all six themes, and explains how to feed it live data.
Where components get their data
The browser never holds a secret key. Customer data reaches the components through your backend:
createBillingHandler, your merchant routes, or the customer-scoped portal session. See Installation and Provider and hooks.
Components
Pricing
Checkout
Plan change
Billing display
Usage
Credits
Access control
See Feature gates for combining gates with your backend’s state.
Loading, empty and error states
Components that show customer data takeisLoading (or loading), error and emptyMessage, and render a placeholder, a role="alert" message, or a role="status" message instead of their content. Pass the matching fields of the hook result, for example isLoading={query.isPending} and error={query.error}. Each component page lists its states.
Powered by Nozle
PricingTable, PlanComparison, CurrentPlan, Checkout, UpgradeModal and BillingPortal show “Powered by” and the Nozle logo below their content, linking to nozle.dev. Nozle decides this on the server: the publishable-key plan catalog returns meta.nozle_branding, and the billing portal reads it from its session. When one of these components renders another, for example a modal inside the portal, only the outer one shows the badge. Without a BillingProvider, only BillingPortal can show it.
The badge shows by default. If your Nozle plan removes the branding, turn off Show “Powered by Nozle” under Developers > Customize SDK > Global settings > Branding. The setting is saved for your organization (hideBranding: true) and applies to every component and the customer portal. On other plans the switch stays off-limits and the badge keeps showing. Organizations whose plan already removed the branding before the badge became the default, and that never saved a choice, keep it hidden; turn the switch back on to show it.
Invoice, credit note and payment receipt PDFs always show “Powered by Nozle”, whatever your plan and this setting.
If you build your own billing UI from the hooks, useNozleBranding() returns the same answer and <PoweredByNozle /> renders the badge.
Appearance
Every component with a look takesappearance, and inherits the one on BillingProvider. Each component page lists the element keys it exposes for class names and styles. See Appearance.