SDK

One SDK. Everything else reads from it.

Install once. Every other surface reads from that one stream.

Read the SDK docs
  • Clado
  • Olive
  • Codebuff
  • Attensira
  • Assemble
  • Opennote
  • Stratify
  • Gatekeep

What it captures

One install, every surface fed.

Replay, issues, analytics, and the agents all read the same stream. Nothing here is a second integration you enable later.

Session replay

rrweb DOM chunks, batched and flushed on idle, posted to the ingestion endpoint rather than streamed continuously.

Autocaptured events

$pageview, $click, $form_submitted, $rageclick, $deadclick and more, without you instrumenting a single handler.

Errors and crashes

Unhandled exceptions and crashes with the breadcrumbs that preceded them, fingerprinted server-side into issues.

Console and network

Console warnings and errors plus failed requests, attached to the session's timeline.

Core Web Vitals and spans

Performance measured in real browsers on real connections, not in a synthetic lab run.

Presence

Heartbeats roughly every thirty seconds keep idle tabs in the live set, and unload ends the session cleanly.

Install

Two calls, and the platform is populated.

init creates a singleton and starts immediately — there is no separate start() to remember and no bootstrap request to wait on before recording begins.

Initialise the tracker
import { HumanBehaviorTracker } from "humanbehavior-js";

const tracker = HumanBehaviorTracker.init(
  process.env.NEXT_PUBLIC_HUMANBEHAVIOR_API_KEY!,
  {
    release: process.env.NEXT_PUBLIC_APP_VERSION,
    environment: "production",
  },
);
Decide what is redacted
HumanBehaviorTracker.init(apiKey, {
  redactionStrategy: {
    // Default. Every input value is masked in the browser.
    mode: "privacy-first",
    // Open only the fields you have decided are safe.
    unredactFields: ['input[name="email"]', "#public-search"],
  },
});

Getting it in

The wizard writes the integration.

  1. 01

    Run npx @humanbehavior/wizard

    It authorizes the project in your browser, detects your framework, and applies the install — or use --dry-run to see what it would change first.

  2. 02

    It knows your framework

    Next.js, Nuxt, Vue, Remix and React Router 7, SvelteKit, Angular, Astro, Gatsby, plain React, and vanilla HTML each get their correct provider placement.

  3. 03

    Upload source maps

    The upload-sourcemaps CLI ships with the wizard, so stack traces resolve to your files instead of minified bundle offsets.

Details

The parts worth knowing before you install.

Packages
humanbehavior-js is the browser package (UMD build available). humanbehavior-js/react adds the provider, hooks, and an error boundary. @humanbehavior/wizard is the installer and source-map CLI.
Identity is local
Session id and anonymous end-user id are generated in the browser from cookie and localStorage. Call identifyUser when you know who someone is.
Default ingestion host
https://ingest.humanbehavior.co when ingestionUrl is omitted. Override it for local stacks, custom hosts, or a reverse proxy on your own domain.
Redaction is a decision
privacy-first masks every input by default; visibility-first shows inputs and masks what you list. Neither masks text already rendered on the page — mark those elements yourself.

Keep going

The rest of the platform.

Everything here reads from the same recorded session — there is nothing to stitch together between surfaces.

Stop guessing what happened.

One SDK, one afternoon. We will walk your team through it on a call and leave you with the recording of your own product.