Skip to main content
The <ribaunt-widget> emits three DOM custom events — verify, error, and state-change — that you can listen to with addEventListener on the element. In React, use the typed callback props instead of addEventListener; the wrapper wires up and tears down listeners for you automatically.

verify

The verify event is dispatched when the widget successfully solves all challenges and, if you provided a verify-endpoint, the server confirms the solutions are valid. If no verify-endpoint is set, the event fires as soon as local proof-of-work is complete. Event type: CustomEvent<{ solutions: ChallengeSolution[]; phase: 'done'; progress: 100 }> Where ChallengeSolution = { nonce: string; hash: string }.
React equivalent: onVerify={(detail) => ...}

error

The error event is dispatched when the widget encounters a failure at any stage — fetching tokens from your challenge endpoint, running the proof-of-work solver, or receiving a non-OK response from your verify endpoint. Event type: CustomEvent<{ error: string; code: WidgetErrorCode; timeout: boolean; phase: 'error' }> The code field is a stable, machine-readable identifier you can branch on:
React equivalent: onError={(detail) => ...}
The timeout field is only present in the event detail when solve-timeout is configured and the solving duration exceeds that limit. When present it is always true.

state-change

The state-change event is dispatched every time the widget transitions between internal states. You can use this to mirror the widget’s visual state in your own UI — for example, disabling a submit button while verification is in progress. Event type: CustomEvent<{ state: WidgetState; phase: WidgetState; progress: number }>
React equivalent: onStateChange={(detail) => ...}

React callback props

When you use the React wrapper, you can pass all callbacks directly as props. The wrapper maintains stable event listener references across re-renders so your callbacks always receive the latest closure values:

React-only events

Three additional callbacks are available in the React wrapper that have no corresponding DOM custom event on the web component:
  • onReady — fires once after the widget mounts, with the initial widget state in the detail payload. Use this to know when the widget is ready for interaction.
  • onLoad — functionally identical to onReady. It is provided as an alias for backward compatibility if you were already using onLoad in an earlier version.
  • onEvent — a catch-all handler that fires for every event type ('verify', 'error', 'state-change', and 'ready'), along with the event’s detail object. Use this if you want a single place to handle or log all widget events.

Widget states

The widget moves through a defined set of states during its lifecycle. You will encounter these state strings in state-change events and in the return value of getState():