Skip to main content
Official React web client for Jaza. Use this in your browser app with your publishable key (jz_*_pk_*) and a client session from your backend (jaza.initgetSession / authEndpoint). Never put your secret key in the frontend. Server-side: @jazadev/nodeinit for the handshake, consume for debits. The SDK mints short-lived top-up JWTs from the client session.
Source and examples live on GitHub: packages/@jaza-react. The Next.js sample under example/ mirrors the full sign-in → init → top-up → consume path.

Install

Import styles once (root layout / entry):
Recommended for Base UI drawers on iOS Safari:
Peers: react ≥18, react-dom ≥18, @base-ui/react ≥1 (Drawer only — no Tailwind or shadcn required).

Framework notes

Provider setup

Host route:

Top-up drawer

Checkout uses a Base UI Drawer:
  • ≤767px — slides up from the bottom
  • Desktop — slides in from the right
Same offer → payment → processing flow as the React Native SDK.

Widgets and customization

Default UI works out of the box. Pass a children render prop (or ItemComponent on the ledger) to wrap your own components while reusing SDK state.

JazaBalance

JazaTopUpButton

JazaLedger

JazaActionButton

Gate only — your BFF must call jaza.consume. See Gating actions.

Sandbox → live

TEST and LIVE customer ids are isolated. Remint with createCustomer under live keys and overwrite your host DB. See Authentication.

Next steps