# Activity Feedback

Activity feedback lets your users provide feedback about the content they're seeing.

When a user submits a feedback, a `feeds.activity.feedback` event is dispatched to the user who made the feedback.

## Hide activity

Hide activity removes an activity for a given user from all feeds.

The hide takes effect after rereading the feed. The activity will be hidden from all feeds the user reads.

<Tabs>

```js label="JavaScript"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: true,
});
```

```js label="React"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: true,
});
```

```js label="React Native"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: true,
});
```

```kotlin label="Kotlin"
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(hide = true)
)
```

```js label="Node"
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  hide: true,
  user_id: "jane",
});
```

```go label="Go"
feedsClient := client.Feeds()
_, err := feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    Hide:  getstream.PtrTo(true),
    UserID: getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}
```

</Tabs>

<admonition type="info">

Since activity hide only affects the current user, it helps respect users' content preferences. If an activity contains harmful information, moderation should be used to mitigate the situation.

</admonition>

It's possible to undo an activity hide:

<Tabs>

```js label="JavaScript"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: false,
});
```

```js label="React"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: false,
});
```

```js label="React Native"
await client.activityFeedback({
  activity_id: "activity_123",
  hide: false,
});
```

```kotlin label="Kotlin"
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(hide = false)
)
```

```js label="Node"
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  hide: false,
  user_id: "jane",
});
```

```go label="Go"
feedsClient := client.Feeds()
_, err := feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    Hide:  getstream.PtrTo(false),
    UserID: getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}
```

</Tabs>

When an activity is hidden, `activity.hidden` flag will be set to `true`. Hidden activities won't be returned when reading feeds, but they can still be queried with the proper filters.

SDKs won't remove activities from the feed on `feeds.activity.feedback` event, but `hidden` flag will be updated.

## Show more/less similar content

Stream's feeds API tracks a user's interest automatically based on the user's interactions. But users can also provide feedback requesting more or less content from different topics.

<admonition type="info">

To use this functionality, you need to have ranking configured for your feeds. Show more/less feedback works by using only the `interest_tags` of the activity. When a user provides feedback, the system uses the activity's `interest_tags` to identify similar content and adjust the ranking accordingly. Activities with `interest_tags` that have strong dislike will be filtered out from the feed. Other activities will be included in ranking depending on the user's activity feedback.

You can use `preference_score` in your ranking expressions to incorporate user preferences based on activity feedback. See the [Ranking](/activity-feeds/docs/react/custom_ranking/) documentation for an example.

</admonition>

When a user requests to see more content similar to an activity, the feed algorithm will prioritize showing similar content in future feed reads.

<Tabs>

```js label="JavaScript"
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: true,
});
```

```js label="React"
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: true,
});
```

```js label="React Native"
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: true,
});
```

```kotlin label="Kotlin"
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(showMore = true)
)
```

```js label="Node"
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  show_more: true,
  user_id: "jane",
});
```

```go label="Go"
feedsClient := client.Feeds()
_, err := feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    ShowMore: getstream.PtrTo(true),
    UserID:    getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}
```

</Tabs>

Similarly, users can request to see less content similar to an activity:

<Tabs>

```js label="JavaScript"
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: true,
});
```

```js label="React"
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: true,
});
```

```js label="React Native"
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: true,
});
```

```kotlin label="Kotlin"
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(showLess = true)
)
```

```js label="Node"
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  show_less: true,
  user_id: "jane",
});
```

```go label="Go"
feedsClient := client.Feeds()
_, err := feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    ShowLess: getstream.PtrTo(true),
    UserID:    getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}
```

</Tabs>

It's possible to undo show more/less feedback by setting the value to `false`:

<Tabs>

```js label="JavaScript"
// Undo show more feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: false,
});

// Undo show less feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: false,
});
```

```js label="React"
// Undo show more feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: false,
});

// Undo show less feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: false,
});
```

```js label="React Native"
// Undo show more feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_more: false,
});

// Undo show less feedback
await client.activityFeedback({
  activity_id: "activity_123",
  show_less: false,
});
```

```kotlin label="Kotlin"
// Undo show more feedback
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(showMore = false)
)

// Undo show less feedback
client.activityFeedback(
    activityId = "activity123",
    request = ActivityFeedbackRequest(showLess = false)
)
```

```js label="Node"
// Undo show more feedback
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  show_more: false,
  user_id: "jane",
});

// Undo show less feedback
await client.feeds.activityFeedback({
  activity_id: "activity_123",
  show_less: false,
  user_id: "jane",
});
```

```go label="Go"
feedsClient := client.Feeds()

// Undo show more feedback
_, err := feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    ShowMore: getstream.PtrTo(false),
    UserID:    getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}

// Undo show less feedback
_, err = feedsClient.ActivityFeedback(context.Background(), "activity_123", &getstream.ActivityFeedbackRequest{
    ShowLess: getstream.PtrTo(false),
    UserID:    getstream.PtrTo("jane"),
})
if err != nil {
    log.Fatal("Error providing activity feedback:", err)
}
```

</Tabs>

SDKs won't perform a state update on `feeds.activity.feedback` event. If you need a special UI for this action, you can subscribe to this event on the feed/client level with the `on` method.

<admonition type="info">

The show more/less feedback affects the ranking and relevance of future activities in the user's feed. The changes take effect gradually as the feed algorithm learns from the user's preferences.

</admonition>


---

This page was last updated at 2026-05-14T12:22:33.774Z.

For the most recent version of this documentation, visit [https://getstream.io/activity-feeds/docs/react/activity-feedback/](https://getstream.io/activity-feeds/docs/react/activity-feedback/).