Recommended: JavaScript SDK with React Hooks
For new React apps, we recommend the JavaScript SDK with React Hooks (
@dynamic-labs-sdk/react-hooks) instead of the legacy React SDK documented here. The JS SDK comes with many benefits such as a much smaller bundle size and other optimizations. Use the React quickstart (JavaScript SDK) to get started.What the user sees
When verification returns a screening block, the SDK disconnects the wallet and renders its access-denied view inside the widget:- Title: “This wallet can’t access this site.”
- Body: “Access was declined based on this site’s security policy.”
- Action: “Try another method”, which returns the user to the wallet list.
Keep any copy you write here neutral and final. The user usually cannot change a screening result, so offer a different wallet rather than a retry that will fail again.
Changing the copy
Override thedyn_no_access.screening keys through the locale prop on DynamicContextProvider:
This key was previously named
dyn_no_access.chainalysis. Overrides written
against the old name still apply, so nothing breaks if you already ship one,
but new code should use screening — the old name will be removed in a future
major version.Reacting in your own code
To act on a block outside the widget (clear app state, log it, or route the user elsewhere), check the reason passed to onAuthFailure for aChainalysisError:
ChainalysisError is the error class for every screening block, whichever provider produced the match. Its walletPublicKey holds the blocked address.
Server-side, subscribe to the wallet.sanctions.blocked webhook event to record blocks. The webhook fires whether or not the user is still on the page.
See also
- Address Screening — what screening checks, and bringing your own vendor key
- Access Lists — blocking or allowing specific addresses yourself