Supabase JS 2.113.0 Adds Realtime Wait for Postgres Changes

What shipped

@supabase/supabase-js 2.113.0 shipped September 2, 2026 with one feature: Realtime channels can now wait for Postgres changes before reporting that they're subscribed.

What changed

Pass postgres_changes_options: { wait: true } to channel.subscribe() and the SUBSCRIBED callback is held until the server confirms the postgres_changes subscription is actually streaming — not when the socket connects, which can race the replication slot. Add timeoutMs to bound the wait (default 15,000ms; the server clamps to its own max, 20s by default). A PostgresChangesSubscribeTimeout error fires if confirmation never lands, and the option is a no-op on channels without postgres_changes bindings.

Why a builder cares

This kills the classic Supabase footgun: subscribing, then immediately querying, and missing the first change because the replication slot wasn't streaming yet. UI code that toasts "subscribed" can now mean it, and tests stop needing arbitrary sleeps.