---
source_url: https://www.pubnub.com/docs/release-notes/2024/august
title: Documentation Release Notes - August 2024
updated_at: 2026-06-19T11:36:20.166Z
---

> 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 - August 2024

This month brings a bunch of new features and some updates to those released last month.

We've been busy improving our REST API to help prevent data clashes, rolling out new gaming SDKs for developers, and adding nifty tools for chat moderators in the BizOps Workspace.

Plus, we've expanded our Events & Actions with new event sources for better tracking of user and channel changes, and Illuminate now includes new data types that make it easier to calculate durations.

Read on for more details.

## General 🛠️

### Preventing concurrent object modifications (REST API)

**Type**: Improvement

We added the optional `If-Match` HTTP header to the App Context API to let you prevent concurrent modifications of the same User or Channel object.

You can add `If-Match` to the [Set user metadata](https://www.pubnub.com/docs/sdks/rest-api/set-user-metadata) and [Set channel metadata](https://www.pubnub.com/docs/sdks/rest-api/get-channel-metadata) requests and set it to the value of the `eTag` field from a previous GET request response. If this value doesn't match the User object's current `eTag` value while making the request, the call fails to succeed.

```curl
curl -L -X PATCH 'https://ps.pndsn.com/v2/objects/sub-c-5a16361b-9ade-4c3b-8795-bd278c62cc41/uuids/app-context-user-02' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'If-Match: 029e975e076e10539bc51aadfc117552' \
--data-raw '{
  "name": "John Doe",
  "externalId": null,
  "profileUrl": null,
  "email": "jack@twitter.com"
}'

{
  "status": 412,
  "error": {
    "message": "User to update has been modified after it was read.",
    "source": "objects"
  }
}
```

:::note Availability
The `If-Match`/`eTag` combination is fully supported in the App Context [User](https://www.pubnub.com/docs/sdks/rest-api/set-user-metadata) and [Channel](https://www.pubnub.com/docs/sdks/rest-api/set-channel-metadata) APIs, but it's currently not available in the [membership](https://www.pubnub.com/docs/sdks/rest-api/set-membership-metadata) and [members](https://www.pubnub.com/docs/sdks/rest-api/set-channel-members-metadata)' metadata APIs.
:::

## SDKs 📦

### New gaming SDKs

**Type**: New Feature

This month was marked by a nod (three, to be precise) towards game developers as we released three brand new gaming SDKs:

* [Unreal SDK](https://www.pubnub.com/docs/sdks/unreal)
* [Unreal Chat SDK](https://www.pubnub.com/docs/chat/unreal-chat-sdk)
* [Unity Chat SDK](https://www.pubnub.com/docs/chat/unity-chat-sdk)

These SDKs are meant to simplify gaming app creation and chat integration for games. The chat SDKs contain pre-built features like read receipts, user presence detection, and typing indicators that integrate seamlessly with your game’s UI.

We hope you'll like them!

## Events & Actions ⚡

### App Context event types

**Type**: Enhancement

We're not slowing down in extending the Events & Actions offering. [Last month](https://www.pubnub.com/docs/release-notes/2024/july#message-action-event-types), we released new message reaction event types, and this month, we extended listeners even more.

Events & Actions listeners now support new [App Context event sources](https://www.pubnub.com/docs/serverless/events-and-actions/events#event-source) that let you listen to all created, updated, and deleted events emitted whenever a User, Channel, or Membership object is modified.

![User-related event types](https://www.pubnub.com/assets/images/user-events-b6f586195659ed3e07a980a98e3a8ee3.png)

These new event types can be used for various use cases in your apps, such as notifying users in real time when user roles, channels, or team memberships change.

## BizOps Workspace 🏢

### Reviewing reported messages

**Type**: New feature

Channel Monitor has a new feature that helps chat moderators review messages reported by other chat members as potentially offensive.

If your Chat SDK-based app lets users [flag or report messages](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#flagreport-messages) published on channels by other channel members, this complementary Channel Monitor feature will help you deal with such reported messages.

Thanks to a new UI option, you can conveniently open all messages reported on a given channel in one place and [review](https://www.pubnub.com/docs/bizops-workspace/channel-monitor#review-reported-messages) them one by one.

![Review reported messages](https://www.pubnub.com/assets/images/reported-messages-e58a3c408013afc725734f7e80759107.png)

You can act on a reported message in a number of ways: mark it as reviewed, edit, or delete it. Alternatively, you can mute, ban, or watch the message author.

![Reported messages drawer](https://www.pubnub.com/assets/images/reported-messages-drawer-073d75bd374cebc0d3197b601cd86ab0.png)

:::note Retention time
Flagged messages are visible on the report for their lifetime, which depends on the retention time you set in the [Message Persistence](https://www.pubnub.com/docs/general/storage) on your app's keyset in the Admin Portal.
:::

## Illuminate 💡

### New data types

**Type**: Enhancement

This month we launched two [new data types](https://www.pubnub.com/docs/illuminate/business-objects/basics#data-fields) in addition to `Number` and `String` released [last month](https://www.pubnub.com/docs/release-notes/2024/july#measures-and-dimensions-replaced-with-data-fields).

As of now, you can use `Timestamp` and `Derived (Duration)` to calculate duration in your metrics. Specify `Timestamp` to indicate UTC date and time and `Derived (Duration)` to calculate the difference between two timestamp data types within the same event.

![Duration metrics](https://www.pubnub.com/assets/images/duration-metrics-88c208be541f77948f2522826a28cc80.png)

For example, using `Timestamp` and `Derived (Duration)`, your app can determine the exact time each delivery takes. If you notice that average delivery times exceed the 20-minute target, you can refine delivery estimates, add drivers to high-delay routes, or tweak routes for quicker service, making your deliveries more reliable and responsive to customer needs.