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

await call.sendReaction(reactionType: 'fireworks');

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}',
    );
});
© Getstream.io, Inc. All Rights Reserved.