Is Supabase Down? How to Check Supabase Status Right Now

Statusfield Team
9 min read

Supabase database unreachable? Auth failing? Learn how to check if Supabase is down, what breaks during an outage, how to protect your app's data layer, and how to get instant alerts.

Supabase has rapidly become the open-source Firebase alternative of choice for developers who want a real PostgreSQL database with built-in auth, storage, and real-time subscriptions — without the operational overhead of managing infrastructure. When you build on Supabase, your entire backend stack can depend on a single platform: the database, authentication, file storage, and edge functions. That makes Supabase outages uniquely impactful.

Here's how to diagnose a Supabase outage, understand which components are affected, and build your integration to be resilient when Supabase has issues.

Is Supabase Down Right Now?

Check these sources in order:

  1. Statusfield — Supabase status — real-time monitoring, updated every 5 minutes.
  2. Supabase's official status pagestatus.supabase.com shows component-level status by region.
  3. Twitter/X — search Supabase down or Supabase not connecting sorted by Latest.
  4. Supabase Discord — the official Supabase Discord is active and surfaces community-reported issues quickly.

What Breaks During a Supabase Outage

Supabase is a platform of interconnected services. Each can degrade independently — understanding which one is affected helps you assess the true impact on your application.

ComponentWhat it handlesImpact when down
Database (PostgreSQL)Core Postgres databaseAll queries fail; app data unavailable
AuthUser signup, login, JWT issuanceUsers can't sign in or sign up; sessions fail
StorageFile uploads and downloadsFile operations fail; uploaded assets unavailable
RealtimeWebSocket subscriptions for live dataLive data updates stop; subscriptions disconnect
Edge FunctionsServerless functions on the edgeFunction invocations fail or time out
API (PostgREST)Auto-generated REST API from schemaREST API calls fail; Supabase client queries break
DashboardSupabase web interfaceCan't manage projects but apps may still work
StudioTable editor, SQL editorDatabase management unavailable

Critical insight: Supabase's Auth and Database are tightly coupled. An Auth outage typically means both login and database Row Level Security (RLS) policies fail — even direct database connections that bypass PostgREST may be affected if your app uses JWTs to derive the request.jwt.claims variable in RLS policies.

The Firebase-Alternative Reality

Teams that choose Supabase often do so specifically to avoid managing infrastructure. This simplicity is a feature — until there's an outage, at which point the tradeoff becomes visible:

No direct infrastructure access. Unlike self-hosted Postgres where you can SSH into the server during an incident, Supabase-managed databases are fully abstracted. Your recovery path is entirely dependent on Supabase's platform team.

Regional architecture. Supabase projects are created in specific regions (us-east-1, eu-west-1, ap-southeast-1, etc.). Incidents are often regional — a problem in us-east-1 may not affect projects hosted in ap-southeast-1. Always check status with your specific region in mind.

Connection pooling limitations. Supabase uses PgBouncer for connection pooling. Under load or during partial database incidents, the connection pool can exhaust before the database itself fails — causing connection timeouts that look like an outage from the application side.

Real-time subscription fragility. Supabase's Realtime component, built on Phoenix Channels and Postgres replication, is powerful but has historically been one of the more volatile components. Apps heavily dependent on real-time subscriptions for core functionality are more exposed to Supabase incidents than apps that use only the REST API.

Building Supabase-Resilient Applications

Connection Pooling and Timeout Configuration

Configure your Supabase client with appropriate timeouts. The default settings can leave your application hanging during a partial outage:

import { createClient } from '@supabase/supabase-js';
 
const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
  {
    db: {
      schema: 'public',
    },
    auth: {
      persistSession: true,
      autoRefreshToken: true,
    },
    global: {
      fetch: (url, options = {}) => {
        return fetch(url, {
          ...options,
          signal: AbortSignal.timeout(10000), // 10 second timeout on all requests
        });
      },
    },
  }
);

Retry Logic for Database Queries

For server-side operations using the Supabase client or direct pg connections:

async function queryWithRetry<T>(
  queryFn: () => Promise<{ data: T | null; error: any }>,
  retries = 3,
  backoffMs = 1000
): Promise<T> {
  for (let attempt = 0; attempt < retries; attempt++) {
    const { data, error } = await queryFn();
    
    if (!error) return data as T;
    
    // Distinguish transient errors from permanent ones
    const isTransient =
      error.code === 'PGRST504' || // Gateway timeout
      error.message?.includes('connection refused') ||
      error.message?.includes('Connection terminated') ||
      error.status === 503 ||
      error.status === 504;
    
    if (isTransient && attempt < retries - 1) {
      await new Promise(r => setTimeout(r, backoffMs * 2 ** attempt));
      continue;
    }
    
    throw error;
  }
  throw new Error('Query failed after maximum retries');
}
 
// Usage
const users = await queryWithRetry(() =>
  supabase.from('users').select('*').limit(10)
);

Handling Auth Failures Gracefully

When Supabase Auth is degraded, your users can't log in. Design your UX to handle this without generic errors:

async function signInWithGracefulError(email: string, password: string) {
  try {
    const { data, error } = await supabase.auth.signInWithPassword({
      email,
      password,
    });
    
    if (error) {
      // Distinguish auth failures from infrastructure issues
      if (error.status === 500 || error.status === 503) {
        return {
          error: 'Our authentication service is temporarily unavailable. ' +
                 'Please try again in a few minutes.',
          isInfrastructure: true,
        };
      }
      
      // Normal auth error (wrong password, unconfirmed email, etc.)
      return { error: error.message, isInfrastructure: false };
    }
    
    return { data };
  } catch (networkError) {
    return {
      error: 'Unable to reach authentication service. Check your connection and try again.',
      isInfrastructure: true,
    };
  }
}

Realtime Subscription Reconnection

Supabase's Realtime subscriptions disconnect during outages. The client library handles basic reconnection, but you should verify your app handles state recovery:

import { RealtimeChannel } from '@supabase/supabase-js';
 
let channel: RealtimeChannel;
 
function subscribeToOrders(onUpdate: (payload: any) => void) {
  channel = supabase
    .channel('orders-changes')
    .on(
      'postgres_changes',
      { event: '*', schema: 'public', table: 'orders' },
      onUpdate
    )
    .subscribe((status) => {
      if (status === 'SUBSCRIBED') {
        console.log('Realtime subscription active');
        // Re-fetch latest data to fill any gap during reconnection
        fetchRecentOrders();
      }
      if (status === 'CLOSED' || status === 'CHANNEL_ERROR') {
        console.warn('Realtime subscription lost, will reconnect...');
      }
    });
}
 
// Call fetchRecentOrders() on reconnect to fill the gap
// that occurred while the subscription was disconnected
async function fetchRecentOrders() {
  const { data } = await supabase
    .from('orders')
    .select('*')
    .order('created_at', { ascending: false })
    .limit(50);
  
  if (data) syncOrdersToLocalState(data);
}

Direct PostgreSQL as a Fallback

Supabase exposes a direct PostgreSQL connection string (not just PostgREST). For server-side code, using pg or an ORM directly can bypass PostgREST issues:

import psycopg2
import os
 
# Direct connection bypasses PostgREST API issues
conn = psycopg2.connect(
    os.environ['SUPABASE_DB_URL'],  # Direct Postgres URL from Supabase dashboard
    connect_timeout=10,
    keepalives=1,
    keepalives_idle=30,
)

This won't help if the underlying PostgreSQL instance is down, but it bypasses API gateway and PostgREST-layer issues.

Supabase vs. Self-Hosted Postgres: The Outage Tradeoff

The managed-vs-self-hosted debate often surfaces during outages. Here's the honest tradeoff:

  • Self-hosted Postgres gives you control and the ability to intervene during an incident — but you're responsible for uptime, backups, failover, and security patching.
  • Supabase handles operations for you, but you're dependent on their team's response during incidents.

For most teams, Supabase's uptime is excellent and the operational savings far outweigh the risk. But for truly mission-critical data — payment records, healthcare data, core transactional systems — consider whether a managed PostgreSQL service with stricter SLAs (AWS RDS Multi-AZ, Google Cloud SQL with HA) is more appropriate.

How to Get Instant Supabase Outage Alerts

A Supabase database outage is a full application outage for many teams. Every minute of downtime is visible to users. Proactive monitoring means you know about issues within minutes of them starting — not when your users start filing support tickets.

Monitor Supabase on Statusfield and get alerted the moment any Supabase component changes status. Statusfield checks Supabase's status every 5 minutes and routes alerts to email, Slack, or webhooks — so your engineering team has immediate context and can communicate proactively with users.

Start monitoring Supabase →


Frequently Asked Questions

Is Supabase down for everyone or just me?

Check status.supabase.com or Statusfield. Note that Supabase incidents are often regional — check for your project's specific region in the incident details. If both status pages show operational but your app has issues, try connecting to your database directly using a Postgres client (like psql or TablePlus) to isolate whether the issue is application-side or infrastructure-side.

My Supabase database connection is timing out — is Supabase down?

Check the Database component on Statusfield. Connection timeouts can occur from Supabase infrastructure issues, but also from connection pool exhaustion in your application (too many concurrent connections) or network path issues between your server and Supabase. Check your connection pool configuration and error logs before concluding it's a Supabase platform issue.

Supabase Auth is broken — users can't log in. What should I do?

Check the Auth component on Statusfield. If Auth is degraded, display a clear maintenance message to users — "Login is temporarily unavailable, we're working on it" — rather than a generic error. Users who are already logged in may still have valid sessions and can continue using the app if your app doesn't require re-authentication.

My Supabase Realtime subscriptions keep disconnecting — what's happening?

Check the Realtime component on Statusfield. Realtime is one of Supabase's more complex components and can have issues independently of the database. The Supabase client library will automatically attempt to reconnect — make sure your app re-fetches data on reconnect to fill any gap in events that occurred during the disconnection.

Is Supabase down right now?

Check the live status at statusfield.com/services/supabase for real-time Supabase status updated every 5 minutes. If there is an active incident, it will be listed with affected components and your project's region.

How do I get alerted when Supabase goes down?

Set up Supabase monitoring on Statusfield. You'll get instant notifications via email or webhooks the moment Supabase reports an incident — giving your team time to communicate proactively rather than reactively.

Will my data be safe during a Supabase database outage?

Yes. Supabase performs automated daily backups (with point-in-time recovery on Pro plans and above). A database outage means the service is temporarily unavailable — not that data is lost. When the incident resolves, your database returns to its last consistent state. For additional protection, consider using Supabase's PITR feature or exporting periodic backups to external storage.

Does Supabase have an SLA?

Supabase Pro plans include a 99.9% uptime SLA. The free tier has no SLA. Enterprise plans offer custom SLAs with higher uptime guarantees and dedicated support. Check Supabase's pricing page for current SLA details by tier.