> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tell.rs/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Track events and logs from Node.js backends, browsers, and frontend frameworks.

The TypeScript SDK is a family of packages for sending events and structured logs to Tell. Every package is written in TypeScript with full type definitions — plain JavaScript works too.

## Which package do I need?

| I'm building...               | Install                                  | Guide                                          |
| ----------------------------- | ---------------------------------------- | ---------------------------------------------- |
| A Node.js backend or API      | `npm i @tell-rs/node`                    | [Node.js](/tracking/sdks/javascript/node)      |
| A browser app (vanilla TS/JS) | `npm i @tell-rs/browser`                 | [Browser](/tracking/sdks/javascript/browser)   |
| A React SPA                   | `npm i @tell-rs/react @tell-rs/browser`  | [React](/tracking/sdks/javascript/react)       |
| A Next.js app                 | `npm i @tell-rs/nextjs @tell-rs/browser` | [Next.js](/tracking/sdks/javascript/nextjs)    |
| A TanStack Router/Start app   | `npm i @tell-rs/react @tell-rs/browser`  | [TanStack](/tracking/sdks/javascript/tanstack) |
| A Vue app                     | `npm i @tell-rs/vue @tell-rs/browser`    | [Vue](/tracking/sdks/javascript/vue)           |

<CardGroup cols={3}>
  <Card title="Browser" icon="browser" href="/tracking/sdks/javascript/browser">
    Client SDK with sessions, device context, and privacy controls.
  </Card>

  <Card title="Node.js" icon="server" href="/tracking/sdks/javascript/node">
    Server SDK with batching, gzip, and zero dependencies.
  </Card>

  <Card title="React" icon="react" href="/tracking/sdks/javascript/react">
    Provider component and hooks for React apps.
  </Card>

  <Card title="Next.js" icon="brackets-curly" href="/tracking/sdks/javascript/nextjs">
    App Router component with auto page view tracking.
  </Card>

  <Card title="TanStack" icon="route" href="/tracking/sdks/javascript/tanstack">
    Page view tracking for TanStack Router and Start.
  </Card>

  <Card title="Vue" icon="vuejs" href="/tracking/sdks/javascript/vue">
    Plugin and composable for Vue apps.
  </Card>
</CardGroup>

## 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](/tracking/events-and-properties) — event types, when to use each, property patterns
* [Users & Identity](/tracking/users-and-identity) — device IDs, user IDs, the identity model
* [Sessions](/tracking/sessions) — session lifecycle, timeouts, automatically collected context
* [Logs](/tracking/logs) — severity levels, structured data, session correlation
* [Audit & Privacy](/running-tell/audit-privacy) — privacy model, PII redaction, GDPR/CCPA

## Validation rules

These apply to all packages:

| Field          | Rule                                                     |
| -------------- | -------------------------------------------------------- |
| API key        | 32-character hex string                                  |
| User ID        | Required string (cannot be `null`, `undefined`, or `""`) |
| Event name     | Required string, 1–256 characters                        |
| Log message    | Required string, 1–65,536 characters                     |
| Group ID       | Required string                                          |
| Revenue amount | Positive number                                          |
| Currency       | Required string                                          |
| Order ID       | Required string                                          |
