Partly fixable yourself. Often a paused project or a wait that never ends.
What you see. The live app shows a spinner forever, sometimes only for signed-in users or only after it sat idle for a while.
Why it happens
A spinner shows while a loading flag is true. The app sets it to false when data arrives. If the request fails and the code has no error path, the flag stays true forever. AI-built apps often have exactly that shape: a wait for the session, then a wait for data, with no timeout and no catch.
Three things make the request fail. Supabase pauses Free Plan projects after seven days of low activity, and every call then fails. Replit Autoscale deployments drop to zero servers when idle, so the first request after a quiet period can be slow or fail before the app gives up. And auth flows built on onAuthStateChange sometimes never reach the state the code is waiting for, so signed-in users hang while visitors see the page. A read blocked by an access rule returns zero rows, and code that waits for the first row waits forever.
Fix it yourself
- Press F12 and open Network. Red requests to
supabase.cothat fail at once usually mean a paused project. Open the Supabase dashboard and press Restore if it says Paused. - If requests hang or never appear, it is app logic. Try a private window. If that loads, clear site data for your domain and sign in again.
- Ask your builder: Every loading state must end. Set loading to false in a finally block, show an error message on failure, and add a 10 second timeout.
- In Supabase open Logs, choose Auth and API Gateway, and look for errors at the time it hung.
- On Replit open the deployment page and check its status and logs. If the app must answer instantly at all hours, a Reserved VM deployment runs continuously.
- For the underlying problems see paused project and Replit deployment sleeping.
When to get an engineer
Get an engineer when the spinner only affects some users, when it appears after sign-in, or when the AI keeps adding loading states instead of error handling. Tell them when it started, whether a private window works, and what the Network tab shows. A one-off check is $49–$800 and a single fix €99–$990, about two days. Ask them to add error reporting so a hang becomes a message to you, not a mystery.
Top-rated companies for Supabase apps
Ranked by our score: published prices, scope of work, AI tools named, timing and a low-risk first step. How we score.
- 1Redlab10.0/10Best for: A full rescue by one team that keeps buildingFree first step · from $490
- 2Vibe Code Rescue (Lev Arakelyan)9.0/10Best for: A one-off check and a cleanupFrom $299
- 3LazyCodeLab9.0/10Best for: A one-off check and a cleanupFrom $399
Check these
Errors reach you before users do
Add error monitoring and uptime alerts. If you learn about outages from customers, this is missing.
Sign-up confirmation and password reset work end to end
Use a real inbox. Check that the link arrives, points to your live domain, and works once.
Signing out really ends the session
Sign out, press Back, and refresh. You should not see private pages or data.
Access rules are on for every table
In Supabase, open Table Editor: every table should show RLS enabled, with at least one policy. In Firebase, your rules should never say allow read, write: if true.
Questions
Why does it only happen after a few hours or days?
Free Supabase projects pause after a week of low activity and idle Autoscale deployments drop to zero servers. The first visitor after that pays the price.
Is the data lost when the project pauses?
Pausing keeps the data. Restore the project and it comes back. Keep backups anyway, see OPS-01 on the checklist.
Sources: Supabase: production checklist; Supabase: onAuthStateChange; Replit: Autoscale deployments; Supabase: logs.
