Which package do I need?
Browser
Client SDK with sessions, device context, and privacy controls.
Node.js
Server SDK with batching, gzip, and zero dependencies.
React
Provider component and hooks for React apps.
Next.js
App Router component with auto page view tracking.
TanStack
Page view tracking for TanStack Router and Start.
Vue
Plugin and composable for Vue apps.
Architecture
There are two standalone SDKs for two different runtimes: Browser SDK (@tell-rs/browser) runs in the browser. It has access to window, document, localStorage, navigator, and sendBeacon. It automatically manages device IDs, sessions, page visibility, UTM capture, and client-side context (screen, OS, locale, timezone). Data is collected client-side — rich but user-modifiable.
Node.js SDK (@tell-rs/node) runs on the server. It uses HTTP + JSONL for transport, supports gzip, and has zero browser dependencies. Data is collected server-side — trustworthy and tamper-proof.
Framework packages (@tell-rs/react, @tell-rs/nextjs, @tell-rs/vue) are thin wrappers around the browser SDK. They connect Tell to framework lifecycle (mounting, unmounting, route changes) and provide idiomatic APIs (hooks, composables, providers). This is why they require @tell-rs/browser as a peer — the framework package handles integration, the browser SDK handles tracking.
Further reading
Before diving into an SDK guide, you may want to read the global tracking docs first:- Events & Properties — event types, when to use each, property patterns
- Users & Identity — device IDs, user IDs, the identity model
- Sessions — session lifecycle, timeouts, automatically collected context
- Logs — severity levels, structured data, session correlation
- Audit & Privacy — privacy model, PII redaction, GDPR/CCPA