DEV Community

Cover image for Documentation Release Notes - January 2025
PubNub Developer Relations for PubNub

Posted on

Documentation Release Notes - January 2025

This article was originally published at https://www.pubnub.com/docs/release-notes/2025/january

We're kicking off the year with quite a few interesting documentation changes.

We've revamped the keyset configuration experience for easier access, introduced message drafts in gaming chat SDKs, and added event-based decisions in Illuminate.

Plus, we've got new features in the client-side mute list, message reactions in the PHP SDK, and more intuitive advanced presence settings in the BizOps Workspace.

Let's dive into the details!

General 🛠️

New keyset configuration experience

Type: Enhancement

This month, we completely revamped the keyset creation process on the Admin Portal.

Creating an app and a set of keysets is one of the initial steps if you want to start exploring PubNub. These keysets enable secure and controlled access to PubNub's real-time messaging capabilities, ensuring that only authorized users can publish or subscribe to channels in your app.

Until now, when you created keysets, you often didn't even know what configuration they had until you stumbled upon an obstacle in your app and could not use features like Presence or App Context. Only then did you explore the keyset's configuration and look for proper setup options.

Until now, keysets were created with a default configuration that turned off most options. We decided to expose keyset configuration more and let you make a deliberate decision about which configuration option to enable at the very initial step of keyset creation.

Keyset configuration

After creating a keyset, you can still return to the Admin Portal and change your mind about enabled features.

We hope this change will let you spend less time on configuration and makes it easier for you to get started quickly with PubNub.

Keyset number limit

Type: Adjustment

This month we also worked on updating our policy regarding keyset access to free accounts.

For optimization reasons, we decided to limit the number of keysets you can have at once on a free account to a maximum of 3.

If your account exceeds this limit, you must delete existing keysets to create new ones.

This change is effective as of February 3.

Whitelisting IPs

Type: Improvement

Following your feedback, we updated the docs to include information on how you can allow traffic to specific domains (and subdomains) associated with PubNub (e.g., *.pubnub.com, *.pndsn.com) if your firewall blocks them.

You can typically whitelist domains by configuring your firewall or network settings to allow traffic to and from those domain names.

However, suppose your firewall system or network configuration does not support domain-based rules and requires IP addresses instead. In that case, you can contact PubNub support to get the complete list of PubNub Network IP addresses for whitelisting.

This option is available only for customers on paid plans.

Logging

Type: Improvement

Following another round of feedback, we summarized information on how PubNub lets you monitor real-time activities and diagnose issues effectively in your apps by configuring logging for your apps.

Most PubNub SDKs provide configuration options to enable and control the level of logging output.

Read the Logging document for details.

Custom domains

Type: Improvement

There is a number of reasons for which you might want to have your own domain name for your PubNub-based apps, including unique branding, compliance and control, or improved traffic management.

PubNub lets paid customers set up custom application domain names to access PubNub’s real-time messaging infrastructure instead of the default PubNub endpoint ps.pndsn.com.

For details on the process, refer to this instruction.

SDKs 📦

Message drafts in gaming chat SDKs

Type: New feature

This month brought another round of support for message drafts in Chat SDKs by adding this functionality to our gaming SDKs: Unreal Chat SDK and Unity Chat SDK.

  • Unreal
  • Unity
// Assuming you have a valid UPubnubChannel* pointer named Channel

// Define a configuration for the message draft if needed (using default configuration here)
FPubnubMessageDraftConfig DraftConfig; // This might include settings like initial content or behaviors

// Create a message draft from the channel with the specified configuration
UPubnubMessageDraft* MyMessageDraft = Channel->CreateMessageDraft(DraftConfig);

// Now MyMessageDraft can be used to build and send messages
MyMessageDraft->InsertText(0, "Hello there! Please review and confirm.");
MyMessageDraft->Send();
Enter fullscreen mode Exit fullscreen mode
var messageDraft = channel.CreateMessageDraft();
Enter fullscreen mode Exit fullscreen mode

This way, we can proudly announce that we now support message drafts in all Chat SDKs. 🎉

Client-side mute

Type: New feature

We added the client-side mute list to the Chat object in the Kotlin and JavaScript Chat SDKs. This new feature lets users mute other users on all channels and, as a result, stop seeing all messages and events originating from the muted users.

The new feature also lets you unmute muted users and retrieve a list of all users you muted on a given channel.

You also get the new configuration option (syncMutedUsers parameter) to automatically synchronize the mute list across sessions and devices using a specific App Context User object.

  • Kotlin
  • JavaScript
import com.pubnub.chat.Chat
import com.pubnub.chat.config.ChatConfiguration

val chat = Chat.init(
    ChatConfiguration(
        publishKey = "demo",
        subscribeKey = "demo",
        userId = "myUniqueUserId"
    )
)

val userToMute = "user_1905"

chat.mutedUsersManager.muteUser(userToMute).await()

Enter fullscreen mode Exit fullscreen mode
import { Chat } from "@pubnub/chat"

const chat = Chat.init({
    publishKey: "demo",
    subscribeKey: "demo",
    userId: "myUniqueUserId"
})

let userToMute = "user_1905"

await chat.mutedUsersManager.muteUser(userToMute)
Enter fullscreen mode Exit fullscreen mode

Message reactions in PHP SDK

Type: New feature

Not to lag behind other SDKs, the PHP SDK finally supports the Message Reactions API, letting you add, remove, and get the list of reactions in a given channel.

$messageAction = new PNMessageAction([
    "type" => "reaction",
    "value" => "drooling_face",
    "messageTimetoken" => $messageTimetoken // the timetoken of the message you want to add the reaction to
]);

$result = $pubnub->addMessageAction()
    ->channel("pizza_talks")
    ->messageAction($messageAction)
    ->sync();
Enter fullscreen mode Exit fullscreen mode

Migration guide for JavaScript SDK

Type: Enhancement

Since some of our clients were having difficulty using our JavaScript SDK after migrating from v7 to v8, we decided to create a migration guide to list changes you need to perform in your app code for the SDK to work as expected.

These include removing the @types/pubnub package dependency, as the types are now included within the SDK, and updating your import statements for PubNub types to align with the new endpoint groupings in version 8.0.0, such as AppContext.GetMembershipsParameters, ensuring your code references are updated to reflect these structured namespaces.

Custom message type (follow-up)

Type: New feature

As a follow up, we added support for the custom message type parameter in the Ruby SDK in the following APIs: Publish, Subscribe, and Message Persistence.

pubnub.publish(
    channel: 'my_channel',
    message: { text: 'Hi!' },
    custom_message_type: 'text-message'
) do |envelope|
    puts envelope.status
end
Enter fullscreen mode Exit fullscreen mode

Membership type (follow-up)

Type: New feature

To follow up on last month's updates in a few SDKs, we added support for the membership type in the Ruby SDK to let you categorize memberships more easily.

Changelogs in Chat SDKs

Type: Enhancement

Addressing documentation debt, the JavaScript Chat SDK, Kotlin Chat SDK, and Swift Chat SDK now include changelogs so you can track in detail what a new SDK version adds, removes, or updates.

Utility methods in Kotlin Chat SDK

Type: Enhancement

Kotlin Chat SDK now has a document listing utility methods for converting PubNub timetokens to and from dates, UNIX timestamps, and Instant objects. This enables you to display or manipulate date and time information in a human-readable format or align it with other systems.

BizOps Workspace 🏢

Advanced presence settings

Type: Enhancement

This month, we got down to the Presence Management section in BizOps Workspace.

We changed the UI by exposing the more advanced presence settings, which let you decide whether to track Subscribe Heartbeats or Presence Heartbeats on a given channel or channel pattern.

Advanced presence settings

While Subscribe Heartbeats define how long the server considers the client alive for presence to ensure that the client does not lose its subscription to a channel due to inactivity, Presence Heartbeats specify how often the client will send heartbeat signals to the server, offering more granular control over client activity tracking than Subscribe Heartbeats.

While Presence Management lets you decide which of them you want to track (one of them is required for any presence rule to be enabled on a channel), you enable/configure both during your SDK initialization (through presenceTimeout and heartbeatInterval settings).

Illuminate 💡

Event-based Decisions

Type: New feature

Until now, you were only able to create Decisions in Illuminate based on aggregations (metrics), This means that a specified calculation, like max, average or sum of events, had to be reached to trigger an action in a Decision.

Event-based decisions

We now added an event trigger to actions, letting you trigger actions each time a given event is detected.

For example, a metric-based decision would activate dynamic pricing when the average number of orders is greater than 30, while in an event-based decision, coins can be given as soon as a participant joins an online show.

UI improvements in Decisions

Type: Enhancement

While working on event-based Decisions, we also tweaked the UI for Decisions, adding more clarification on why you must choose a Business Object to start with and let you more intuitively select publish and subscribe keys for an action (automated choice instead of manually pasting the values).

Conditions

Keyset selection

Top comments (0)