This distinction causes more quiet friction in client-developer relationships than almost anything else, precisely because both situations arrive at the developer's inbox looking nearly identical, [...]
The Actual Definitions
A bug is something that was specifically agreed upon, in the scope, and doesn't currently work correctly. If a contact form was scoped to send an email notification and it doesn't send one, th[...]
A feature request is something new, beyond what was originally scoped, however small or reasonable it seems in the moment. If a contact form was scoped to send an email, and now you'd also lik[...]
Why This Gets Confused Constantly
From a client's perspective, both situations feel identical, "this isn't doing what I want it to do." The distinction that actually matters, whether the thing being asked for was part of the origi[...]
Why the Distinction Actually Matters, Concretely
A genuine bug should be fixed under the original project cost, at no extra charge, since it represents the developer not yet having delivered what was actually promised. A genuine feature request [...]
Treating every "this isn't working the way I want" message as a bug, when a meaningful share of them are actually feature requests, means a developer either absorbing genuinely unlimited scope [...]
A Practical Test for Telling the Difference
Was this specific behavior explicitly part of the original written scope? If yes, and it's not working, that's a bug. If the specific behavior was never actually specified, this is new territo[...]
Would a different, competent developer building from the exact same original scope document have built this specific behavior? If the honest answer is no, because the original scope genuinely [...]
Real Examples of Each
Genuine bugs: a submitted form that doesn't actually save to the database despite being scoped to do so. A page that crashes on a device or browser that was included in the agreed testing scop[...]
Genuine feature requests, even when they feel small: "can this form also send a text message" when only email was ever scoped. "Can users also filter by date" when filtering wasn't part of the[...]
The Gray Area, Handled Honestly
Some requests genuinely sit in ambiguous territory, something loosely implied by the original scope's spirit without being explicitly stated. The honest, professional approach in this gray area is[...]
Why a Detailed Original Scope Prevents Most of This Conflict
The clearer and more specific the original scope document, covered in more depth in an earlier post on writing an effective brief, the smaller this gray area actually is, and the fewer genuine dis[...]
What This Looks Like From the Developer's Side, Handled Well
A professional response to an ambiguous request isn't a flat "that's not included" delivered defensively. It's an honest, direct acknowledgment, "that's a great addition, here's what it would take[...]
Frequently Asked Questions
What if I genuinely believe something is a bug and my developer says it's a feature request? Go back to the original written scope document together and look at it directly and specifically. If the behavior in question was genuinely, explicitly part of what was scoped, that's worth pointi[...]
Should small feature requests just be handled for free as a goodwill gesture? Some developers do this occasionally and reasonably, for genuinely minor additions, as a relationship-building gesture rather than an obligation. This should be a deliberate choice, not an assumed[...]
How detailed does a scope document need to be to actually prevent this kind of confusion? Specific enough that a genuine dispute about whether something was included could be resolved by pointing directly at the document, rather than to memory of a verbal conversation. It doesn't need [...]
If you're navigating a disagreement about scope on a current project, or want a contract and scope structure that prevents this kind of ambiguity from the start, I'm happy to help.
Get in touch: https://pixelanas.com/contact
Anas, full-stack Next.js developer building SaaS products and premium templates. X: @ASheikh69751