Skip to main content
JazaActionButton answers one UX question: does this wallet have enough credits for featureCode? It never debits the wallet. Your host must call jaza.consume after a successful gate.
Attackers can bypass UI. Treat ActionButton as a convenience, not authorization. Always meter on the server.

Dual-SDK pattern

Mobile

Configure SEND_MESSAGE (code + credit cost) in the dashboard under Features. Costs are included in the jaza.init snapshot and refreshed on the client. Optional children render props let you keep your own button styling while reusing the gate.

Host consume

Handle insufficient credits on the server even if the UI already gated — the balance can change between tap and request. See Consume credits. When consume fails for insufficient credits, Jaza can also notify the mobile session over the client realtime channel so the SDK can open the paywall. You still return an error from your BFF.

What not to do

  • Do not call jaza.consume from the React Native app
  • Do not invent client-side “debit” endpoints that only trust the device
  • Do not use Fuel* or other unofficial component names — use JazaActionButton