Optionalparams: UsePresenceListenerParamsOptional parameters for event listeners and room status callbacks
A UsePresenceListenerResponse containing current presence data and error state
An Ably.ErrorInfo with ReactHookMustBeUsedWithinProvider When used outside of a ChatRoomProvider
import React from 'react';
import { ChatClient, PresenceEvent } from '@ably/chat';
import {
ChatClientProvider,
ChatRoomProvider,
usePresenceListener
} from '@ably/chat/react';
// Component that displays all presence members
const PresenceList = () => {
const { presenceData, error } = usePresenceListener({
listener: (presenceEvent: PresenceEvent) => {
console.log(`Presence ${presenceEvent.type}:`, presenceEvent.member);
},
});
if (error) {
return <div>Error: {error.message}</div>;
}
return (
<div>
<p>Total Members: {presenceData.length}</p>
<ul>
{presenceData.map((member) => (
<li key={member.clientId}>👤 {member.clientId}</li>
))}
</ul>
</div>
);
};
const chatClient: ChatClient; // existing ChatClient instance
// App component with providers
const App = () => {
return (
<ChatClientProvider client={chatClient}>
<ChatRoomProvider name="team-room">
<PresenceList />
</ChatRoomProvider>
</ChatClientProvider>
);
};
export default App;
React hook that provides real-time presence data for all users in a room.
This hook automatically subscribes to presence events and maintains an up-to-date list of all presence members in the room.
Note: