Supabasewenbo,stasAnnouncement
Realtime: Multiplayer Edition
Summary
Supabase announces the general availability of Realtime’s multiplayer features, Broadcast and Presence, alongside a new channel-based architecture and supabase-js support. Realtime originally used Postgres logical replication, rather than LISTEN/NOTIFY, to avoid the latter’s 8,000-byte payload limit and the latency of querying each change from the database. In the new design, Channels act as rooms that support ephemeral publisher/subscriber Broadcast messages, shared Presence state, and Postgres change events; Presence uses Phoenix Tracker, a delta-based CRDT, for eventually consistent synchronization and removes disconnected users automatically. Realtime now runs as a distributed Elixir and Phoenix cluster on Fly, with clients connecting to the nearest node and nodes communicating across a backbone network to improve connection speed, stability, and latency. Free-plan active projects and projects created from August 18 have access, while other projects are scheduled for migration over the following weeks.
Context
Supabase is extending Realtime beyond database change delivery to support multiplayer use cases such as cursor sharing, online status, and typing indicators. The earlier implementation also faced a limitation with Postgres LISTEN/NOTIFY, whose payload limit is 8,000 bytes, making a query-for-each-change workaround too slow for the chat application described.
Approach / What changed
Realtime introduces Channels as rooms containing Broadcast and Presence, while also supporting Postgres change events. Broadcast sends ephemeral publisher/subscriber messages without using the database; Presence synchronizes shared state through Broadcast using Phoenix Tracker, a delta-based conflict-free replicated data type. The service runs as a distributed Elixir and Phoenix cluster on Fly, and the new supabase-js release candidate exposes the client APIs.
Takeaways
Broadcast bypasses the database, making it suitable for real-time data such as cursor positions that previously could add latency and degrade database performance when sent through Postgres.
Presence persists shared channel state for new joiners, synchronizes it eventually and conflict-free, and automatically removes a user’s state after an unexpected disconnect.
The new Realtime deployment distributes servers globally, routes clients to the nearest node, and uses inter-node communication to improve connection speed, stability, and latency.
Source and freshness
- Source
- supabase.com
- Published
- Added to Yomu
- Last updated
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.