Documentation Release Notes - January 2026
January kicked off the year with a focus on developer experience improvements and continued modernization of our SDK documentation.
The biggest addition this month was a comprehensive JavaScript environment setup guide covering Node.js versions, package managers (npm, yarn, pnpm, bun), TypeScript configuration, and modern build tools. We also added Bun support to the JavaScript Chat SDK and improved installation instructions across all Chat SDKs.
On the SDK side, we continued the HereNow pagination work from November 2025, adding limit and offset parameters to Swift, JavaScript, and Kotlin Chat SDKs. We also completed the migration of Swift Chat SDK code snippets to use repository-sourced examples.
General 🛠️
Troubleshooting improvements
Type: Enhancement
We improved the troubleshooting documentation and JavaScript SDK status events based on user feedback.
The troubleshooting page now includes:
- Clear HTTP status code tables for success and error codes
- Detailed guidance on handling concurrent updates (HTTP 412) with ETag
- Links to SDK-specific troubleshooting and status event references
Legacy provisioning API deprecation
Type: Enhancement
We updated the API limits documentation to clarify keyset limits for different account tiers and added deprecation notices for the legacy provisioning API.
| Account Tier | Keyset Limit |
|---|---|
| Free | 3 keysets (hard limit) |
| Starter | Unlimited |
| Pro | Unlimited |
For programmatic keyset management, use the Admin API instead of the deprecated provisioning endpoints.
SDKs 📦
JavaScript environment setup
Type: New feature
We added a comprehensive JavaScript environment setup guide covering everything you need to configure a modern JavaScript environment for PubNub development.
The guide covers:
- Node.js versions - PubNub's JavaScript SDK requires Node.js 20 or later for server-side applications
- Package managers - Installation instructions for npm, yarn, pnpm, and bun
- TypeScript configuration - Recommended
tsconfig.jsonsettings for PubNub projects - Build tools - Setup guides for Vite, Next.js, Remix, and Angular
- ES Modules vs CommonJS - Guidance on import styles and Node.js ESM support
- React Native - Setup for both Expo and React Native CLI
Package manager comparison:
| Feature | npm | yarn | pnpm | bun |
|---|---|---|---|---|
| Bundled with Node.js | Yes | No | No | No |
| Install speed | Moderate | Fast | Very fast | Very fast |
| Disk space efficiency | Moderate | Moderate | Very efficient | Efficient |
| Workspaces support | Yes | Yes | Yes | Yes |
TypeScript setup example:
1import PubNub from 'pubnub';
2
3const pubnub = new PubNub({
4 publishKey: 'your-publish-key',
5 subscribeKey: 'your-subscribe-key',
6 userId: 'your-user-id'
7});
Bun support in Chat SDK
Type: New feature
We added Bun package manager installation instructions to the JavaScript Chat SDK documentation.
You can now install the JavaScript Chat SDK using Bun:
bun add @pubnub/chat
The JavaScript Chat SDK now supports all major package managers:
- npm
- yarn
- pnpm
- bun
npm install @pubnub/chat
yarn add @pubnub/chat
pnpm add @pubnub/chat
bun add @pubnub/chat
Chat SDK installation updates
Type: Enhancement
We updated installation instructions across all Chat SDK documentation with clearer npm and yarn guidance:
Each SDK landing page now includes consistent, easy-to-follow installation steps with all supported package managers.
HereNow pagination in Chat SDKs
Type: Enhancement
Continuing the HereNow pagination work from November 2025, we added limit and offset parameters to presence features in the Swift, JavaScript, and Kotlin Chat SDKs.
These parameters help you efficiently retrieve presence information for high-occupancy channels:
| Parameter | Description |
|---|---|
limitDefault: 100 | Maximum number of occupants to return per channel. |
offsetDefault: 0 | Zero-based starting index for pagination. |
The whoIsPresent() method now supports pagination parameters:
1// Get a list of users present on a channel with pagination
2const result = await channel.whoIsPresent({
3 limit: 50,
4 offset: 0
5})
6
7console.log(`Users present: ${result.occupants.join(", ")}`)
We also expanded the threads documentation in JavaScript and Kotlin Chat SDKs to include additional methods for thread management.
Kotlin and Java connection pool config
Type: Enhancement
We documented connection pool configuration options in the Kotlin SDK and Java SDK API references.
These options help you fine-tune network performance for high-throughput applications.
Swift Chat SDK code snippets
Type: Enhancement
Following the Swift Chat SDK work from December 2025, we completed the migration of Swift Chat SDK documentation to use the EmbeddedCode component.
This update affects 42 documentation files across the Swift Chat SDK, including:
All code snippets are now pulled directly from the Swift Chat SDK GitHub repository, ensuring examples are always tested and up-to-date with the latest SDK version.
Illuminate 💡
Query Builder improvements
Type: Enhancement
Following the Query Builder introduction in December 2025, we enhanced the Query Builder documentation with predefined decisions information.
The updated documentation now includes visual examples for all four predefined query types:
| Predefined Query | Purpose |
|---|---|
| Top N | Reward the top 10 users who are most engaged by message count |
| Bottom N | Incentivize users who are least engaged |
| Cross-posting spam | Detect users sending duplicate messages across multiple channels |
| Chat flooding spam | Detect users posting excessive or repetitive messages in a single channel |
Each predefined query now shows the corresponding predefined decision template:

The documentation also includes new screenshots showing how to create decisions from query data fields.
Functions ⚙️
Export logs in Functions overview
Type: Enhancement
We added the export logs documentation to the Functions overview page. This information was previously only available in the Admin Portal Functions page and is now easier to discover when reading the serverless Functions documentation.
The documentation explains how to retain Function logs long-term using Events & Actions via Webhook or S3.