await call.sendReaction(reactionType: 'fireworks');Reactions
Reactions in video calling let participants express emotions and non‑verbal cues without interrupting the conversation. They also make meetings feel more interactive and responsive.
Send a reaction
Send a reaction with custom data
You can attach custom data and optionally override the emoji used for the reaction:
await call.sendReaction(
reactionType: 'raise-hand',
emojiCode: ':smile:',
custom: {'mycustomfield': 'mycustomvalue'},
);Default behavior
When a reaction event is received, the SDK updates the CallParticipantState. The default UI components render the reaction as an overlay on the participant’s video. After a configurable duration, the reaction is reset and disappears from the UI.
You can configure the auto‑dismiss timeout via reactionAutoDismissTime in CallPreferences:
final preferences = DefaultCallPreferences(
reactionAutoDismissTime: const Duration(seconds: 30),
);
final streamVideo = StreamVideo(
'api_key',
user: user,
userToken: token,
options: StreamVideoOptions(
defaultCallPreferences: preferences,
),
);See more about Call preferences here. Refer to the cookbook for information on built-in reaction components and customization.
Listen for reaction events
If you want to handle reactions yourself, listen for the event and apply custom logic:
call.callEvents.on<StreamCallReactionEvent>((event) {
debugPrint(
'Reaction received: ${event.emojiCode} from ${event.user.id}',
);
});