Custom Data

Custom data is additional information that can be added to the default data of Stream Call. It is an object with key-value pairs that can be attached to users, events, and pretty much almost every domain model in the Stream Video SDK.

The type definition is the following:

export type Custom = {
  [key: string]: any; // where `any` should be JSON-serializable value
};

Adding custom data

Adding extra data can be done through the Server-Side SDKs or through the Client SDKs. In the Stream Video SDK, you can add extra data when creating/updating a user, event, reaction and other models.

As a simple example, let’s see how you can add a new topic field to a call instance.

const call = client.call(type, id);
await call.getOrCreate({
  data: { custom: { topic: "Monthly sync" } },
});

// or update a custom field
await call.update({
  custom: { topic: "Weekly sync" },
});

Reading custom data

The custom data is exposed through the custom state property (and custom$ observable):

const call = client.call(type, id);
await call.getOrCreate();

const topic = call.state.custom?.topic;
console.log("The topic of the current call is:", topic);

call.state.custom$.subscribe((custom) => {
  console.log("The topic is changed to:", custom?.topic);
});
© Getstream.io, Inc. All Rights Reserved.