<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[] }>
Where ChallengeSolution = { nonce: string; hash: string }.
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; timeout?: boolean }>
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: 'initial' | 'verifying' | 'done' | 'error' }>
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
Two 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 toonReady. It is provided as an alias for backward compatibility if you were already usingonLoadin 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 instate-change events and in the return value of getState():
| State | Description |
|---|---|
initial | Widget has loaded, waiting for user click or auto-verify |
verifying | Solver is running (proof-of-work in progress) |
done | Challenge solved and verified successfully |
error | An error occurred during fetch, solve, or verify |