Uptime monitoring for Supabase apps
Supabase is your backend. SitePulse monitors the application on top of it — from the outside, exactly as your users would. Catch database connection failures, crashed edge functions, broken migrations, and deploy regressions before a user files a bug report. Free for 5 monitors.
What Supabase's status page doesn't cover
Supabase runs its own status page (status.supabase.com) that monitors their infrastructure. But it only tells you when Supabase is down. Your app can fail for dozens of reasons that are invisible to Supabase:
- A migration breaks RLS policies and every authenticated request 403s.
- A deploy introduces a bad environment variable and your app 500s on startup.
- A Supabase Edge Function crashes due to a code bug, not infrastructure.
- Your free-tier Supabase project auto-pauses due to inactivity.
- A connection pool limit is hit and new requests hang or timeout.
SitePulse probes your public URL every 1–5 minutes from outside your stack — exactly like a real user. Those failures show up immediately.
What to monitor on a Supabase app
Your app's main URL
Start here. Monitors your full stack — Next.js/Remix/SvelteKit app, Supabase client initialization, and whatever your homepage loads. Catches most deploy regressions within one probe interval.
/api/health endpoint
Add a lightweight route that queries Supabase (SELECT 1 or a small row fetch) and returns 200 or 503. Now SitePulse catches database connection failures and project pauses, not just app-level crashes.
Auth endpoints
If your app has a /api/auth/... route or uses Supabase Auth callbacks, monitor a lightweight ping against it. Auth failures are often the first casualty of a bad env variable or a Supabase project issue.
Edge Functions
Any Edge Function with a public HTTP endpoint can be monitored directly. Catches function crashes, cold start failures, and environment variable misconfigurations that don't show up in Supabase's infrastructure status.
Storage endpoints
If your app serves images or files from Supabase Storage, monitor a known public file URL. Storage outages or misconfigured bucket policies will break your app's UX silently without any app-level error.
Public status page
Enable SitePulse's free status page. When a Supabase incident does happen and your app is affected, send customers to your status page instead of leaving them guessing.
Adding a /api/health endpoint to your Supabase app
In a Next.js App Router project, create src/app/api/health/route.ts:
import { createClient } from "@supabase/supabase-js";
import { NextResponse } from "next/server";
export async function GET() {
try {
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!
);
const { error } = await supabase
.from("your_table")
.select("id")
.limit(1);
if (error) throw error;
return NextResponse.json({ ok: true });
} catch {
return NextResponse.json(
{ ok: false },
{ status: 503 }
);
}
}Point SitePulse at https://yourapp.com/api/health. Now if your Supabase connection is broken for any reason — wrong URL, paused project, exhausted connections — you'll find out within one probe interval.
Set it up in 60 seconds
- Sign up — free, no credit card.
- Add your app URL (Vercel, Railway, Render, or custom domain).
- Optionally add
/api/healthif you've built one. - Check interval: 5 min on Free, 1 min on Pro ($9/mo).
- Email alert fires the moment any monitor goes red.
What you get
1-minute checks
On Pro plan ($9/mo). Free plan checks every 5 minutes — plenty for side projects and early-stage SaaS.
SSL expiry alerts
Email 14 days before your TLS certificate expires. Supabase custom domains don't manage renewal for you.
Public status page
Free on every plan. Custom slug, shareable URL, 30-day uptime history your users can bookmark.
Add monitoring before your next Supabase deploy
5 monitors, 5-minute checks, email alerts, public status page — free forever. No credit card.
Frequently asked questions
Supabase has its own status page — do I still need external monitoring?+
Yes, for different reasons. Supabase's status page (status.supabase.com) tells you when Supabase's infrastructure is degraded. Your app's uptime monitor tells you when your specific application is failing — which can happen even when Supabase is fully operational, due to broken migrations, misconfigured RLS policies, crashed edge functions, or bad deploys. The two are complementary, not substitutes.
What's the right URL to monitor for a Supabase app?+
Your app's public URL (custom domain or the platform URL from Vercel, Railway, Render, etc.), not your Supabase project URL. You're monitoring the application that talks to Supabase, not Supabase itself. Optionally, add a /api/health endpoint in your app that runs a cheap Supabase query (SELECT 1 or a row count) and returns 200 or 503 based on the result.
How do I build a /health endpoint that tests my Supabase connection?+
In Next.js, create src/app/api/health/route.ts. Inside, create a Supabase client and run a lightweight query: const { error } = await supabase.from('your_table').select('id').limit(1). Return 200 if no error, 503 if there is one. SitePulse monitors this endpoint — now if your database connection is broken (wrong connection string, Supabase project paused, RLS misconfiguration), you'll find out within one probe interval.
Can SitePulse monitor Supabase Edge Functions?+
Yes — if your Edge Function has a public HTTP endpoint, add it as a monitor. SitePulse makes an HTTP request to the function URL and checks the response status. If the function crashes, times out, or returns an unexpected status code, you get an email alert. Combine this with a keyword check if your function returns a specific response body.
What about monitoring Supabase Realtime or Storage?+
Build thin health endpoints in your app that exercise those features and return 200 or 503. For Realtime: a route that creates a channel connection and immediately verifies. For Storage: a route that fetches metadata for a known small file. Monitor those routes. Don't try to directly monitor the Supabase Realtime or Storage websocket/S3 endpoints — that's what Supabase's own monitoring handles.
My Supabase project gets paused on the free plan. Will I get an alert?+
Yes. When a Supabase free-tier project is paused after inactivity, any request to your app that touches the database will fail — your app will typically return a 500 or hang. SitePulse catches that and emails you within one probe cycle. The fix is to either upgrade to Supabase Pro (which disables auto-pause) or set a keep-alive cron job. The alert is your first signal that something is wrong.