Skip to content

Latest commit

 

History

3,230 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Supabase Logo

Supabase Realtime

Send ephemeral messages, track and synchronize shared state, and listen to Postgres changes all over WebSockets.
Examples · Request Features · Report Bugs

Status

GitHub License Coverage Status

Features v1 v2 Status
Postgres Changes ✔ ✔ GA
Broadcast ✔ GA
Presence ✔ GA

This repository focuses on version 2 but you can still access the previous version's code and Docker image. For the latest Docker images go to https://hub.docker.com/r/supabase/realtime.

The codebase is under heavy development and the documentation is constantly evolving. Give it a try and let us know what you think by creating an issue. Watch releases of this repo to get notified of updates. And give us a star if you like it!

Overview

What is this?

This is a server built with Elixir using the Phoenix Framework that enables the following functionality:

  • Broadcast: Send ephemeral messages from client to clients with low latency.
  • Presence: Track and synchronize shared state between clients.
  • Postgres Changes: Listen to Postgres database changes and send them to authorized clients.

For a more detailed overview head over to Realtime guides.

Does this server guarantee message delivery?

The server does not guarantee that every message will be delivered to your clients so keep that in mind as you're using Realtime.

Quick start

You can check out the Supabase UI Library Realtime components and the repository of the multiplayer.dev demo app.

Developers

Start with DEVELOPERS.md for local setup, mise tasks, and example workflows.

Once your environment is up and running, check out the following docs to customize the server and troubleshooting:

Postgres compatibility

supabase/postgres version Role Status Notes
< 14 - Not supported -
14.x supabase_admin Supported with limitations Realtime needs a superuser. Only a superuser can set log_min_messages, and supautils can't hand it to another role on this version. On Postgres 14.5 and earlier, realtime.broadcast_changes(...) fails when a trigger calls it with PERFORM.
15.x < 15.14.1.018 supabase_admin Supported Realtime needs a superuser. supautils.policy_grants doesn't cover realtime.subscription until supabase/postgres@1b916920.
15.x >= 15.14.1.018, 16.x, 17.x supabase_admin Supported Migrations need a superuser. Tenant grants don't. supautils manages the policies.
17.x-orioledb < 17.11.0.001 supabase_admin Supported with limitations Tested in CI on 17.9.0.019-orioledb. Migrations need a superuser. With REPLICA IDENTITY FULL, Postgres Changes UPDATE and DELETE events don't include the old value of large (TOASTed) columns (orioledb/orioledb#1157).
17.x-orioledb >= 17.11.0.001 supabase_admin Supported with limitations Broadcast from Database loses messages sent from a trigger on an OrioleDB table. Logical decoding skips the realtime.messages insert that realtime.send or realtime.broadcast_changes makes in the trigger. Older OrioleDB images don't have this bug.

Contributing

See CONTRIBUTING.md

Code of Conduct

See supabase/CODE_OF_CONDUCT.md

License

This repo is licensed under Apache 2.0.

Credits

Releases

Sponsor this project

Used by

Contributors

Languages