useChannels for PubNub Chat Components for React Native

Migrate to Chat SDK

PubNub will stop supporting Chat Components on January 1, 2025 but you are welcome to contribute. Learn how to migrate to the Chat SDK here.

The hook returns a list of channel metadata objects, optionally including the custom data object for each.

Pagination is handled internally. You can adjust the limit of returned channels on a single call (max/default 100) and call a function returned by the hook to get another page of results. This hook also sets up a listener that reacts to updates and removals of already fetched channels.

However, this behavior requires a living subscription to channels getting updated - this should be handled by the components.

const [channels, fetchPage, total, error, isLoading] = useChannels();

return (
<Chat {...{ options }}>
<ChannelList channels={channels} />
</Chat>
);

Input

* required
ParameterDefaultsDescription
include
Type: Object
n/a
Option to include respective additional fields in the response.
→ customFields
Type: Boolean
false
Option to fetch custom fields or not.
filter
Type: String
n/a
Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. See the App Context Filtering Language Definition for more details.
sort
Type: Object
n/a
Key-value pair of a property to sort by and a sort direction.

Available options are id, name, and updated.

Use asc or desc to specify sort direction, or specify null to take the default sort direction (ascending).

Example: {name: 'asc'}
limit
Type: Number
100
Number of objects to return in response.

Default is 100 which is also the maximum value.

Output

ParameterDescription
array[0]
Type: ChannelData[]
List of returned channels.
array[1]
Type: Function
Function that can be called to fetch another page of channels.
array[2]
Type: Number
Total number of stored channels.
array[3]
Type: Error
If there's an error fetching channels, it will be available here.
array[4]
Type: Boolean
Indicator that the channel data is still being loaded.
Last updated on
On this page