High-Level SDKs
Domain-specific SDKs built on top of @nolag/js-sdk. Each SDK provides a purpose-built API for a specific use case, handling topics, presence, reconnection, and state management out of the box.
All high-level SDKs share the same architecture: a MainClass attaches to the injected socket and manages lobby presence and rooms, while a RoomClass handles topic subscriptions and domain-specific state. Your app owns the one core client and its connect() / disconnect(); each wrapper releases its handlers with detach(). Each SDK peer-depends on @nolag/js-sdk ^1.12.0.
Every SDK expects an app created from its blueprint, which seeds the rooms and the online lobby it uses. Create it with NoLagApi.apps.create({ blueprintId }) or in the portal (Apps, New App, pick the blueprint), then pass the returned slug, which carries a random suffix, as the wrapper's appName. Each SDK page shows this step.
Communication
Chat
@nolag/chatMulti-room chat with presence, typing indicators, streamed messages, and user mapping.
Notify
@nolag/notifyReal-time notifications with channels, read/unread tracking, and badge counts.
Signal
@nolag/signalWebRTC signalling: peer discovery, offer/answer exchange, and ICE candidate relay.
Voice
@nolag/voiceA live phone call as a room: stream its transcript and steer the agent mid-conversation.
Engagement
Data
Infrastructure
Collaboration
Architecture
Every high-level SDK follows the same invariant pattern:
| Layer | Role | Example |
|---|---|---|
| MainClass | Attaches to the injected NoLagSocket, manages lobby presence, room join/leave, and re-runs setup after each reconnect | NoLagChat, NoLagSignal |
| RoomClass | Wraps RoomContext, subscribes to domain topics, delegates to managers | ChatRoom, SignalRoom |
| Managers | Handle domain-specific state (stores, trackers, resolvers) | MessageStore, PeerManager |
Installation
Each SDK is published as a separate npm package:
All SDKs peer-depend on @nolag/js-sdk ^1.12.0, which must be installed alongside.