FlawPilot
From the blog

It Worked Yesterday: Why Live Websites Quietly Break Over Time"

Quick answer: websites break after launch even when nobody touches the code, because the code is only one part of a website. Certificates expire, linked pages disappear, editors upload new…

The FlawPilot TeamSecurity research1 Oct 20269 min read

Quick answer: websites break after launch even when nobody touches the code, because the code is only one part of a website. Certificates expire, linked pages disappear, editors upload new content, third-party scripts change, and browsers update themselves every few weeks. Each of these can break a page that was perfect on launch day. The fix is not to freeze your site. It is to keep checking it from the outside, on a schedule, long after the launch party is over.

In our last post, we looked at bugs that hide in the gap between your machine and a real visitor's. This one is about a different gap: the one between launch day and every day after it.

Most frontend developers treat launch as the finish line. Tests pass, the page ships, the ticket closes. But a website is not a finished painting. It is closer to a garden. Leave it alone long enough and things start to grow where they shouldn't, and wilt where they should be thriving.

In short: "nobody changed anything" is almost never true. Your code stayed the same, but the world around it didn't. Schedule regular checks of your live site, not just your pull requests.

Why a site breaks when nobody touches it

A modern website depends on a long list of things you don't control directly. Here is what a typical page leans on, and how often each part can change without a single commit from you:

What your page depends onWho controls itHow it changes
SSL certificateYour host or certificate providerExpires on a fixed date
Links to other pages and sitesOther teams and other websitesPages get renamed, moved, or deleted
Images and text in the CMSContent editors and marketingUpdated whenever someone publishes
Analytics, chat, and payment scriptsThird-party vendorsUpdated on the vendor's schedule
The visitor's browserBrowser makersAuto-updates every few weeks
Form delivery (email, CRM, webhooks)Various services and API keysKeys rotate, limits change, filters tighten

Your code is the one thing on this list that stays still. Everything around it keeps moving.

What quietly breaks after launch

1. The certificate that quietly expires

SSL certificates have an expiry date. Auto-renewal usually handles it, until a DNS change, a moved domain, or a billing issue stops the renewal from running. When that happens, visitors don't see a small error. They see a full-page browser warning telling them your site is not safe, and most of them leave.

How to catch it: check certificate expiry dates for every domain and subdomain you own, not just the main one. Get an alert at least two weeks before expiry, so a failed renewal is a calm fix instead of an emergency.

2. The links that rot

On launch day, every link works. A few months later, the blog post you linked to has moved, a partner has redesigned their site, and someone renamed a product page without adding a redirect. Nothing in your code changed, but now some of your links lead to a 404 page.

How to catch it: crawl your site regularly and check every internal and external link. When you rename or remove a page yourself, add a redirect from the old address at the same time.

3. The content your layout was never designed for

You built the page with neat, placeholder-sized content. Then a content editor uploads a 6000-pixel photo straight from a camera, pastes a heading twice as long as you planned for, or adds a table to a column meant for short paragraphs. The layout you tested is not the layout visitors see anymore.

How to catch it: design components for the worst realistic content, not the demo content. Set size limits and automatic resizing for image uploads. Then check key pages after big content updates, not only after code deploys.

4. The third-party script that changed under you

Chat widgets, analytics tags, cookie banners, embedded forms, and payment buttons are loaded from someone else's servers. When the vendor ships an update, your page gets it too, without review. A new version can cover your "Buy" button, slow your page down, or throw an error that stops your own scripts from running.

How to catch it: keep a list of every third-party script on your site and who owns it internally. Make sure your core features still work if any one of those scripts fails to load, and watch for new console errors that you didn't cause.

5. The browser update that retired a feature

Browsers update themselves constantly, and every so often they change the rules. Autoplay policies tighten, third-party cookies get restricted, older APIs get deprecated, and CSS behaves slightly differently. A feature that worked for years can stop working for visitors on the newest browser version first.

How to catch it: keep an eye on deprecation warnings in your browser console, since browsers usually warn before they remove something. Re-test your main flows every few months, even if nothing in your code changed.

6. The form that stopped delivering

This one is especially painful because it looks fine from the outside. The visitor fills in the contact form, sees "Thanks, we'll be in touch," and waits. Meanwhile the message never arrives, because an API key was rotated, an email provider hit a sending limit, or a spam filter started catching everything from your form.

How to catch it: submit your own forms on a schedule and confirm the message actually arrives where it should, in the inbox or CRM, not just that the success message appears.

7. The slow creep in page weight

No single change makes a site slow. It happens gradually: a new tracking tag for a campaign, a bigger hero video, an extra font weight, a new widget from a vendor. Each addition looks harmless on its own. Six months later, the page that loaded quickly on launch day feels sluggish on a phone.

How to catch it: measure page speed on a schedule and compare against your launch numbers, not against yesterday. Agree on a rough budget for page weight, so every new addition has to earn its place.

8. The SEO basics that drift

On launch day, every page had a title, a description, and a sensible heading. Since then, new pages have been added in a hurry, a "noindex" setting was left on after a staging test, and the sitemap still lists pages that no longer exist. Search engines notice these things before you do.

How to catch it: audit titles, meta descriptions, headings, and indexing settings across the whole site regularly, not just on pages you are currently working on. New pages deserve the same checks as launch pages.

A simple post-launch routine

You don't need a dedicated maintenance team to stay ahead of these. A small, regular routine covers most of it:

How oftenWhat to check
Every day (automated)Site is up, certificate is valid, no new console errors on key pages
Every weekBroken links, form delivery, page speed on your most visited pages
Every monthThird-party script list, SEO basics on new pages, layout on real devices
Every quarterMain flows in the latest versions of Chrome, Safari, and Firefox

The daily and weekly checks are the ones people skip, because they are repetitive and usually find nothing. That is exactly why they are worth automating.

Where automated scanning fits

A human is the best judge of whether a page still makes sense. A machine is the best judge of whether 400 links still work, whether a certificate is about to expire, and whether a new console error appeared overnight. Splitting the work that way means nobody has to remember to check everything by hand.

FlawPilot scans your live site from the outside and explains what it finds in plain language, so the day something breaks is the day you hear about it, not the day a customer emails you.

Frequently asked questions

Because your site depends on things outside your code: certificates, other websites, content in your CMS, third-party scripts, and visitors' browsers. Any of those can change on their own schedule. Your code staying the same doesn't mean the page visitors see stays the same.

Final Thoughts

Launch day is the best your website will ever look without help. From that moment on, certificates count down, links age, content grows, and browsers move forward. None of that is a failure of your code. It is just what happens to anything that lives on the web.

The teams that stay ahead of it aren't the ones who never have bugs. They are the ones who find out first. Put a few checks on a schedule, automate the repetitive ones, and "it worked yesterday" becomes something you say while fixing a small issue, not while explaining a big one.

How FlawPilot helps

FlawPilot finds security and quality issues in your AI-built app and shows you how to fix them. It checks your deployed site across security, performance, infrastructure, and SEO, and scans your source code for vulnerabilities, hardcoded secrets, and vulnerable dependencies.

Every finding is prioritized and explained in plain English, with the actual fix: the configuration change, DNS record, security header, or code change needed. For supported findings, AI-powered guidance adds step-by-step instructions and suggested code fixes.

Connect your Git provider to scan your repository alongside your live site, so application findings, code vulnerabilities, secrets, and dependency issues all land in one place.

It fits your existing workflow too: a REST API for scores and findings, an embeddable security badge, and an MCP server so tools like Claude, Cursor, or ChatGPT can read your findings and help you work through them.

The boundaries are clear: the public website scan reads only publicly accessible signals, with no agent or credentials required, and source-code scanning is opt-in and read-only. Fixes are never applied or merged without your review.

Website MaintenancePost Launch BugsBroken LinksSSL Certificate ExpiryWebsite MonitoringFrontend Bugs

Verify your AI-generated app is production-ready.

117 security checks in 60 seconds - free, no account needed.

Scan one page

Enter a URL - no account, no install.

Run a Site Health check

Requires a free account

Crawls every page we can reach and scores each one, so a slow template deep in the site stops hiding behind a healthy homepage.

Scan your source code

Requires a free account

Connect a Git provider to check for vulnerabilities, secrets, and risky dependencies.

Featured on