---
source_url: https://www.pubnub.com/docs/release-notes/2025/october
title: Documentation Release Notes - October 2025
updated_at: 2026-05-22T11:05:37.105Z
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# Documentation Release Notes - October 2025

October brought significant SDK modernization, comprehensive logging documentation, and powerful moderation features to help you build more robust real-time applications.

We released Go SDK 8.0 with modernized push notifications and pagination support, documented unified logging practices across all SDKs, and added client-side mute capabilities to Chat SDKs. We also completed our migration from deprecated Google Cloud Messaging (GCM) to Firebase Cloud Messaging (FCM) across documentation and SDKs.

The biggest update this month was **comprehensive logging documentation**. We created unified logging guidance that applies across all PubNub SDKs, plus detailed platform-specific implementation guides for JavaScript, Java, Kotlin, and Objective-C. This makes debugging, monitoring, and maintaining your applications significantly easier.

## General 🛠️

### Unified logging practices documentation

**Type**: New feature

We created comprehensive [logging documentation](https://www.pubnub.com/docs/general/setup/logging) that covers unified logging practices across all PubNub SDKs, giving you consistent, actionable information for debugging and monitoring your applications.

The new logging documentation covers:

* **Log levels** - Standard levels (TRACE, DEBUG, INFO, WARN, ERROR) with clear guidance on when to use each one
* **What gets logged** - Configuration at initialization, API call parameters, network requests and responses, subscription lifecycle events, and errors
* **Integration options** - How to connect PubNub SDK logs with popular logging frameworks and third-party services
* **Production best practices** - Performance considerations and security warnings about logging sensitive data
* **Platform-specific guides** - Links to implementation details for each SDK

Each log level captures increasingly detailed information:

| Log Level | When to use | What it captures |
| --- | --- | --- |
| `TRACE` | Deep troubleshooting for complex issues | All internal operations: serialization, encryption, and detailed execution flow. Generates high volume output. |
| `DEBUG` | Development and bug investigation | User inputs, API channel parameters, HTTP request and response details, and configuration values. |
| `INFO` | Monitor significant events | Important operational events: successful initialization and configuration changes. |
| `WARN` | Identify potential issues | Deprecated features, unusual conditions, and non-breaking validation warnings. |
| `ERROR` | Troubleshoot failures | Errors, exceptions with stack traces, and failed operations. |

:::warning Logging sensitive information
DEBUG and TRACE levels may log sensitive information including API keys, user identifiers, and message content. Use these levels only in development environments. Never enable DEBUG or TRACE logging in production with sensitive data.
:::

This unified approach ensures you get consistent logging behavior whether you're working with JavaScript, Swift, Java, Python, or any other PubNub SDK.

### GCM to FCM terminology migration complete

**Type**: Enhancement

We completed the migration from Google Cloud Messaging (GCM) terminology to Firebase Cloud Messaging (FCM) across all documentation and SDK references.

Google deprecated GCM in 2018 and removed it completely in 2019. This update ensures our documentation accurately reflects current push notification technologies and helps developers avoid deprecated services.

The changes affect:

* Mobile push notification setup guides
* SDK configuration examples for Android, Java, and Kotlin
* Chat SDK configuration documentation for Kotlin and Swift
* Code snippets and parameter descriptions

If you're still using `GCM` references in your code, update them to `FCM`. All PubNub SDKs now use `PNPushTypeFCM` (or equivalent) instead of the deprecated `PNPushTypeGCM`.

## SDKs 📦

### Go SDK 8.0 release and migration guide

**Type**: New feature

We released Go SDK version 8.0.0 with modernized push notification support, enhanced file messaging capabilities, and pagination for presence operations. This release removes deprecated features and fixes API inconsistencies.

The new [Go SDK 8.0.0 migration guide](https://www.pubnub.com/docs/sdks/go/migration-guides/go-v8-migration-guide) provides complete upgrade instructions and covers all breaking changes.

**Key changes in Go SDK 8.0:**

* **Push notification modernization** - Removed `PNPushTypeMPNS` (Microsoft Push Notification Service), deprecated `PNPushTypeGCM` in favor of `PNPushTypeFCM`, and deprecated `PNPushTypeAPNS` in favor of `PNPushTypeAPNS2`
* **HereNow pagination** - The `HereNow` method now limits occupants to 1,000 per request with pagination support using `Limit` and `Offset` parameters
* **File messaging fix** - `SendFile` now correctly defaults `ShouldStore` to `false` (previously always `true`) but remains configurable
* **Removed non-functional parameter** - The `Reverse` parameter in `Fetch` has been removed (it was supported but non-functional)
* **Message type flexibility** - `PNPublishMessage.Text` type changed from `string` to `interface{}` for better flexibility

**Using FCM (v8.0.0):**

```go
// Example_addChannelsToPushFCM demonstrates registering a device for FCM push notifications
func Example_addChannelsToPushFCM() {
	config := pubnub.NewConfigWithUserId(pubnub.UserId("demo-user"))
	config.SubscribeKey = "demo" // Replace with your subscribe key
	config.PublishKey = "demo"   // Replace with your publish key

	// snippet.hide
	config = setPubnubExampleConfigData(config)
	// snippet.show

	pn := pubnub.NewPubNub(config)

	// Add channels to push notifications for FCM (Firebase Cloud Messaging)
	_, status, err := pn.AddPushNotificationsOnChannels().
		Channels([]string{"notifications-channel", "alerts-channel"}). // Channels to enable for push
		DeviceIDForPush("device-fcm-token").                           // FCM device token
		PushType(pubnub.PNPushTypeFCM).                                // Use FCM push type
		Execute()

	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	if status.StatusCode == 200 {
		fmt.Println("FCM push notifications enabled for channels")
	}

	// Output:
	// FCM push notifications enabled for channels
}
```

**Using APNs2 (v8.0.0):**

```go
// Example_addChannelsToPushAPNS2 demonstrates registering a device for APNs2 push notifications
func Example_addChannelsToPushAPNS2() {
	config := pubnub.NewConfigWithUserId(pubnub.UserId("demo-user"))
	config.SubscribeKey = "demo" // Replace with your subscribe key
	config.PublishKey = "demo"   // Replace with your publish key

	// snippet.hide
	config = setPubnubExampleConfigData(config)
	// snippet.show

	pn := pubnub.NewPubNub(config)

	// Add channels to push notifications for APNs2 (Apple Push Notification service)
	_, status, err := pn.AddPushNotificationsOnChannels().
		Channels([]string{"notifications-channel", "alerts-channel"}).                       // Channels to enable for push
		DeviceIDForPush("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"). // APNs device token (64 hex chars)
		PushType(pubnub.PNPushTypeAPNS2).                                                    // Use APNs2 push type
		Topic("com.example.myapp").                                                          // APNs topic (bundle identifier)
		Environment(pubnub.PNPushEnvironmentDevelopment).                                    // APNs environment (development or production)
		Execute()

	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	if status.StatusCode == 200 {
		fmt.Println("APNs2 push notifications enabled for channels")
	}

	// Output:
	// APNs2 push notifications enabled for channels
}
```

The migration guide includes complete examples for push notifications, file messaging, presence operations, and App Context updates. Go SDK 7.x.x continues to work but receives only critical security fixes. We recommend migrating to 8.0.0 to access new features and improvements.

### Logging documentation for JavaScript, Java, Kotlin, and Objective-C SDKs

**Type**: Enhancement

We added comprehensive platform-specific logging documentation for four major SDKs, complementing the [general logging guidance](#unified-logging-practices-documentation).

**JavaScript SDK logging:**

The [JavaScript SDK logging guide](https://www.pubnub.com/docs/sdks/javascript/logging) covers browser and Node.js environments with detailed integration examples for popular logging frameworks including Winston, Bunyan, Pino, log4js, and browser console logging, plus advanced filtering and formatting techniques.

You can enable logging at initialization by setting `logVerbosity` to `true` in your configuration.

**Java and Kotlin SDK logging:**

The [Java SDK](https://www.pubnub.com/docs/sdks/java/logging) and [Kotlin SDK](https://www.pubnub.com/docs/sdks/kotlin/logging) logging guides explain how to integrate with SLF4J (Simple Logging Facade for Java) and popular logging frameworks including Logback, Log4j2, and java.util.logging. Configure logging at SDK initialization by setting `logVerbosity` to control the detail level.

**Objective-C SDK logging:**

The [Objective-C SDK logging guide](https://www.pubnub.com/docs/sdks/objective-c/logging) covers integration with CocoaLumberjack and Unified Logging System (os_log), plus custom logger implementation. Enable logging in your configuration by setting the `logLevel` property.

All four SDK logging guides include:

* How to enable and configure log levels
* Integration with popular logging frameworks
* Performance considerations
* Security best practices for production environments
* Custom logger implementation examples

### HereNow improvements in Dart and C# SDKs

**Type**: Enhancement

We updated the [Dart SDK](https://www.pubnub.com/docs/sdks/dart/api-reference/presence) and [C# SDK](https://www.pubnub.com/docs/sdks/c-sharp/api-reference/presence) presence documentation to reflect improvements in the `HereNow` method.

Both SDKs now include clearer parameter descriptions, improved examples, and better handling of occupancy information. The Dart SDK also added a complete code snippet example in the subscribe documentation showing how to handle subscription lifecycle events.

These updates make it easier to track channel occupancy and user presence in your real-time applications.

### PHP SDK dynamic code snippets

**Type**: Enhancement

We added missing dynamic code snippets to the [PHP SDK documentation](https://www.pubnub.com/docs/sdks/php), continuing our effort to source examples directly from SDK repositories.

These repository-sourced snippets stay synchronized with SDK changes, ensuring you always see tested, up-to-date examples. This improves reliability and reduces documentation drift as the SDK evolves.

### Client-side mute in Swift Chat SDK

**Type**: New feature

We documented client-side mute capabilities in the [Swift Chat SDK](https://www.pubnub.com/docs/chat/swift-chat-sdk/build/features/users/moderation-user), giving you more control over user moderation in chat applications.

Client-side mute lets users hide content from specific users or channels on their device without requiring server-side moderation. This improves user experience by letting individuals customize what content they see.

The new documentation covers:

* **User moderation methods** - `setRestriction()` to mute users, `getChannelRestrictions()` and `getUserRestrictions()` to retrieve current restrictions
* **Channel-level restrictions** - Users can mute other users on specific channels
* **User-level restrictions** - Users can mute other users globally across all channels
* **Restriction retrieval** - Check which users or channels are currently muted

The Swift Chat SDK now supports muting users on specific channels or globally across all channels, with methods to retrieve current restrictions. Client-side mute complements server-side moderation features, giving you flexible options for content moderation in your Swift chat applications.

### Client-side mute and restore in Unity Chat SDK

**Type**: New feature

We documented client-side mute and restore capabilities for both channels and users in the [Unity Chat SDK](https://www.pubnub.com/docs/chat/unity-chat-sdk), providing comprehensive moderation features for Unity-based chat applications.

**User moderation:**

The [user moderation documentation](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/moderation-user) covers how users can mute other users or channels on their device:

```csharp
await chat.SetRestriction(
    userId: "support_agent_15",
    channelId: "support",
    restriction: new Restriction()
    {
        Ban = false,
        Mute = true,
        Reason = string.Empty
    }
);
```

**Channel and user restore:**

We also documented [channel restore](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/channels/restore) and [user restore](https://www.pubnub.com/docs/chat/unity-chat-sdk/build/features/users/restore) methods, allowing you to recover soft-deleted chat entities. Both `Channel` and `User` entities now include a `Restore()` method that recovers previously deleted instances.

These features give Unity developers complete control over content moderation and entity lifecycle management in their chat applications.

## Illuminate 💡

### Export chart data to CSV

**Type**: New feature

You can now download chart data from Illuminate dashboards in CSV format using the export button in the upper-right corner of each chart.

![Export chart data button](https://www.pubnub.com/assets/images/export-b20c839fd5672d3afc0c73aa1fdca073.png)

This feature lets you:

* Export metric data for offline analysis
* Create custom reports in spreadsheet applications
* Share data with stakeholders who don't have Admin Portal access
* Archive historical data for compliance or record-keeping

The exported CSV includes all data points visible in the current chart view, respecting your selected time range and filters. You can use this data with external business intelligence tools, create custom visualizations, or perform statistical analysis.

For more information, refer to the [Dashboards documentation](https://www.pubnub.com/docs/illuminate/dashboards/basics#export-chart-data).

## Other 🌟

### Markdown button labels for accessibility

**Type**: Enhancement

We added descriptive labels to the Markdown copy and open buttons that appear at the top of each documentation page, improving accessibility for screen readers and assistive technologies.

These buttons let you access the machine-readable Markdown version of any docs page, which is useful for AI tools, automation scripts, and content processing workflows. The improved labels make it clearer what each button does for all users.

### Functions documentation improvements

**Type**: Enhancement

We fixed missing Function URLs and resolved Spectral validation issues in the [Functions documentation](https://www.pubnub.com/docs/serverless/functions/overview), ensuring all links work correctly and code examples validate properly.

These improvements make the Functions documentation more reliable and easier to navigate, helping you build serverless logic for your PubNub applications.