# Hiding Channels

Hiding a channel removes it from query channel requests for that user until a new message is added. Only channel members can hide a channel.

Hidden channels may still have unread messages. Consider [marking the channel as read](/chat/docs/<framework>/unread/) before hiding it.

You can optionally clear the message history for that user when hiding. When a new message is received, it will be the only message visible to that user.

## Hide a Channel

<codetabs>

<codetabs-item value="kotlin" label="Kotlin">

```kotlin
// Hides the channel until a new message is added there
channelClient.hide().enqueue { result ->
  if (result is Result.Success) {
    // Channel is hidden
  } else {
    // Handle Result.Failure
  }
}

// Shows a previously hidden channel
channelClient.show().enqueue { result ->
  if (result is Result.Success) {
    // Channel is shown
  } else {
    // Handle Result.Failure
  }
}

// Hide the channel and clear the message history
channelClient.hide(clearHistory = true).enqueue { result ->
  if (result is Result.Success) {
    // Channel is hidden
  } else {
    // Handle Result.Failure
  }
}
```

</codetabs-item>

<codetabs-item value="javascript" label="JavaScript">

```js
// hides the channel until a new message is added there
await channel.hide();

// hides the channel until a new message is added there. This also clears the history for the user
await channel.hide(null, true);

// shows a previously hidden channel
await channel.show();
```

</codetabs-item>

<codetabs-item value="php" label="PHP">

```php
// hides the channel until a new message is added there
$channel->hide("john");

// shows a previously hidden channel
$channel->show("john");
```

</codetabs-item>

<codetabs-item value="dart" label="Dart">

```dart
// hides the channel until a new message is added there
await channel.hide();

// shows a previously hidden channel
await channel.show();

// hide the channel and clear the message history
await channel.hide(clearHistory: true);
```

</codetabs-item>

<codetabs-item value="swift" label="Swift">

```swift
import Stream Chat

let controller = chatClient.channelController(for: .init(type: .messaging, id: "general"))

// hide channel
controller.hideChannel { error in
  if let error = error {
    // handle error
    print(error)
  }
}

// show channel
controller.showChannel { error in
  if let error = error {
    // handle error
    print(error)
  }
}

// hide channel and clear message history
controller.hideChannel(clearHistory: true) { error in
  if let error = error {
    // handle error
    print(error)
  }
}
```

</codetabs-item>

<codetabs-item value="unreal" label="Unreal">

```cpp
// hides the channel until a new message is added there
Channel->Hide();

// shows a previously hidden channel
Channel->Show();

// hide the channel and clear the message history
Channel->Hide(true);
```

</codetabs-item>

<codetabs-item value="python" label="Python">

```python
# Hide the channel until a new message is added
channel.hide("john")

# Show a previously hidden channel
channel.show("john")
```

</codetabs-item>

<codetabs-item value="ruby" label="Ruby">

```ruby
# Hide the channel until a new message is added
channel.hide("john")

# Show a previously hidden channel
channel.show("john")
```

</codetabs-item>

<codetabs-item value="csharp" label="C#">

```csharp
// hides the channel until a new message is added there
await channelClient.HideAsync("<channel-type>", "<channel-id>", "john");

// shows a previously hidden channel
await channelClient.ShowAsync("<channel-type>", "<channel-id>", "john");
```

</codetabs-item>

<codetabs-item value="go" label="Go">

```go
// hides the channel until a new message is added there
channel.hide(ctx, "john");

// shows a previously hidden channel
channel.show(ctx, "john");
```

</codetabs-item>

<codetabs-item value="java" label="Java">

```java
// Hides the channel until a new message is added there
channelClient.hide(false).enqueue(result -> {
  if (result.isSuccess()) {
    // Channel is hidden
  } else {
    // Handle result.error()
  }
});

// Shows a previously hidden channel
channelClient.show().enqueue(result -> {
  if (result.isSuccess()) {
    // Channel is shown
  } else {
    // Handle result.error()
  }
});

// Hide the channel and clear the message history
channelClient.hide(true).enqueue(result -> {
  if (result.isSuccess()) {
    // Channel is hidden
  } else {
    // Handle result.error()
  }
});
```

</codetabs-item>

<codetabs-item value="unity" label="Unity">

```csharp
// Hide a channel
await channel.HideAsync();

// Show previously hidden channel
await channel.ShowAsync();
```

</codetabs-item>

</codetabs>

<admonition type="info">

You can still retrieve the list of hidden channels using the `{ "hidden" : true }` query parameter.

</admonition>


---

This page was last updated at 2026-03-05T19:05:17.639Z.

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/flutter-dart/hiding_channels/](https://getstream.io/chat/docs/flutter-dart/hiding_channels/).