Feature Fix

Fix Supabase Realtime Blocked in India

Supabase Realtime relies on /realtime/v1/ which is blocked by Indian ISPs. Here is what breaks, the impact on your users, and how to fix it with a one-line code change.


What breaks

Supabase Realtime uses WebSocket connections to deliver live updates, presence tracking, and broadcast messages. When *.supabase.co is DNS-blocked, the WebSocket handshake fails because it starts as an HTTP upgrade request to the blocked domain. All real-time subscriptions, presence channels, and broadcast channels stop working. Your app falls silent - no live updates, no typing indicators, no online status, no collaborative features.

Impact on your users

Apps that depend on real-time features become static and unresponsive. Chat applications stop receiving new messages. Collaborative documents stop syncing. Live dashboards freeze. Notification systems go silent. The app appears "stuck" or "lagging" to users, who may think the app itself is broken rather than the connection.

Why Realtime is blocked

Indian ISPs (Jio, Airtel, BSNL, ACT Fibernet) are DNS-blocking all subdomains under *.supabase.co following a government order under Section 69A of the IT Act. This means every Supabase service endpoint is unreachable, including the /realtime/v1/ path that Realtime depends on.

The block is at the DNS level. Your ISP's DNS resolver returns incorrect IP addresses for Supabase domains, causing connections to time out or fail. Supabase itself is fully operational - the block is ISP-specific.

Technical details

Supabase Realtime makes HTTP requests (and WebSocket connections for Realtime) to your Supabase project's /realtime/v1/ endpoint. When DNS is poisoned:

DNS lookup for your-project.supabase.co returns a sinkhole IP or NXDOMAIN
HTTP requests to /realtime/v1/ hang until timeout (10-30 seconds)
The Supabase JS client throws a network error or returns undefined
Your app displays error states, empty data, or infinite loading spinners

Affected ISPs

The following ISPs are confirmed to block Supabase Realtime (along with all other Supabase services):

Fix Supabase Realtime

Route Supabase Realtime traffic through an unblocked domain. Your existing code stays almost identical — just swap the URL. Two options:

Recommended

Self-host your own proxy

Deploy a full-featured proxy on your own Cloudflare Workers account. Free, open-source, under 60 seconds.

terminal
npx create-jiobase

Guided setup: enter your Supabase URL, configure CORS, deploy. Supabase Realtime + all other services included.

Learn more →

Or use JioBase managed

Dashboard with analytics, rate limiting, and automatic updates. Sign up free, add your Supabase project, and swap one URL.

lib/realtime.ts
import { createClient } from '@supabase/supabase-js'

// Proxied through JioBase - Realtime works including WebSockets:
const supabase = createClient('https://myapp.jiobase.com', 'your-anon-key')

// Subscribe to real-time changes (works through proxy)
const channel = supabase
  .channel('room-1')
  .on('postgres_changes',
    { event: '*', schema: 'public', table: 'messages' },
    (payload) => console.log('New message:', payload)
  )
  .subscribe()

// Presence tracking (works through proxy)
const presence = supabase.channel('online-users')
presence.on('presence', { event: 'sync' }, () => {
  console.log('Online:', presence.presenceState())
})

Deploy and verify

Deploy your updated code and test from a blocked ISP (Jio, Airtel) to confirm Realtime operations work through the proxy. Your anon key stays the same. Supabase Realtime works identically through the proxy.

What stays the same

When you switch to a JioBase proxy URL, everything except the URL stays identical:

Your anon key stays the same
Your RLS policies are completely unaffected
Your database schema and data are untouched
Your Supabase dashboard continues to work normally
All other Supabase features (Auth, Storage, Realtime, Edge Functions) work through the same proxy

Frequently asked questions

Does JioBase support WebSocket proxying?

Yes. JioBase fully proxies WebSocket connections using Cloudflare's WebSocketPair API. Supabase Realtime subscriptions, presence, and broadcast all work through the proxy with minimal latency overhead (1-5ms).

Will the DIY Cloudflare Worker also proxy WebSockets?

The basic Worker from our generator tool handles HTTP only. WebSocket proxying requires additional code using the WebSocketPair API. JioBase's managed proxy includes full WebSocket support out of the box.

How much latency does the proxy add to real-time events?

Typically 1-5ms. Cloudflare Workers execute at the edge location closest to the user, so the additional hop is negligible. This is far less than VPN overhead (50-200ms+) and imperceptible in most real-time applications.

Fix your Supabase app in under 60 seconds

JioBase routes your Supabase traffic through Cloudflare's edge network. No VPN, no DNS hacks, no code rewrites. One command or one line change.

npx create-jiobase — deploy your own proxy on Cloudflare Workers

Related pages