MVP & Product11 min read

When to rebuild your MVP — and when the rewrite is a mistake

A founder's honest framework for deciding when to rebuild your MVP, when to refactor instead, and the five rewrite traps that quietly kill startups.

MT
M H Tawfik
Founder · SoftWebGrove

There’s a quiet moment in most startups, somewhere between 12 and 18 months in, where the founder looks at the MVP and thinks: "we need to rebuild this." Sometimes that instinct is correct. More often it’s the most expensive mistake the company will make before Series A.

This is the framework we walk founders through before they sign off on a rewrite. It’s opinionated because the consequences of getting this wrong are usually six months of lost momentum and an investor conversation that becomes much harder.

A rewrite is the most attractive thing in software because it lets you imagine all the problems gone — while you imagine none of the new ones it will introduce.

1. What people actually mean by “rebuild”#

The word rebuild hides three very different decisions. Conflating them is where most rewrite disasters start.

Word people useWhat they actually mean
RefactorImprove internal structure without changing behaviour.
RewriteReplace a module or layer while keeping the contract.
RebuildStart a new codebase. New stack, new architecture, new everything.

These are not equivalent. A refactor takes days. A rewrite takes weeks. A rebuild takes six months to two years — and that’s when it succeeds.

If your "we need to rebuild" instinct can be satisfied by a refactor or a targeted rewrite, that’s almost always the right answer. If it can’t, you need to seriously interrogate why.

2. The five signals that justify a rebuild#

A rebuild is justified when at least three of these are simultaneously true:

  1. The data model is fundamentally wrong — not "could be cleaner," actually wrong for what the product needs to do.
  2. The stack can’t hire — you can’t find engineers in your market, or the ones who exist are 2× the rate.
  3. Performance has hit a ceiling — not "could be faster," actually blocking customer use cases.
  4. The MVP shipped with a vendor lock-in that’s now hostile — pricing has changed, the vendor is being acquired, or the platform is sunsetting.
  5. The original team is gone and the code is genuinely unreadable — not "doesn’t match my style," genuinely no one can ship features against it.

One of these alone is not a rebuild signal. Two might mean a targeted rewrite. Three or more, in the same product, and the rebuild becomes the cheaper option.

3. The signals that look like rebuild justification but aren’t#

These are the traps. Each one feels like a rebuild reason. Each one is actually a different problem in disguise.

3.1 “Our code is messy.”#

Every codebase is messy. The question is whether it’s messy in ways that block delivery, or messy in ways that just feel bad to a new senior engineer joining.

Almost every "messy code" rebuild ends with a new mess written by the new team. Mess is not a function of the codebase; it’s a function of how much product you’ve shipped.

The actual problem: Lack of refactoring discipline. Fix with reviews, not rebuilds.

3.2 “We picked the wrong stack.”#

Often this means: "we shipped on PHP and now my new engineer wants Node." Or: "we shipped on Mongo and I read a blog post about Postgres." (See Mongo vs Postgres for SaaS.)

Wrong-stack feelings almost never survive contact with the question "what specifically can we not do because of this choice?" If you can answer that with concrete blocked features, you may have a real problem. If you can only answer with cultural preferences, you don’t.

The actual problem: Engineer preference, not engineering need. Address by hiring engineers who can work on what you have, or by targeted rewrites of specific subsystems.

3.3 “The original team didn’t test anything.”#

Add tests now. You don’t need to rewrite to do that. Adding tests to legacy code is uncomfortable but not impossible.

The actual problem: Engineering hygiene gap. Fix with characterisation tests and gradual coverage.

3.4 “We can’t ship features fast enough.”#

Why? Is it the code, the team, the product manager, the requirements clarity, the data model, the tooling, or the release process? "We can’t ship fast" has a dozen possible causes and the codebase is rarely the dominant one.

The actual problem: Almost certainly process or organisation, not code. Diagnose before you prescribe.

3.5 “Our new senior engineer wants to rebuild it.”#

Of course they do. Building something new is more interesting than maintaining something existing. Every senior engineer who joins thinks they could do better. Few of them are right at the scale of "rebuild the whole thing."

The actual problem: Recruitment honeymoon. Wait six months before signing off on the rebuild they’re asking for.

4. The decision framework#

When you genuinely face a rebuild question, run it through this:

QuestionIf yes...If no...
Have you shipped a feature in the last 4 weeks?Not a rebuild — you’re fineMaybe rebuild
Can you onboard a new engineer to be productive in < 4 weeks?Not a rebuildMaybe rebuild
Is the data model wrong in ways that block product features?Maybe rebuildNot a rebuild
Is the cost of running it growing nonlinearly with users?Maybe rebuildNot a rebuild
Can a targeted module rewrite fix the worst 80%?Do that insteadMaybe rebuild
Do you have 6+ months of runway after the rebuild lands?Maybe rebuildDon’t rebuild

If you score "maybe rebuild" on four or more, you have a real conversation. If you score it on one or two, you have a refactor or a targeted rewrite, not a rebuild.

Field note

We were brought in to audit a Series A SaaS that was 4 months into a $300K rebuild. Three weeks of diagnosis revealed: the original code was fine, the new code was 60% complete, and the slowdown was a database query that took 2 days to fix. They cancelled the rebuild, kept the original, and shipped two new features that quarter. The "rebuild" had been masking the real problem — an unproductive engineering process — that the new codebase wasn’t going to solve either.

5. The strangler-fig pattern — the rebuild that actually works#

If you’ve diagnosed a real rebuild need, the only approach that consistently works is the strangler-fig pattern:

  1. Keep the old system running. No big-bang cutover.
  2. Pick one bounded module — auth, billing, search.
  3. Build the new module behind the old API contract.
  4. Route traffic to the new module for a subset of users.
  5. Measure. Fix. Roll forward to more users.
  6. Delete the old module when 100% of traffic is on the new one.
  7. Repeat for the next module.

A full rebuild that ships in one cutover is a rebuild that doesn’t ship. The strangler-fig pattern is twice as much engineering work in total — but ten times more likely to actually finish.

6. The economics of a rebuild#

The decision is partly emotional, but the numbers matter. For a typical Series-seed SaaS with a 2-year-old MVP:

PathCost (USD)Calendar weeksRisk
Refactor in place$15,000 – $40,0006 – 12Low
Strangler-fig rewrite$60,000 – $180,0006 – 12 monthsMedium
Big-bang rebuild$200,000 – $500,000+12 – 24 monthsVery high
Continue + tactical fixes$5,000 – $20,000 / monthOngoingLow

The big-bang rebuild is the most expensive option and the one most likely to fail mid-build. The strangler-fig rewrite is more expensive than refactoring but it’s the only way to actually replace a system without losing the company.

For context on what these numbers mean against an initial build, see how much it costs to build a SaaS.

7. The five rewrite traps that kill startups#

After watching a lot of these go wrong, the patterns are consistent.

7.1 The “feature freeze” that never thaws#

The team stops shipping features to focus on the rebuild. Customers stop seeing progress. Churn ticks up. The rebuild runs long. By the time it ships, the product has lost more revenue than the rebuild cost.

Avoidance: Never feature-freeze for more than 4 weeks. If the rebuild needs more, use strangler-fig instead.

7.2 The investor conversation that becomes impossible#

Investors look at your numbers and ask why growth flattened. You can’t honestly say "we’re rebuilding" without inviting a hard conversation about the previous funding round’s output.

Avoidance: If you must rebuild, communicate it up front, frame it as deleveraging, and tie it to specific customer outcomes.

7.3 The new stack that nobody can hire for#

The team picks the rebuild stack based on what they want to write, not what they can hire for. Six months in, the same hiring problem that motivated the rebuild reappears in the new stack.

Avoidance: Pick the rebuild stack based on the hiring pool you have access to. See picking a stack honestly.

7.4 The original codebase nobody understood#

The team rebuilds against their memory of what the old code did, not against what it actually does. Three months in, edge cases the old code handled silently start breaking in production.

Avoidance: Characterisation tests before the rebuild starts. They’re a tax; they save the project.

7.5 The rebuild that’s actually a re-org#

The "rebuild" is the cover story for replacing half the engineering team. The new team writes code they like better; the old team leaves; the new code has the same problems in a different accent.

Avoidance: Be honest with yourself. If the real problem is the team, address that directly. Don’t spend six months and $300K of investor money to do it through code.

8. The right time to rebuild#

If, after running through everything above, the answer is still yes — rebuild when:

  • You have 18+ months of runway after the rebuild lands.
  • You have a strangler-fig plan, not a cutover plan.
  • You’ve characterised the existing system with tests.
  • You can keep shipping features through the rebuild.
  • You’ve told investors in advance and they’re aligned.
  • The hiring story for the new stack is clear and validated.

Almost no founders meet all six. The ones who do usually find that the rebuild succeeds. The ones who don’t usually find that it’s the most expensive lesson their company ever pays for.

9. What we recommend most often#

In practice, when founders come to us asking about a rebuild, our advice in 80% of cases is some combination of:

  • A two-week paid audit to diagnose what the actual problem is.
  • A targeted rewrite of the worst-performing module, with a strangler-fig.
  • Process changes — reviews, observability, release cadence — alongside the technical work.

The 20% where we do recommend a fuller rebuild are cases where the data model is fundamentally wrong, the original stack genuinely can’t deliver the product, or the operational cost is growing nonlinearly with usage.

If you’re weighing a rebuild and want a second opinion before you commit, tell us what you’re looking at. We’ll send notes within one business day — even if our notes say "don’t rebuild."

FAQ#

When should I rebuild my MVP? When the data model is fundamentally wrong, the stack genuinely can’t hire, or the operational cost is growing nonlinearly — and you have 18+ months of runway, a strangler-fig plan, and aligned investors. Otherwise, refactor or do a targeted rewrite instead.

How much does it cost to rebuild a SaaS? $60K–$180K for a strangler-fig rewrite, $200K–$500K+ for a big-bang rebuild. Refactoring in place is usually $15K–$40K and the right answer in most cases. See our SaaS cost breakdown.

Is rewriting from scratch ever the right answer? Yes, but rarely — and almost never as a big-bang. The strangler-fig pattern (module-by-module replacement behind the old API contract) is the only rewrite approach that consistently ships.

How long does a typical SaaS rebuild take? 12–24 months for big-bang, 6–12 months for strangler-fig. Founders who plan 6 months for a big-bang rebuild are estimating against the rebuild they imagine, not the one they’ll actually do.

Should I freeze features during a rebuild? Never for more than 4 weeks. Longer freezes kill momentum, and the customers who churned during the freeze don’t come back when the rebuild ships.

Can an agency help me decide whether to rebuild? Yes — a two-week paid audit by a senior team is the cheapest insurance you can buy on a six-figure decision. See how to choose an agency for what to look for.

What if my engineer is pushing for a rebuild? Wait six months before agreeing. Most rebuild requests from new senior engineers fade after they’ve shipped two features against the existing code — and the ones that don’t fade are usually the legitimate ones.

Filed under
mvprewriterefactortechnical-debtstartups
Ready to ship?

Tell us what you’re building. We’ll reply within a business day.