@findsignal/recorder
v0.2.0
Published
Signal's session recorder: replay, autocapture, web vitals, network timing and exceptions, masked by default and sent to Signal.
Maintainers
Readme
@findsignal/recorder
Signal's session recorder for your app. It records how people use it (page views, clicks, rage and dead clicks, errors, web vitals, network timing, the shape of what people type and the validation messages they see, a sample of the page's sizes and colours (never its text), and a replay of each session), masked by default, and sends it to Signal so Signal can find what's going wrong. (Signal was called Aura until 2026-11-02.) It is built on posthog-js, pinned to one exact version.
It records from page load, masked, and you are responsible for your visitors' consent.
If your app needs a yes first, use wait mode: init({ key, consent: 'pending' }), or data-consent="pending" on the script tag.
Then nothing is recorded or sent, not even a request, until you call optIn() from your consent banner.
A no (optOut()) is remembered and always wins, in both modes.
In wait mode the recorder marks the yes in the replay (signal_opt_in, with a kind and a time only), so Signal can tell which trackers ran before it.
When your consent tool passes on a yes the person gave on an earlier visit (Cookiebot and OneTrust do, on every page), call optIn({ earlier: true }) instead, so it isn't taken for a new one.
Easiest: run npx @findsignal/cli in your repo and it adds the recorder for you. By hand, with a bundler:
npm install @findsignal/recorderimport { init, optIn } from '@findsignal/recorder';
init({ key: 'arp_…' }); // your project's recorder key, from Settings in your dashboard: records from page load
// Or wait for consent: init({ key: 'arp_…', consent: 'pending' }), then optIn() when the person agrees.Without a bundler, add the script tag to your layout:
<script src="https://cdn.jsdelivr.net/npm/@findsignal/[email protected]/dist/signal-recorder.js" data-key="arp_…"></script>Every option, what is masked and kept, and how to send through your own domain: the recorder's docs.
MIT. posthog-js's own license (Apache-2.0 and MIT) is in THIRD-PARTY-NOTICES.md.
