Vibe Code Rescue

My app worked yesterday and I changed nothing. Now it is blank or broken.

You built an app with Lovable, Bolt, v0, Replit, or Cursor. It worked fine yesterday. Today it is blank, erroring, or half dead, and you did not touch it. Here is the key insight: if you did not deploy, your code did not change. Something your app depends on changed underneath it. That short list of dependencies (databases, keys, quotas, third party APIs, domains, the platform itself) is exactly what this page walks through, with a two minute check for each.

First: prove it is real, not your browser

Before blaming anything, rule out a cache red herring. Open the site in an incognito or private window, or hard refresh with Ctrl+Shift+R (Cmd+Shift+R on Mac). Browsers, and especially service workers (a background script that caches a copy of a site for offline use), can serve you a stale dead version while the live site is fine, or the reverse. If the app works in incognito, the app is fine: in devtools (press F12) go to Application, then Service Workers, click Unregister, and reload. If it is broken in incognito too, it is real. Keep reading.

Find the culprit in 5 minutes

  1. Open the broken page in incognito. Press F12 to open devtools.
  2. Click the Console tab. Red text here names what failed first. Screenshot it.
  3. Click the Network tab and reload the page. Look for the first request shown in red, or with a status of 401, 403, 402, 429, or 5xx.
  4. Click that request and read the domain it talks to: supabase.co, neon.tech, some API, your own backend. Whoever it talks to is your suspect.
  5. Match the suspect to the causes below. A database domain points to cause 1, a 401 or 403 to cause 2, a 402 or 429 to cause 3, a strange third party domain to cause 4.

Cause 1: your free tier database got paused

The single most common cause of "worked yesterday, blank today" with no changes. Supabase pauses free tier projects after about a week without activity. Replit and Neon free databases can also be suspended or disabled. A paused database refuses every request, so an app that loads its content from the database renders as a blank page or an endless spinner.

Cause 2: a key or token expired or was rotated

Keys are the passwords your app uses to talk to other services, and several kinds die on a timer with no action from you:

Cause 3: you hit a quota or billing cliff

Free tiers have monthly limits: emails sent, serverless function invocations, database rows, bandwidth. Two flavors of sudden death: you ran out mid month (things break on a random Tuesday), or a limit reset and a misconfiguration surfaced on the 1st. Also check the boring one: the card on file expired and the provider downgraded or froze the account. Look for status 402 (payment required) or 429 (too many requests) in the Network tab, then open the billing or usage page of the service that returned it. Most providers email a warning first, so search your inbox for the provider's name.

Cause 4: a third party service changed under you

AI builders love wiring in external APIs, and those APIs change: a response format shifts, an endpoint moves, a formerly open API now requires a key. Your code did not change, but the answer it gets back did, and the app crashes parsing it. The Console tab usually shows an error right after a request to the third party domain. Fix options: check that service's changelog or docs for the new format, or ask your AI builder to update the integration against the current API.

Cause 5: your domain or certificate expired

If the site shows a registrar parking page, "this site can't be reached", or a browser security warning instead of your app, the domain renewal lapsed or the SSL certificate (the padlock that makes https work) expired. Log into wherever you bought the domain and check its expiry date and that auto renew is on with a working card. Note the hosted subdomain often still works (your-app.vercel.app, your-app.lovable.app) while the custom domain is dead, which confirms this cause instantly.

Cause 6: the platform itself broke or migrated

Sometimes it is genuinely not you. Check the status pages before deep debugging: status.supabase.com, replit.status.page, vercel-status.com, and the status page of whatever hosts you. Beyond outages, platforms run migrations that break old projects: a recent example class is Replit migrating databases to Neon, which left apps on legacy databases unable to connect until their owners migrated. Search the platform's changelog or forum for the date your app died.

Cause 7: it only looks broken (cache and service workers, again)

If everything above checks out and the app works in incognito or on your phone but not in your usual browser, you are the only person seeing it broken. Unregister the service worker as described at the top, clear site data (devtools, Application, Storage, Clear site data), and reload. Always run the incognito test first on any "suddenly broken" report from a user too. It takes ten seconds and saves an hour.

Still stuck?

Run the instant diagnosis. Paste your public repo URL into the form and an automated clean-room check reports what is broken: install, build, missing env config, and render, with the exact blocker named, in minutes, free. Since this class of breakage usually lives in a dashboard rather than the repo, also paste your Console error and the first failing request from the Network tab into the issue and I will look the same day. Private repo or zip? Email works too.

Get an instant free diagnosis

Or email me instead. Fixes with 24 hour turnaround start at $95. Prefer self-serve? The $5 instant diagnosis on Apify checks your repo privately, no public issue needed.