Skip to Content
SDK Kit is in active development. APIs may change.
Getting Started

Getting Started

Build your first SDK with SDK Kit in minutes.

Installation

Install SDK Kit core and plugins:

npm install @lytics/sdk-kit @lytics/sdk-kit-plugins

TypeScript users: Type definitions are included automatically. No additional @types packages needed.

Building Your SDK

Create an SDK Instance

Start with a blank SDK:

import { SDK } from '@lytics/sdk-kit' const sdk = new SDK()

Compose with Plugins

Add the functionality your SDK needs by composing plugins:

import { storagePlugin, contextPlugin } from '@lytics/sdk-kit-plugins' sdk.use(storagePlugin) sdk.use(contextPlugin)

Plugin Order: Register plugins before calling init(). Plugins cannot be added after initialization.

Initialize with Configuration

Configure your SDK’s behavior:

await sdk.init({ storage: { namespace: 'mycompany', defaultBackend: 'localStorage' } })

Your SDK is Ready

Now you have a working SDK with the features you composed:

// Storage sdk.storage.set('user', { id: 123, name: 'John' }) const user = sdk.storage.get('user') // Context const context = sdk.context.get() console.log(context.page.url) console.log(context.device.type)

Essential Building Blocks

SDK Kit includes 6 essential plugins you can use to compose your SDK. Mix and match based on what your SDK needs.

Storage Plugin

Multi-backend storage with TTL, namespacing, and JSON serialization.

import { storagePlugin } from '@lytics/sdk-kit-plugins' sdk.use(storagePlugin) await sdk.init({ storage: { namespace: 'myapp', defaultBackend: 'localStorage' } }) sdk.storage.set('key', 'value', { ttl: 3600 }) const value = sdk.storage.get('key')

Backends: localStorage, sessionStorage, cookies, memory

Context Plugin

Automatic collection of page, device, screen, and environment context.

import { contextPlugin } from '@lytics/sdk-kit-plugins' sdk.use(contextPlugin) const context = sdk.context.get() // Access collected data console.log(context.page.url) console.log(context.device.type) console.log(context.screen.width)

Poll Plugin

Promise-based async polling for DOM elements, globals, or custom conditions.

import { pollPlugin } from '@lytics/sdk-kit-plugins' sdk.use(pollPlugin) // Wait for element await sdk.poll.element('#my-element') // Wait for global await sdk.poll.global('MyLibrary') // Custom condition await sdk.poll.waitFor(() => someCondition())

Queue Plugin

Event batching and queuing with automatic flushing, persistence, and retry support.

import { queuePlugin } from '@lytics/sdk-kit-plugins' sdk.use(queuePlugin) await sdk.init({ queue: { maxSize: 20, flushInterval: 5000, persist: true } }) sdk.queue.add({ event: 'pageview' }) sdk.queue.flush()

Transport Plugin

HTTP transport abstraction with automatic transport selection, retry logic, and hooks.

import { transportPlugin } from '@lytics/sdk-kit-plugins' sdk.use(transportPlugin) await sdk.transport.send({ url: 'https://api.example.com/events', method: 'POST', data: { event: 'pageview' } })

Transports: fetch, sendBeacon, XHR, pixel

State-based consent management with platform adapters.

import { consentPlugin } from '@lytics/sdk-kit-plugins' sdk.use(consentPlugin) await sdk.init({ consent: { platform: 'OneTrust', // or 'Cookiebot', 'Usercentrics' categories: ['C0001', 'C0002'] } }) const hasConsent = sdk.consent.hasConsent('analytics')

Next Steps

Ready to go deeper?

  • Core Concepts - Understand the architecture (functional, event-driven, plugin-based)
  • Plugin Guide - Build your own custom plugins
Last updated on