Broadcast, Presence, and Postgres Changes via WebSockets
  • Elixir 93.5%
  • TypeScript 3.7%
  • HTML 1.3%
  • JavaScript 0.5%
  • CSS 0.4%
  • Other 0.6%
Find a file
2026-06-18 19:40:12 -04:00
.github feat: introduce least-privilege realtime user (#1954) 2026-06-18 11:35:02 -04:00
assets chore: update @supabase/supabase-js to v2.108.2 (#1960) 2026-06-16 12:17:47 +12:00
bench feat: add jwks support (#807) 2024-04-02 15:49:14 +02:00
config fix: update gen_rpc to original fork (#1887) 2026-06-16 12:31:46 +12:00
deploy/fly fix: update config for prod fly v2 (#629) 2023-08-14 14:02:31 -07:00
dev/postgres feat: setup supabase_realtime_admin (#1852) 2026-06-08 17:29:51 -04:00
forum chore: s/Beacon/Forum.Census/g (#1936) 2026-06-10 12:42:44 +12:00
lib fix: replication connection increase timeout (#1959) 2026-06-19 10:47:01 +12:00
priv feat: introduce least-privilege realtime user (#1954) 2026-06-18 11:35:02 -04:00
rel fix: reduce map heap size (#1781) 2026-04-01 10:35:35 +13:00
test fix: replication connection increase timeout (#1959) 2026-06-19 10:47:01 +12:00
.credo.exs fix: apply formatting and style fixes; enable in CI (#1291) 2025-01-31 16:58:50 -07:00
.dockerignore feat: update Dockerfile OTP and Debian versions 2022-10-19 14:12:40 -04:00
.formatter.exs fix: add extra label to metrics push (#1738) 2026-03-04 22:40:51 +00:00
.gitignore chore: local dev setup (#1823) 2026-04-21 12:38:36 -04:00
.releaserc chore: automatically bump mix.exs version with a new release (#1687) 2026-02-02 10:09:02 +13:00
.sobelow-conf fix: improve CI security checks (#1299) 2025-02-13 18:23:32 +00:00
.tool-versions fix: update nodejs to latest (#1645) 2025-12-08 11:37:24 +00:00
compose.dbs.yml feat: setup supabase_realtime_admin (#1852) 2026-06-08 17:29:51 -04:00
compose.tests.yml feat: introduce least-privilege realtime user (#1954) 2026-06-18 11:35:02 -04:00
compose.yml chore: local dev setup (#1823) 2026-04-21 12:38:36 -04:00
CONTRIBUTING.md chore: local dev setup (#1823) 2026-04-21 12:38:36 -04:00
coveralls.json fix: expose authorization metrics (#1334) 2025-03-28 18:44:56 +00:00
DEVELOPERS.md feat(observability): per-tenant subscription metrics (#1928) 2026-06-02 11:05:42 -04:00
Dockerfile feat: update pgdelta (#1967) 2026-06-17 13:46:23 -04:00
ENVS.md feat: introduce least-privilege realtime user (#1954) 2026-06-18 11:35:02 -04:00
ERROR_CODES.md fix: ReplicationPoller consumes slot if publication is not empty (#1919) 2026-06-12 12:54:04 +12:00
LICENSE Create LICENSE 2022-12-22 16:41:56 -08:00
mise.lock feat: update pgdelta (#1967) 2026-06-17 13:46:23 -04:00
mise.toml feat: update pgdelta (#1967) 2026-06-17 13:46:23 -04:00
mix.exs chore: local phoenix dep (#1971) 2026-06-18 19:40:12 -04:00
mix.lock fix: update gen_rpc to original fork (#1887) 2026-06-16 12:31:46 +12:00
OBSERVABILITY_METRICS.md feat(observability): per-tenant subscription metrics (#1928) 2026-06-02 11:05:42 -04:00
phx_join.schema.json fix: improve join payload handling (#1501) 2025-08-29 13:16:23 +01:00
README.md feat: setup supabase_realtime_admin (#1852) 2026-06-08 17:29:51 -04:00
run.sh chore: actionlint & shellcheck added (#1873) 2026-05-18 14:41:13 +01:00


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
< 14 - Not officially supported.
14.x supabase_admin Requires superuser: log_min_messages can only be set by a superuser; supautils doesn't expose per-parameter delegation on this version. On <= 14.5, realtime.broadcast_changes(...) called from a trigger via PERFORM is unsupported.
15.x < 15.14.1.018 supabase_admin Requires superuser: supautils.policy_grants on realtime.subscription is missing until supabase/postgres@1b916920.
15.x >= 15.14.1.018, 16.x, 17.x supabase_realtime_admin No superuser needed. Role must have REPLICATION and policies are managed by supautils.

Contributing

See CONTRIBUTING.md

Code of Conduct

See supabase/CODE_OF_CONDUCT.md

License

This repo is licensed under Apache 2.0.

Credits