Stages / Stage guide

My app broke right after launch. What do I do first?

Matt Turley, Continuum. Updated November 5, 2026.

For founders in the hours or days after a launch, a press mention or a first burst of real users, with an app that is failing in front of people.

The short answer

My app broke right after launch. What do I do first?

Stop the damage first, diagnose second. Roll back to the last working deployment if you can, turn off the feature or signup that is failing, rotate any key that may have leaked, and tell affected users plainly. Then read the logs for the first error, fix that one thing and add the monitoring you did not have.

What is really going on

Launch day is the first time an app meets real users, real volume and real mistakes. Everything that was never tested because there was one user (you) is tested at once: concurrency, rate limits, free tiers, email limits, forms filled in by people who do not think like you.

The temptation is to start fixing the first thing you see. The better order protects people before it fixes code. Stop what is causing harm, preserve evidence, communicate, and only then debug. A fast rollback that restores service is almost always better than a clever fix made under pressure.

The second mistake is fixing symptoms in sequence. A launch crisis usually has one or two root causes (a connection limit, a missing secret, an unbounded loop calling a paid API) that show up as ten different errors.

What usually breaks at launch, most common first

  1. The database runs out of connections

    How to tell Errors such as "too many connections" or timeouts that start as traffic rises and clear when it drops. Serverless functions each open their own connection, and a direct database connection allows few.

    The fix Switch application traffic to the provider's pooled connection string, reduce the connections each function holds and add an index for the slow query that holds them open.

  2. A third-party limit is hit

    How to tell Errors with status 429, or failures that begin at a round number. An AI model API, an email provider or a maps service has a rate or spend limit on the account you are using.

    The fix Raise the limit or move to a paid tier, add retries with backoff and a queue for the non-urgent calls, and show users a clear message rather than a blank failure.

  3. Costs run away

    How to tell The provider dashboard shows spend climbing faster than signups. A loop, a missing cache, a bot hitting an unauthenticated endpoint or users with no per-account limit can multiply API calls.

    The fix Set spend caps and alerts at the provider, add per-user rate limits, and require login before any call that costs money.

  4. Signup or checkout fails for strangers

    How to tell Your own accounts work and new ones do not. Confirmation emails do not arrive, OAuth redirects are wrong, a payment webhook is not firing, or row level security blocks a new user's first write.

    The fix Reproduce as a brand-new user on production, fix that path first, and contact people who failed so they can finish. Our symptom pages cover webhooks, OAuth, email and RLS.

  5. Abuse and spam arrive within hours

    How to tell A flood of fake signups, bot submissions on forms, scraping, or an open endpoint used by someone else's script.

    The fix Add rate limiting and bot protection on signup and forms, require email confirmation, and close any endpoint that does not need to be public.

  6. Nobody knows what is failing

    How to tell You learn about errors from users. There is no error tracking, no uptime check and the only logs are in the host's dashboard.

    The fix Add error tracking and an uptime check today. They take under an hour, and they turn the next incident from a surprise into an alert.

How we diagnose it

  1. Stop the damage. Roll back to the last good deployment, disable the failing feature or pause signups, and rotate any credential that may be exposed. Restoring service comes before understanding.
  2. Tell people. Post a short, honest status for affected users: what is wrong, what you are doing and when you will update. Silence reads as negligence.
  3. Find the first error. Read the production logs from just before the first user report. The earliest error is the cause; the later ones are fallout.
  4. Find the shared root cause. Group the errors by what they have in common: one dependency, one table, one endpoint, one limit. We usually find one or two causes behind many errors.
  5. Fix, verify as a stranger, then monitor. Ship the smallest fix, test it as a new user on production and add the alert that would have told you first.

What fixing it changes

  • Service is restored and the failing path works for a brand-new user on production.
  • Connection, rate and spend limits are understood and have headroom, with alerts before they are hit.
  • Error tracking, uptime checks and a status channel exist.
  • Abuse paths are closed with rate limits and confirmation steps.
  • People who failed during the incident are contacted and helped to finish.

When you do not need us

If one clear cause explains everything and a rollback fixed it, you may be done once you add monitoring. Bring in help when the app is still failing, when you cannot tell whether data was exposed, when money is being lost or when you have fixed three things and a fourth appeared.

Your next step

A Ship Fix is the fixed-scope job for an app that was built fast and keeps breaking: stop the bleeding, make deploys boring and hand it back documented. A Ship Check reads the code first and tells you which end of the range you are on.

Ship Fix, $4,000 to $15,000: A fixed-scope engagement for an app that was built fast and keeps breaking: stop the bleeding, make deploys boring, untangle the core, and hand it back documented. The quote is fixed before work starts. Or: Get a Ship Check, $299.

See Ship Fix, $4,000 to $15,000 →See all services and prices →
FAQ

Straight answers

Should I roll back or fix forward?
If real users are failing right now and you have a known good deployment, roll back first. You can debug the bad build in a preview deployment without the pressure. Fix forward only when the fix is small, understood and you can verify it quickly.
How do I know whether data was exposed?
Check access logs, review which keys were public and whether row level security was on. If you cannot establish that, treat it as exposed: rotate credentials and take advice on notifying users, which can be a legal obligation depending on the data and where your users are.
Do I need to tell my users?
Tell them about outages and failed signups promptly and plainly. If personal data may have been exposed, there may be a legal duty to notify, depending on jurisdiction and the data involved. Take proper legal advice for that part.
Keep reading
Why is my app a white screen after a Vercel deploy?By symptom. A white screen after deploy means the page JavaScript failed or its files did not load. How to read the console, the usual causes, and the fix for each.Why is my Stripe webhook not firing?By symptom. Stripe is usually sending the event and your server is refusing it. How to read the delivery log, the six usual causes, and the fix for each.Why are my signup and confirmation emails not arriving?By symptom. Confirmation, magic link and receipt emails that never arrive: test-sender limits, unauthenticated domains, spam filters, link scanners, and how to check each.What breaks in an AI wrapper app before it scales?By vertical. Apps built on top of an LLM API: exposed provider keys, unbounded spend, no per-user limits, prompt injection, user data in prompts and serverless timeouts.What breaks in an AI-built app after Demo Day?By stage. After demo day or investor attention: a signup spike, technical questions and an app built to be demoed. What breaks first and what to do this week.Is my AI-built app ready for an investor demo?By stage. The week before an investor demo: what fails live, how to rehearse on the production URL, and what to fix first. A checklist for AI-built apps.
Sources
  1. 1. Vercel: Instant Rollback, Vercel: Promoting a previous deployment back to production.
  2. 2. Supabase: Connecting to your database, Supabase: Pooled versus direct connections and connection limits.
  3. 3. RFC 6585: Additional HTTP Status Codes, IETF: Defines status 429 Too Many Requests and the Retry-After header used for rate limits.
My app broke right after launch. What do I do first?