Emergency · 6 min read

Your Production App Just Broke: Emergency Guide for Supabase Block in India

Your Supabase-powered app just stopped working for Indian users. Here is the emergency triage guide. Diagnose the problem in 60 seconds, avoid the common mistakes, and get your app running again with one command.


Is it the block? Quick diagnosis

Before you start debugging your code or checking Supabase status pages, run these three quick checks. If all three match, your ISP is blocking Supabase.

1

Check if supabase.com loads but your API calls time out

Open supabase.com in your browser. If the Supabase website loads normally but your app's API calls are failing with timeout errors, this is a strong indicator of the ISP block. The block targets *.supabase.co (the API domain), not supabase.com (the marketing site).

supabase.com loads? + API calls timing out? = Likely ISP block
2

Run nslookup and check for sinkhole IPs

Open your terminal and run the following command, replacing the project ID with your actual Supabase project:

terminal
$ nslookup yourproject.supabase.co
Name: yourproject.supabase.co
Address: 49.44.79.236 ← sinkhole IP

If the resolved IP starts with 49.44.x.x, that is a sinkhole IP. Your ISP is returning a fake address instead of Supabase's real server. This confirms DNS poisoning.

3

Test from a VPN

Enable a VPN that routes through a non-Indian server and try your app again. If it works through the VPN but fails without it, the ISP block is confirmed. This is the definitive test because the VPN bypasses the ISP's DNS entirely.

All three checks point to the block? Skip the debugging. Your code is fine. Supabase is fine. The problem is between your users and Supabase's servers. Jump to the emergency fix below.

What NOT to do

When your production app goes down, the instinct is to try anything to get it back up. Here are the three most common panic reactions that will waste your time or make things worse.

Do not panic-migrate to Firebase

Firebase is also blocked on BSNL since August 2025. Migrating your entire backend to Firebase could take days or weeks, and you might end up with the same problem on a different ISP. The issue is ISP-level DNS blocking, not a Supabase-specific problem. Switching backends does not solve it. For a full comparison of alternatives, read our Supabase alternatives guide.

Do not tell users to use a VPN

A VPN works for you as a developer. It does not work as a solution for your users. You cannot expect 500 million Jio subscribers to install a VPN app just to use your product. Most will leave and never come back. The fix needs to be invisible to your end users.

Do not switch DNS and think it is fixed

Changing your local DNS to 1.1.1.1 or 8.8.8.8 might unblock Supabase on your development machine. But your production users are still on their ISP's default DNS. The DNS change only helps you, not your customers. Some ISPs also use Deep Packet Inspection that blocks connections regardless of DNS.

Emergency fix: swap your Supabase URL (under 60 seconds)

The fix is to route your Supabase traffic through a domain that is not blocked. Here is the fastest path to get your production app working again.

1

Sign up at JioBase

Go to jiobase.com/register. Create a free account. Takes 30 seconds.

2

Create a proxy app

Click "New App" and enter your Supabase project URL (for example, https://abcdefgh.supabase.co) and pick a slug. You will get a proxy URL like myapp.jiobase.com.

3

Swap the URL in your config

Find your Supabase client initialization and change the URL. That is the only change. Your API keys, RLS policies, and all other configuration stays exactly the same.

4

Code examples by framework

Environment variable (all frameworks):

.env
# Before (blocked)
NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co
# After (works everywhere)
NEXT_PUBLIC_SUPABASE_URL=https://myapp.jiobase.com
# Key stays the same
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

Next.js / React:

lib/supabase.ts
import { createClient } from '@supabase/supabase-js'
export const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)

Flutter / Dart:

main.dart
await Supabase.initialize(
url: 'https://myapp.jiobase.com',
anonKey: 'your-anon-key',
);

SvelteKit:

src/lib/supabase.ts
import { createClient } from '@supabase/supabase-js'
import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'
export const supabase = createClient(
PUBLIC_SUPABASE_URL,
PUBLIC_SUPABASE_ANON_KEY
)

No SDK changes needed. The Supabase client library sends standard HTTP requests and WebSocket connections to whatever URL you provide. JioBase transparently forwards everything to your actual Supabase project. Your anon key, service role key, RLS policies, and all other configuration stays the same.

Production migration checklist

Swapping the URL in your main codebase is the first step, but production apps have multiple touchpoints. Go through this checklist to make sure you have covered everything.

1

Environment variables

Update SUPABASE_URL (or NEXT_PUBLIC_SUPABASE_URL, VITE_SUPABASE_URL, etc.) in all environments: development, staging, and production. Check .env, .env.local, .env.production.

2

CI/CD pipeline secrets

If your CI/CD pipeline (GitHub Actions, Vercel, Netlify, Railway, etc.) has the Supabase URL as a secret or environment variable, update it there too. Deployments that pull from CI secrets will use the old URL otherwise.

3

Mobile app releases

If you have a mobile app (React Native, Flutter, native iOS/Android) that has the Supabase URL compiled into the binary, you will need to publish a new app store release. Until users update, they will still hit the blocked URL. Use a remote config or environment variable pattern to avoid this problem in the future.

4

Realtime subscriptions

If your app uses Supabase Realtime (database subscriptions, presence, broadcast), verify that WebSocket connections are working through the proxy. JioBase supports full WebSocket proxying. Test your subscription channels after the swap.

5

Storage URLs

If you are generating signed URLs for Supabase Storage files, those URLs include the supabase.co domain. You may need to update how you generate or serve these URLs. If your app constructs Storage URLs using the Supabase client, they will automatically use the proxy URL.

6

Server-side code and Edge Functions

If you call Supabase from server-side code (API routes, serverless functions, cron jobs), check whether those servers are hosted in India. If they run on Indian infrastructure, they are also affected by the block and need the proxy URL.

7

Hardcoded URLs in codebase

Search your entire codebase for supabase.co. Check for hardcoded URLs in configuration files, seed scripts, migration scripts, webhook endpoints, or documentation.

terminal
# Find all hardcoded Supabase URLs in your project
$ grep -r "supabase\.co" . --include="*.ts" --include="*.tsx" \
--include="*.js" --include="*.jsx" --include="*.env*" \
--include="*.dart" --include="*.swift" --include="*.kt"

Why DNS change alone does not fix production

It is tempting to think that switching your DNS to 1.1.1.1 or 8.8.8.8 solves the problem. It might unblock Supabase on your development machine. But here is why it does nothing for your production users:

Your users do not control their DNS. When a user opens your app on their Jio mobile or Airtel broadband, their device uses the ISP's DNS by default. They are not going to open network settings and change DNS servers. Most do not even know what DNS is.

Mobile DNS changes require root or apps. On Android, changing DNS system-wide requires either root access or a DNS changer app that creates a local VPN. On iOS, DNS can be changed per-network but resets frequently. Neither option is realistic for end users.

Some ISPs block third-party DNS too. Certain ISPs use Deep Packet Inspection (DPI) to inspect TLS handshakes. Even if DNS resolves correctly, the ISP sees the Server Name Indication (SNI) field containing supabase.co and blocks the connection.

DNS requests can be hijacked. Some ISPs intercept DNS queries to 1.1.1.1 and 8.8.8.8 at the network level, redirecting them to the ISP's own resolver. Even DNS over HTTPS (DoH) may not work if the ISP blocks the DoH endpoints.

A reverse proxy solves the problem at the infrastructure level. Your users connect to myapp.jiobase.com, which is not blocked. The proxy forwards requests to Supabase server-side, outside the reach of ISP blocks. No user-side configuration needed. For a deeper technical explanation, read our complete fix guide.

Frequently Asked Questions

My app works on my laptop but users in India are reporting it is broken. What is happening?
You are likely on a different ISP, using a VPN, or have custom DNS configured on your machine. Your Indian users on Jio, Airtel, or ACT Fibernet are hitting the DNS block. Their ISP is returning a sinkhole IP for *.supabase.co, so the connection times out. The fix is to route traffic through a reverse proxy like JioBase so the domain your users connect to is not blocked.
I have a mobile app already in production. How do I fix it for existing users?
If the Supabase URL is hardcoded in your app binary, you will need to push a new release to the App Store / Play Store. Until users update, they will be stuck on the blocked URL. For the future, store the Supabase URL in a remote config or environment variable so you can change it without an app update. Some teams use feature flags or remote configuration services to control the API base URL.
Will the proxy add latency to my API calls?
Minimal. JioBase runs on Cloudflare's edge network with 300+ locations worldwide. Requests are handled by the nearest edge node, adding typically 1-5ms of overhead. This is negligible compared to database query times and far better than the infinite timeout your users currently experience due to the block. Check our technical deep-dive for performance benchmarks.

Every minute your app is down, you are losing users

The block is not going away on its own. Deploy your own proxy in under 60 seconds and get your Supabase-powered app working for every user in India. No VPN required. No DNS changes for your users. One command.

npx create-jiobase — self-host on Cloudflare Workers for free

Self-host runs on Cloudflare Workers free tier (100k requests/day). No credit card required.

Sunith VS

Written and verified by

Sunith VS

Building tools that help Indian developers ship without ISP interference. Creator of JioBase.