Skip to content

Add real-time updates

Make your app feel alive. Live updates, collaboration, and instant notifications built in.

  1. 1
    Supabase Realtime

    Enable Realtime on your Supabase table in the Table Editor by toggling the Realtime switch. In your frontend, call supabase.channel('table-changes').on('postgres_changes', { event: '*', schema: 'public', table: 'your_table' }, callback).subscribe(). The callback fires instantly whenever a row is inserted, updated, or deleted, letting you update your UI without polling.

    Open Supabase Realtime
  2. 2
    Pusher

    Sign up for Pusher Channels and create an app. Install the pusher-js and pusher npm packages. On your server, call pusher.trigger('channel-name', 'event-name', { data }) whenever something happens. On the client, subscribe to the same channel and bind to the event to receive the payload. Pusher handles all WebSocket connection management automatically.

    Open Pusher
  3. 3
    Ably

    Create an Ably account and copy your API key. Install the ably npm package. Publish messages from your server with rest.channels.get('my-channel').publish('event', data). On the client, subscribe with realtime.channels.get('my-channel').subscribe('event', callback). Use Ably's rewind feature to replay missed messages for clients that reconnect after a brief disconnect.

    Open Ably
  4. 4
    Socket.io

    Install socket.io on your Node.js server and socket.io-client in your frontend. Attach Socket.io to your HTTP server with io(httpServer). Emit events from the server with io.to(roomId).emit('event', data) to target specific users or rooms. On the client, socket.on('event', callback) receives the data. Socket.io automatically falls back to long-polling if WebSockets are blocked.

    Open Socket.io

Know a better stack?

Share your favourite tool combination with the community.

Suggest a stack