Skip to main content

Overview

Channels are the core concept in Supabase Realtime. They provide isolated communication streams for different features of your application.

Creating Channels

Basic Channel

Create a channel with a unique name:
string
required
Unique identifier for the channel. Can include letters, numbers, and hyphens.

Channel with Options

Configure channel behavior:
object
Broadcast configuration.
object
Presence configuration.

Subscribing to Channels

Subscribe

Activate the channel connection:

Subscribe with Error Handling

Channel States

Connection States

status
Channel is connected and ready.
status
Connection attempt timed out.
status
Channel has been closed.
status
An error occurred with the channel.

Check Channel State

Unsubscribing

Remove Single Channel

Remove All Channels

Unsubscribe in React

Channel Naming

Best Practices

Scoped Channels

Organize channels by feature and ID:

Multiple Listeners

Add multiple event listeners to a single channel:

Private Channels

Implement private channels using RLS:

Channel Events

System Events

Listen to channel lifecycle events:

Broadcasting to Channels

Send Messages

Broadcast messages to all subscribers:

Broadcast with Acknowledgment

Performance Optimization

Throttle Updates

Limit the rate of updates:

Debounce Updates

Delay updates until activity stops:

Error Handling

Handle Connection Errors

Handle Timeout

Channel Patterns

Chat Room

Collaborative Editing

Live Dashboard

Best Practices

Name channels based on their purpose and scope:
Always unsubscribe when components unmount:
Handle disconnections gracefully with retry logic.
Use throttling or debouncing for cursor positions, typing indicators, etc.
Implement Row Level Security to control channel access.

Next Steps

Subscriptions

Learn about subscription patterns

Client Libraries

Use Realtime with client SDKs