is a post-launch fix out of scope or a covered defect?
It depends — if the issue is a genuine defect in what you delivered, fixing it is owed as warranty work; if it's a new requirement or a change to agreed behavior, it's a paid request. The word 'bug' doesn't settle which one it is.
Why this answer
Post-launch issues are ambiguous because 'bug' is used to describe two fundamentally different things. A true bug is the work failing to do what it was agreed to do — a form that won't submit, a layout that breaks on a supported browser, a feature that was specced and built wrong. Fixing that is warranty work; you owe it regardless of launch, because you didn't actually finish delivering what the contract promised. The other kind of 'bug' is a new requirement discovering itself in production: behavior that works exactly as specced but turns out not to be what the client now wants, a case nobody scoped, a feature the client assumed but never asked for. That's a change request, not a defect, and it's paid work no matter how naturally the client calls it a bug. The whole question turns on a single comparison — does the issue depart from the agreed specification, or does it ask the specification to become something new? Answer that honestly and most post-launch 'bugs' sort themselves cleanly into warranty or new work.
When the answer flips
It reads as In Scope warranty work when the issue is a clear deviation from what was agreed: the deliverable doesn't do what the spec said, fails on an environment you committed to support, or breaks under conditions that were explicitly in scope. It tilts toward Out of Scope when the behavior matches the spec but the client wants it changed, when the problem appears only in conditions never agreed (an unsupported browser, a use case nobody scoped), or when the 'fix' actually adds capability the original never had. A defined warranty or support window also shapes the read — inside it, genuine defects are owed; outside it, even real bugs may be billable depending on terms. The sharpest signal is whether honoring the request restores the agreed behavior or extends it: restoration is warranty, extension is new work.
What to do next
Diagnose against the spec before you discuss money, because the classification is the whole conversation. Reproduce the issue and ask the deciding question: is this the work failing to meet what we agreed, or the work meeting what we agreed but no longer matching what the client wants? If it's a real defect, fix it promptly and without fuss — owning your bugs fast is reputation-building, and arguing over a genuine defect is the worst possible look. If it's a change request wearing a bug's clothes, say so without accusation: 'This is actually working the way we specced — what you're describing is a change to that behavior, which I can scope as a quick update.' Separate the two explicitly when an issue contains both. Quote new work as its own small item, and lean on your warranty terms for the timing. Going forward, define a warranty window and a supported-environment list in the contract, so 'is this a bug' has a written answer instead of a debate.
Frequently asked questions
The client calls everything a bug. How do I tell real defects from change requests?
Compare the behavior to the agreed spec, not to the client's current wish. If the thing does what you both signed off on but the client now wants it to do something else, that's a change request, however they label it. If it fails to do what was agreed — breaks, errors, or behaves contrary to the spec — that's a defect you owe. The label 'bug' carries no information; the spec does. Run every post-launch issue through that one comparison and the warranty-versus-new-work split becomes clear even when the client's framing doesn't.
It works fine on my machine but breaks in a browser I never agreed to support. Is that my bug?
Generally not, if that environment was outside what you committed to. A defect is a failure under conditions you agreed to support; a failure in an unsupported browser, device, or configuration is the work meeting its actual scope and the client wanting that scope widened. Making it work there is new compatibility work, not a fix. The exception is if your contract or the brief implied that environment was in scope, in which case it's a defect. This is exactly why a supported-environment list in the contract is worth writing — it pre-answers this argument.
Should I charge for a defect that surfaces after my warranty window closes?
It depends on your terms, and on judgment. A genuine defect that appears after the warranty period is, strictly, outside the window you committed to, so billing for it can be defensible. But a clear bug in your own work, surfacing not long after the window, is often worth fixing on goodwill — quibbling over a real defect just past warranty rarely pays off in reputation. Reserve strict enforcement for cases well outside the window or where investigating the issue is itself substantial. Inside the window, genuine defects are simply owed.
The 'fix' the client wants would actually add a feature. How do I handle that?
Call it what it is — added capability, not a repair. If resolving the issue means building behavior the original never had, you're extending the work, not restoring it, and extension is new work regardless of how the request is framed. Separate the two cleanly: if there's also a real defect in the area, fix that as warranty; the new capability you scope and price as an update. Saying 'the current behavior matches what we built — adding this is a small new piece I can quote' keeps you fair on the bug while staying paid on the feature.
How long after launch am I still responsible for fixing genuine bugs?
For exactly as long as your warranty window says, which is why naming one matters. Without a stated period, 'how long am I on the hook' becomes an open-ended question neither side can answer, and clients reasonably assume longer than you intend. A defined window — a set number of weeks or months during which defects in the delivered work are fixed free — gives both sides a clear boundary. Inside it, real bugs are owed; past it, your terms govern whether a fix is goodwill or billable. Define it once and the timing stops being a recurring negotiation.
What contract terms keep post-launch bug disputes from happening?
Three things: a warranty window, a supported-environment list, and a sentence distinguishing defects from change requests. The warranty window sets how long free fixes last; the environment list defines where the work is promised to function so unsupported-platform issues don't read as bugs; and the defect-versus-change sentence states that fixes restoring agreed behavior are covered while changes to that behavior are quoted. Together they convert nearly every 'is this a bug' standoff into a clause you can point at, replacing an argument about intent with a definition you both already accepted at signing.
Related reading
- The full guide
The scope creep guide for freelancers
How to spot scope creep, why clients do it, what it costs you, and how to respond professionally.
- Scenario
Is a rush deadline out of scope?
Yes — a mid-project deadline acceleration is out of scope unless your contract explicitly accommodated shifting timelines. The work itself…
- Scenario
is a client reopening an approved deliverable out of scope?
Yes — reopening a deliverable the client already approved and paid for restarts work you'd already closed out, so it sits outside the origi…
- Clause guide
What a deliverables clause should include in freelance contracts
A strong deliverables clause names each artifact with a format, a quantity, and — critically — an exclusion list. If it's not named, it's n…
- Profession guide
Scope creep for web developers: where projects actually break
Web development scope creep usually hides in the gap between 'build this feature' and 'make it work in production.' Clients think the featu…
- Scenario
is ongoing site maintenance out of scope after launch?
Yes — unless your contract explicitly bundles a support window or a retainer, post-launch maintenance is a separate engagement. The narrow…
Answer scope creep from your actual contract — not a template.
Settled reads your contract and the client's request, gives you a verdict (In Scope / Out of Scope / Ambiguous), and drafts the email grounded in your specific clause.