const { triggerReaction, activeEffect, canTrigger, isCoolingDown } = useReactionSync({
localUserId: user.email,
isOwner: true,
permission: 'owner-only',
});
// Trigger a reaction
triggerReaction('heart');
// Render the active effect
<ReactionsOverlay activeEffect={activeEffect} onEffectComplete={clearEffect} />
Core hook for sending and receiving reaction effects in a room.
Broadcasts reaction events via WebRTC data messages and listens for incoming reactions from other participants. Handles deduplication, permission enforcement, cooldown throttling, and effect lifecycle.