VVibeFix

Guide

Realtime says SUBSCRIBED but no events arrive

Updated

The most common cause is row level security quietly blocking the row for the subscribing role. SUBSCRIBED only means the WebSocket connected, not that the client may see the data.

Get it fixed: a free check first confirms the problem on your live app, usually in 4 to 10 minutes.

Free. No account needed. It usually takes 4 to 10 minutes.

Want it fixed? Our AI agent fixes it in your code and tests your live app again. See pricing.

Login, emails or payments broke in your live app? Our AI agent fixes it in your code, then tests your live app again.

Fixed in your code, then tested live. Check my app free

Why it happens

This applies to apps made with AI app builders that use Supabase as their backend and listen to database changes with Supabase Realtime (Postgres Changes).

Supabase Realtime enforces row level security the same way a normal query would, as the subscribing client's role. When the policy does not allow the row, no error is raised and the event simply does not arrive. A table that was never added to the supabase_realtime publication is also invisible to Realtime, no matter how the subscription is set up.

Possible causes

Official fix steps

  1. Check whether the table is listed in the supabase_realtime publication, and add it from Database then Publications in the dashboard if it is missing. (supabase.com)
  2. Select the changed row using the same credentials the client uses; empty data means the policy is blocking this row for this user. (supabase.com)
  3. Check that the table name matches exactly including case, the schema is correct, and the filter syntax is right. (supabase.com)
  4. Log the status callback and confirm the channel reports SUBSCRIBED rather than CHANNEL_ERROR, CLOSED or TIMED_OUT. (supabase.com)
  5. Clean up old channels when a component re-renders or a parameter changes, so only one subscription runs. (supabase.com)
  6. Check that Realtime is enabled under Project Settings then Realtime, and, if the project is under heavier load than usual, check the Concurrent Peak Connections quota. (supabase.com)
  7. Open Logs then Realtime in the dashboard and look for connection drops, replication errors and rate limiting. (supabase.com)

You can't see it yourself

Get it fixed: a free check first confirms the problem on your live app, usually in 4 to 10 minutes.

Free. No account needed. It usually takes 4 to 10 minutes.

Want it fixed? Our AI agent fixes it in your code and tests your live app again. See pricing.

You're signed in, your customers aren't. Realtime checks access as the role of the client that subscribes, so what arrives for your own signed-in session can differ from what arrives for a customer's role.

What to do next

App broke after you published it? Our AI agent fixes it in your code, then tests your live app again so you see the result yourself. The first check is free.

Fixed in your code, then tested live. Check my app free

Related: Supabase: new row violates row-level security policy on insert · Supabase "permission denied for table" (42501) fix · Users can see other users' data in my Lovable app

Sources

VibeFix's free check can show this on your live app: our AI agent tries your live app like a new user and shows you what breaks. On request, it reviews your code independently (VibeFix isn't part of any app builder), fixes it in your code and re-checks it live.

Last checked: 3 November 2026, against the sources listed above.

VibeFix is independent. Lovable, Bolt, Replit, Base44, v0 and Supabase are trademarks of their owners.

Want it fixed?

Our AI agent fixes it in your code and tests your live app again. See pricing.

It starts with a free check that confirms the problem on your live app, no account needed.

Check my app free

More guides