Documentation Release Notes - September 2025

This September, we focused on making our documentation friendlier to humans and machines while significantly improving filtering documentation and expanding SDK capabilities.

We wanted to get on the good side of AI 🤖 when it inevitably takes over the world next week or so.

The biggest theme this month was content optimization across every section of our docs. We rewrote the majority of the docs to make it easier to understand and use so our docs should now work better with large language models and AI-powered search, ensuring you get accurate answers faster.

Beyond content improvements, we completely rewrote our Subscribe Filters documentation, split and clarified App Context filtering guidance, added comprehensive Unreal SDK event listeners, documented Illuminate REST API, and improved visibility for migration guides. We also clarified Auto Moderation Function conflicts and enhanced SDK documentation for Java, Kotlin, Go, Ruby, and JavaScript Chat SDK.

General 🛠️

App Context filtering documentation improvements

Type: Enhancement

We reorganized and significantly improved our App Context filtering documentation to make filtering users, channels, and memberships easier to understand and implement.

The updated documentation now clearly separates filtering contexts:

  • User data fields - Filter by id, name, email, status, type, and other user properties
  • Channel data fields - Filter by id, name, description, status, type, and timestamps
  • Membership filtering - Different rules for memberships vs. members endpoints, with clear guidance on which filter fields work with each API group

We added important performance guidance for large-scale applications, recommending exact ID equality filters (id == "channel-123") instead of pattern matching with LIKE for better database index usage.

The documentation now includes comprehensive examples for all filter expression components, from basic conditions to complex relational operators, with code samples across JavaScript, Swift, Kotlin, and Python SDKs.

Subscribe filters documentation rewrite

Type: Enhancement

We realized we didn't do a great job of explaining how to use our powerful subscribe filters, so we completely rewrote the Subscribe Filters documentation to provide comprehensive guidance on server-side message filtering capabilities.

The new documentation covers:

  • Filter expression fundamentals - Clear explanations of how to filter messages based on payload (data.*) and metadata (meta.*)
  • Advanced operations - Pattern matching with LIKE and CONTAINS, arithmetic operations (modulo, comparisons), array/object access, and complex compound expressions
  • Real-world use cases - Personalization, multi-tenancy, event routing, and scalable sampling/analytics scenarios
  • Complete operator reference - All supported comparison, logical, arithmetic, and pattern operators with examples
  • Data type support - How to work with strings, numbers, booleans, arrays, and objects in filter expressions

The rewrite also clarifies common misconceptions, such as the fact that envelope fields (like publisher and channel) cannot be filtered directly but must be included in message metadata or payload for filtering.

This documentation now provides everything you need to implement sophisticated real-time message filtering in your applications.

Migration guides visibility

Type: Enhancement

We added a dedicated Migration Guides section to our documentation sidebar, making it easier to find guidance when upgrading SDK versions or migrating between different PubNub implementations.

Previously, migration guides were scattered across different documentation sections. Now you can find all migration resources in one place under General > Resources > Migration Guides.

SDKs 📦

Event listeners documentation in Unreal SDK

Type: Enhancement

We added comprehensive event listeners documentation to the Unreal SDK, bringing it in line with other Core SDKs.

The new documentation covers:

  • Multiple event type handlers - Add listeners for messages, signals, presence events, object events, and message actions
  • Lambda expression support - Use native callbacks with lambda expressions for cleaner code
  • Universal listener - The OnAnyEventReceived listener catches all event types in one place
  • Connection status listeners - Monitor subscription status changes at the PubNub client level
  • Listener management - How to add and remove specific event listeners

Code examples demonstrate both dynamic delegate binding and native callback approaches:

1// Add message listener
2Subscription->OnPubnubMessage.AddDynamic(this, &AMyActor::OnMessageReceived);
3
4// Add native callback with lambda
5Subscription->OnPubnubMessageNative.AddLambda([](const FPubnubMessageData& Message) {
6 UE_LOG(LogTemp, Log, TEXT("Message received: %s"), *Message.Message);
7});
8
9// Add universal listener (catches all event types)
10Subscription->FOnPubnubAnyMessageType.AddDynamic(this, &AMyActor::OnAnyEventReceived);

You can attach listeners to Subscription and SubscriptionSet instances, enabling flexible event handling for individual channels or groups of channels.

Logging documentation updates for Java and Kotlin SDKs

Type: Enhancement

We updated the logging documentation for Java and Kotlin SDKs to reflect recent changes in how these SDKs handle logging configuration.

The updates clarify:

  • How to enable and configure logging levels
  • Integration with popular Java logging frameworks
  • Best practices for production environments
  • Performance considerations when logging is enabled

This ensures developers have accurate guidance when debugging Java and Kotlin applications.

New disconnection status in Go SDK

Type: Enhancement

We added documentation for a new status category in the Go SDK status events: PNDisconnectedUnexpectedlyCategory.

This status fires when the SDK cannot reach PubNub servers due to network issues such as loss of internet connectivity, proxy configuration issues, and network disruptions.

Understanding this status helps you build more resilient Go applications that can detect and handle unexpected disconnections appropriately.

JavaScript Chat SDK configuration updates

Type: Enhancement

We updated the JavaScript Chat SDK documentation to reflect recent configuration changes, ensuring developers have accurate initialization examples and parameter descriptions.

These updates improve the onboarding experience for developers building chat applications with the JavaScript Chat SDK.

Ruby SDK history method improvements

Type: Enhancement

We fixed documentation for the Ruby SDK's Message Persistence API, clarifying parameter usage and response handling.

The updated documentation provides clearer guidance on fetching historical messages, making it easier to implement message persistence features in Ruby applications.

Functions ⚙️

Auto Moderation configuration and Function conflicts

Type: Enhancement

We documented how Auto Moderation handles configuration and Function conflicts when you attempt to deploy moderation on channels that already have Before Publish or Fire Functions running.

Auto Moderation now validates channels during configuration creation or editing, detecting two types of conflicts:

  • Internal conflicts - An active Auto Moderation configuration already runs on the selected channel
  • External conflicts - An active Before Publish Function already runs on the selected channel (outside Auto Moderation)

When conflicts occur, the UI shows clear banners and per-row badges with resolution instructions:

Create configuration conflict screenshot

For internal conflicts, you can save and activate the new configuration, which automatically stops the currently active one. For external conflicts, you must use the Generate code for Functions path to embed Auto Moderation into your existing Function.

This documentation ensures you understand how to handle situations where multiple Functions might conflict on the same channel.

Illuminate 💡

Illuminate REST API documentation

Type: New feature

We added comprehensive REST API documentation for PubNub Illuminate, providing programmatic access to create and manage your real-time analytics and decision-making infrastructure.

The new REST API documentation covers complete CRUD operations for:

  • Business Objects - Define which event fields to ingest from your data
  • Metrics - Create aggregations over time windows with dimensions for grouping
  • Decisions - Configure rules, conditions, and actions for metric-based or event-based triggers
  • Dashboards - Create visualizations with charts and decision overlays
  • Action History - Retrieve execution logs with filtering, sorting, and CSV/JSON export

Each endpoint includes:

  • Path and header parameters
  • Complete request/response examples
  • Field descriptions with data types
  • Sample cURL commands
  • Visual UI mappings showing how API fields correspond to Admin Portal screens
curl --request POST \
--url 'https://admin.pubnub.com/api/illuminate/v1/accounts/{accountId}/metrics' \
--header 'Content-Type: application/json' \
--header 'X-Session-Token: <token>' \
--data '{
"name": "Average Failure Count",
"businessObjectId": "19b9c407-6269-44a4-a5ec-d581dbbpntest",
"evaluationWindow": 60,
"function": "AVG",
"measureId": "b20214f9-0677-4e65-a60b-b12a132pntest"
}'

This REST API enables automation, infrastructure-as-code workflows, and integration with external systems for managing Illuminate resources programmatically.

BizOps Workspace 🏢

Standardized screenshots in Auto Moderation and Channel Monitor

Type: Enhancement

We standardized all screenshots across the Auto Moderation and Channel Monitor documentation to ensure visual consistency and accuracy.

Other 🌟

AI-optimized documentation structure

Type: Enhancement

September marked a comprehensive effort to simplify our entire documentation for humans and AI agents alike. We strived to achieve a Flesch reading ease score of ~40 for SDK documentation and ~50 or higher for other parts of the docs.

These improvements make our documentation simpler by reducing jargon and making it easier to understand.

The changes maintain full backward compatibility while making content more accessible to both humans and AI systems. You will notice visible differences in style when reading the docs, and you'll get better, more accurate results when searching or using AI tools.

PubNub MCP Server navigation improvements

Type: Enhancement

We improved navigation for the PubNub MCP Server documentation, making it easier to discover this AI integration tool.

The MCP Server enables AI coding assistants (like Cursor IDE, Claude Code, and Claude Desktop) to interact directly with PubNub's APIs and infrastructure, letting you build real-time applications using natural language descriptions.

The improved navigation ensures developers can quickly find setup instructions, sample prompts, and integration guidance for their preferred AI development environment.

Last updated on