Skip to content

Modules overview

The Checktiv Web SDK (@checktiv/sdk-web) publishes one package with several entry points. The two-line client surface (Checktiv.init(...) then mountProvisioned(...)) covers most integrations. The other subpaths let you register the managed modules, use the React wrapper, or - for teams building a fully custom capture renderer - reach the advanced host-side capture core.

This page is the map of that public surface. Each subpath links to its own guide.

Subpath What it is
. (root) The substrate: Checktiv.init(opts) returns a ChecktivClient with mountProvisioned(...) and mount(...). Also exports the named mountButton widget. Ships no visual module on its own.
./idv The managed IDV module (camera capture, document scan, liveness). Import it so mount('idv') / mountProvisioned can render it. See Quickstart.
./fraud The consent-gated fraud-signal module. Import it to register it; it stays a no-op until the applicant grants consent. See Fraud consent.
./custom-form The managed custom-form module (author-defined fields on a custom_form step). See Custom forms.
./custom-form/style.css The stylesheet the custom-form module needs. It renders real form controls into your page, so this stylesheet must be present. See Custom forms.
./react The React wrapper: ChecktivProvider, ChecktivIdv, and useChecktiv(). See React.
./capture Advanced. The Tier-1 headless capture core: createCaptureController. No UI - you render everything. See Advanced capture.
./capture-ui Advanced. The Tier-2 batteries-included renderer: mount(). See Advanced capture.
./cross-device The standalone cross-device handoff panel: mountCrossDevice. See Cross-device handoff.
./idv/cross-device Cross-device overlay orchestration for a custom IDV renderer: openCrossDeviceOverlay, preloadCrossDeviceChunk. See Cross-device handoff.
./agents A machine-readable AI-agent steering manifest (manifest.json). See AI agent steering.

The managed modules (./idv, ./fraud, ./custom-form) register themselves when you import them. That import is a side effect: importing @checktiv/sdk-web/idv runs a one-time registration so the substrate can resolve 'idv' by name when you call mount('idv') or mountProvisioned.

import { init } from '@checktiv/sdk-web';
import '@checktiv/sdk-web/idv'; // registers the IDV module (side-effect import)
const client = init({ publishableKey: 'ah_pk_us_test_...', getSessionToken });
client.mountProvisioned({ target: document.getElementById('idv-container') });

If a session declares a module you did not import, the mount fails loudly with sdk_load_failed and an actionable message (“import @checktiv/sdk-web/<module> in your app”) rather than a silent blank mount. Import every module your sessions can declare. Because the imports are side effects, keep them: do not let a bundler tree-shake them away.

The root . entry and the ./react entry deliberately do not bundle the managed modules, so a bundler keeps them small. Add the module import yourself.

npm - install the package and import the subpaths you use:

Terminal window
npm install @checktiv/sdk-web
import { init } from '@checktiv/sdk-web';
import '@checktiv/sdk-web/idv';

Each subpath is independently tree-shakeable, so a ./idv-only integration never pulls in ./fraud.

CDN - one script tag loads everything:

<script src="https://sdk.us.checktiv.com/v1/sdk.js" crossorigin="anonymous"></script>

The CDN bundle registers ./idv, ./fraud, and ./custom-form eagerly, so there is no per-module import to add. After the tag loads, the SDK is available as window.Checktiv. For production, pin a version and add a Subresource Integrity hash. See Versioning and the release notes.

A test-mode publishable key with the synthetic driver runs the full checktiv.idv.* event flow locally with no camera and no capture license. See the local-development section of the Quickstart.