# Moderation

Stream Chat supports moderation actions like flagging, muting, banning, and shadow banning. Low-level client tools are documented [here](/chat/docs/ios-swift/moderation/).

You can also moderate flagged messages and users in the [moderation dashboard](/chat/docs/javascript/moderation/).

## Best Practices

- Align dashboard moderation actions with your in-app UX expectations.
- Surface clear feedback when a message is bounced or blocked.
- Treat `message.moderation_details` as the source of truth for moderation state.
- Keep resend actions gated to prevent repeated policy violations.
- Customize `MessageBounce` only if you keep the same moderation semantics.

### Moderation Categories

For each channel type, you can enable AI moderation, consisting of 4 moderation categories:

- Semantic Filters
- Commercial Spam
- Platform Circumvention
- Blocklists

![Dashboard moderation categories](@chat-sdk/react-native/v8/_assets/guides/moderation/moderation-dashboard.png)

For each category, configure the action applied when a message matches:

The available actions are:

- Flag
- Block
- Bounce
- Bounce then flag
- Bounce then block

### React Native SDK Handling

In the React Native SDK, check `message.moderation_details`. It’s `undefined` for regular messages.

If moderation blocks a message, `message.type` is `error` and the text contains `Message was blocked by moderation policies`.

If moderation bounces a message, `message.type` is `error` and `moderation_details` is defined.

### UI Components handling

The SDK handles bounced messages by default and shows a visual indicator.

![Bounced message](@chat-sdk/react-native/v8/_assets/guides/moderation/bounced-message.png)

Press/long-press a message to access default actions like edit, delete, and resend.

![Bounced message actions](@chat-sdk/react-native/v8/_assets/guides/moderation/bounced-message-action.png)

<admonition type="note">

If you resend a bounced message:

- With “bounce then flag”, it’s flagged after the second send.
- With “bounce then block”, it’s blocked after the second send.

</admonition>

You can customize bounced message actions by passing a custom [MessageBounce](/chat/docs/sdk/react-native/v8/ui-components/message-bounce/) to [`Channel`](/chat/docs/sdk/react-native/v8/core-components/channel#messagebounce/).


---

This page was last updated at 2026-04-17T17:33:45.523Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/sdk/react-native/v8/guides/moderation/](https://getstream.io/chat/docs/sdk/react-native/v8/guides/moderation/).