Services Case Studies Architecture Review About Contact
Request a review →

Home / Guides / Why updates break things

Why does every update break something in my app?

The usual cause is not careless developers. It is how the app is put together. Five causes in plain words, how to tell, and what fixes it without a rewrite.

Rajesh Ayyavu, TenlyrUpdated 2026-11-03
Change the invoice page. What else is at risk?Illustrative
LoginBillingReportsInvoicesRolesEmails
Tangledeverything touches everything
RulesLoginBillingReportsInvoicesRolesEmails
Separatedparts talk through shared rules

Press the button to see what a single change can reach.

The short answer

If every update breaks something, the cause is usually not careless developers. The parts of your app have become tangled, so a change in one place quietly affects others, and nothing automatic catches the break before customers do. It is normally fixable step by step, without a rewrite: map the connections, add automatic checks to your most important flows, and keep each business rule in one place.

Not careless developers

The cause is usually how the parts are connected.

Tangled parts

A change in one place quietly reaches others.

Fix it step by step

Map, add checks, keep each rule in one place. No rewrite.

Five reasons fixes keep creating new bugs

Each card shows the pattern, what you notice, and what stops it.

LoginBillingReportsInvoicesRolesEmailsOne change reaches almost everything

1. Everything is connected to everything

In the early days it was faster to let every part of the app reach into every other part. Now one change ripples through many others, and the connections are not written down anywhere, so no one can predict what will break.

You see: You change the invoice page and the login stops working.
Fix: Draw what depends on what, then put clear boundaries between the main areas so a change stays inside its area.
DeveloperChecksnone hereCustomersbugCustomers find it, not a test

2. There are no automatic checks

Without automated tests, the only way to know something broke is for a person to click through the app or for a customer to complain. As the app grows, nobody has time to check everything by hand.

You see: Release day means someone clicking through the app for an hour, and still missing things.
Fix: Add automatic tests to the most important flows first: sign-up, login, payment and the core action customers pay for.
The same discount rule, copied five timesCart10%Invoice10%Email10%Admin10%Export15%one copy missed

3. The same rule lives in several places

The discount rule, the permission check and the tax calculation get copied into several screens. Someone updates four copies and forgets the fifth.

You see: A discount is right on the pricing page and wrong on the invoice.
Fix: Put each business rule in one place so a change happens once.
Big release40 changes shipped togetherWhich one broke checkout?Small releases: the culprit is obvious

4. Releases are big and rare

When two weeks of changes go out together, it is hard to tell which one caused the problem, and hard to undo only that one.

You see: Release notes run to 40 items and nobody knows which one broke checkout.
Fix: Release smaller and more often, with a simple way to switch a feature off or roll back.
PriyaBillingDeploysKeysDataReportsEverything routes through one person

5. Only one person understands the system

If one developer holds the whole picture in their head, every change depends on them remembering everything. When they are busy or leave, bugs multiply.

You see: “Only Priya can touch billing.”
Fix: Write down the key decisions, add a second reviewer on risky changes, and make the app easy to run and deploy for any new developer.

Is it your developers, or the system?

The honest answer is usually the system. The pattern tells you which.

Points to the system

  • The same kind of bug keeps returning, whoever fixes it
  • Nobody can say what a change will touch
  • Bugs cluster in the same few areas of the app
  • Even careful developers need long manual checks

Points to people or process

  • One person’s changes cause most of the problems
  • Changes go out with no second pair of eyes
  • Agreed steps, like testing before release, are skipped
  • The team has no time or permission to fix root causes
A design problem needs a design fix. A process problem is cheaper to fix, and worth fixing first.

Do you need a rewrite?

Almost never as a first step. It takes months, freezes new features and recreates the tangle if the causes are not fixed.

Rarely the answer when…

  • The product works and customers use it every day
  • The problems are concentrated in a few areas
  • The data design still fits your business
  • You can still run and deploy the app easily

May be worth considering when…

  • The technology is no longer supported or you cannot hire for it
  • The core data design cannot support what your business now does
  • Security problems are built into the foundation
  • Nobody can run, test or deploy the app reliably any more

Even when a rewrite is justified, replacing one part at a time while the product keeps running is usually safer than switching everything at once.

Your situation

Early product, under about 1,000 users

Do not over-engineer. Add automatic checks to sign-up, payment and your core action now, and keep each business rule in one place. Cheap today, expensive to retrofit later.

Growing SaaS

Releases slow down as customers ask for more. Start with checks around billing and permissions, then split large releases into smaller ones you can undo.

Your developer left

Get the basics written down before anyone changes anything: how to run the app, how it is deployed, where passwords and keys live, and which outside services it uses.

Built with AI tools

AI tools write code fast but rarely add tests or clear boundaries. Add checks on your key flows and have someone review data access and security before adding features.

What actually fixes it, in order

  1. Map how the parts connectDraw what depends on what. The tangled areas become obvious.
  2. Add automatic checks to the most important flowsSign-up, payment and the core action your customers pay for.
  3. Put each rule in one placeSo a change happens once.
  4. Release smaller and more oftenWith an easy way to roll back.
  5. Write down the key decisionsSo the knowledge is not stuck in one person’s head.

You do not need all five at once. Start where bugs hurt customers most. Ask your team this week for: a diagram of the main parts, a list of what the automatic checks cover, how a release goes out and how to undo it, and where pricing and permission rules live.

A quick self-check

Four honest questions. Nothing is stored.

Can you release on a Friday without worrying?

Would you know within an hour if checkout broke?

Could a new developer safely change the billing code in their first month?

Do the same bugs keep coming back?

Answer the four questions to see what they suggest.

Keep reading

Rajesh Ayyavu

Written by Rajesh Ayyavu, founder and software architect at Tenlyr. He reviews SaaS products and fixes backend, database and AI problems. Last updated 2026-11-03. LinkedIn

Common questions

Is it my developers' fault?

Usually not. Repeated breakage is normally a sign of how the system is organised, such as tangled parts, no automatic checks and rules copied into many places. It is rarely about effort or skill. The exception is when one person's changes cause most of the problems, which points to missing review and process rather than the code.

Do we need to rewrite the app?

Rarely. Most apps can be untangled step by step while they keep running. A rewrite is worth considering only when the technology is no longer supported, the core data design is wrong for your business, or security problems are built into the foundation. Even then, replacing one part at a time is usually safer than starting again.

How long does it take to fix?

It depends on the size of the app and how tangled it is. Often the first improvements, such as automatic checks on sign-up, payment and your main customer action, can be in place within a few weeks. Untangling the whole app is gradual and happens alongside normal work.

How much will it cost?

It depends on the app, so we agree a written scope first. The cheapest first step is an independent review that finds the few areas causing most of the breakage. You then spend on those areas instead of on everything, and you can show the report to any developer you choose.

Why didn't this happen when we started?

With a small app, one person could keep everything in their head and a quick click-through caught most mistakes. As the app and the team grew, that stopped being possible, but the habits stayed.

Will adding automated tests fix it?

They are the biggest single help, but only if they cover the flows that matter and run before every release. Tests added everywhere without a plan are slow to write and easy to ignore. Start with the five to ten flows your customers cannot live without.

My app was built with AI tools like Lovable, Bolt or Cursor. Is that the problem?

These tools produce working code quickly, but they rarely add automatic checks, clear boundaries or security reviews. That is fine for a first version. Once real customers rely on it, add checks around sign-up, payment and data access before adding more features.

Every release feels like a gamble?

Take the free 30-question SaaS health checklist to see where the risk is, or request an Architecture Review. Rajesh replies personally within 2 business days.