DEV Community

PubNub Developer Relations for PubNub

Posted on

Documentation Release Notes - February 2025

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

As the year is getting underway, we've been busy not only enhancing the existing docs based on your feedback but also adding a bunch of new updates following new product releases.

Here’s a sneak peek:

  • Admin Portal – We've introduced secret management and launched a public demo, so you can explore PubNub features without needing an account.
  • SDKs – Added membership type support for Python and PHP SDKs along with eTag support across more SDKs for greater data consistency.
  • Events & Actions – You can now use vault secrets in webhook headers, boosting your app's security.
  • BizOps Workspace – The UI got a facelift with clearly marked read-only internal objects for better navigation.
  • Illuminate – We’ve expanded your ability to view action history, removing previous limits for easier tracking.
  • Miscellaneous – We addressed several feedback tickets, enriching our docs with new examples and clarifications.

Scroll down to dive into all the updates and see what’s new and improved.

General 🛠️

Secret management in the Admin Portal

Type: New feature

The Apps & Keysets section in the Admin Portal now has a new Manage secrets section that allows users with the Keyset Admin, Account Owner, and Account Admin roles to create, update, and delete secrets.

You can use these secrets in Functions to authenticate and secure connection with third-party services.

Secret management

Public Admin Portal demo

Type: New feature

Want to browse through the Admin Portal without creating an account? Want to see PubNub features instead of just reading about them in the docs?

We released Public Demo that gives you insights into sample objects for all PubNub features available in the Admin Portal (apps, keysets, Functions, Business Objects, Users, Dashboards, and many more).

Public demo

All PubNub objects are read only and demonstrate a Transport & Logistics use case.

SDKs 📦

Membership type (follow-up)

Type: New feature

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

  • Python
  • PHP
  • Dart
pubnub.get_memberships() \
    .include(MembershipIncludes(custom=True, channel=True, channel_custom=True)) \
    .uuid("Some UUID").sync()
Enter fullscreen mode Exit fullscreen mode
$includes = new PNMembershipIncludes();
$includes->channel()->channelId()->channelCustom()->channelType()->channelStatus()->custom()->status()->type();

$addMembership = $this->pubnub->setMemberships()
    ->userId($this->user)
    ->memberships([
        new PNChannelMembership($this->channel1, ['BestDish' => 'Pizza'], 'Admin', 'Active'),
        new PNChannelMembership($this->channel2, ['BestDish' => 'Lasagna'], 'Guest', 'Away'),
    ])
    ->include($includes)
    ->sync();
Enter fullscreen mode Exit fullscreen mode
var channelMetadataInput = ChannelMetadataInput(
    name: 'Channel Name',
    description: 'Description',
    custom: {'BestDish': 'Pizza'},
    status: 'Active',
    type: 'Public'
);

result = await pubnub.objects.setChannelMetadata(
  'channelId',
  channelMetadataInput,
  includeStatus: true,
  includeType: true
);
Enter fullscreen mode Exit fullscreen mode

Etag support in multiple SDKs

Type: New feature

Several Core SDKs (C-Sharp, Java, JavaScript, Kotlin, Swift, Unity, Python, and PHP) now support the entity tag in App Context API that you can use to ensure updates only happen if the object hasn't been modified since it was read.

Use the eTag you received from an applicable get metadata method to check against the server entity tag. If the eTags don't match, an HTTP 412 error is thrown.

Handle custom metadata

Type: Enhancement

We updated App Context API docs for all Core SDKs with a note that the custom parameter does not support partial updates of user or channel custom metadata.

Any new custom metadata will completely overwrite existing data on PubNub servers. To handle such updates, follow these steps:

  1. Retrieve the existing metadata using the relevant get object method (like get_channel_metadata()).
  2. Store the current custom data locally.
  3. Add any new fields to this stored data.
  4. Use the relevant set method (like set_channel_metadata()) to overwrite the existing custom metadata with the updated custom object.

This process keeps your existing data intact while adding new information.

Each SDK now also has an example of how to handle "partial updates" by pulling the current state, altering it, and pushing back to the server (check example for JavaScript SDK).

Events & Actions ⚡

Secrets in webhook headers

Type: Enhancement

We now let you use your vault secrets (same as used in Functions) to pass as custom headers in the Webhook action types.

Webhook headers

You can assign one or multiple secret keys from your keysets to these custom headers if your webhook requires authorization or you want to enhance your app's security.

Add secrets

BizOps Workspace 🏢

Read-only objects

Type: Enhancement

Following feedback, we improved UI for User Management and Channel Management sections in BizOps Workspace by clearly marking and restricting internal objects, such as users or channels with the PUBNUB_INTERNAL or REVIEWED prefixes.

Such objects are now marked with an "eye" icon and can be viewed only.

Read-only objects

Illuminate 💡

Increased action history

Type: Enhancement

Until recently, Illuminate let you see only 50 recent actions that run for Decisions and see why some of them failed.

Action history button

We removed this fixed limit and you can now retrieve the remaining actions from history through the Load more button.

Action history

Other 🌟

A grab bag of changes

Type: Improvement

Fortunately, we had some time this month to focus on several feedback tickets and improve the existing docs with new examples, clarification, and more.

Here's the list of changes:

  • Documented the missing removeAllPushChannelsForDevice method in PHP SDK (link)
  • Improved info on signals vs messages (link)
  • Clarified info across SDKs on when objects events are triggered (link)
  • Clarified send file and publish file methods across SDKs (link)
  • Showed the use of the sort field in App Context API for the Swift SDK (link)
  • Clarified how the same User ID behaves on multiple devices (link)
  • Updated info on presence deltas & interval webhooks (link)
  • Added examples of different types of channels (link)
  • Updated info on the pn_ttl flag for APNS push notifications (link)
  • Documented how to add metadata to push notifications (APNS & FCM)
  • Revisited auth key info in Access Manager (link)

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more