We recently wrapped a project with Supabase and wrote it up. Sharing here because a good chunk of it is Phoenix and Elixir internals this crowd might enjoy picking apart.
Two parallel tracks:
realtime-js → canonical Phoenix.js
realtime-js (the SDK behind Supabase Realtime, ~20M weekly downloads) was running on a fork of Phoenix.js that had drifted a long way from upstream. The goal was to drop the fork and wrap canonical Phoenix.js instead, with the public API unchanged. A few things that came up:
- Phoenix.js ships JSDoc but no real types, and some of it referenced types that didn’t exist. We wrote proper TS definitions while keeping changes minimal so future Phoenix.js updates stay easy to pull in.
- We hit a silent double-subscribe edge case (subscribing to the same channel twice gets blocked by how Phoenix.js tracks channel state). Fixed with a helper that handles callback transfer and channel recreation, plus a few small upstream PRs.
- Testing a client lib without running the whole platform: we built a browser-based Realtime explorer and an Expo app, then ran automated tests against the real library. The Expo app also let us reproduce and fix the long-standing RN issue where the WebSocket drops on backgrounding and doesn’t restore cleanly (now handled with lifecycle hooks).
Logflare (the Elixir side)
Logflare is Supabase’s distributed observability app. We joined as external contributors and:
- Rebuilt ingestion rule evaluation. It was a linear scan checking every rule against every event; we moved it to a tree that prunes branches early, getting close to logarithmic.
- Moved BigQuery ingestion off the deprecated REST API onto the gRPC Streaming API (smaller payloads, less outbound traffic, lower GCP spend at that volume).
- Added export adapters for Axiom, Last9, and OTLP, which became the groundwork for Supabase’s Log Drains.
Full write-up: Modernizing RT Infrastructure and Observability for Supabase
I know a good Elixir project case study is something we all like to read
Would be interested to hearing your thoughts about this one!






















