Skip to content
Expert Guide Series

How do you handle changing requirements in agile app development?

Agile is often sold as the answer to changing requirements. The pitch is appealing: short sprints, regular reviews, the ability to shift direction without catastrophe. And there is truth in it. But the promise of agility is not the same as an unlimited right to change, and the gap between those two things causes more project failures than almost anything else we see.

Agile absorbs change at a cost, and that cost compounds every time a boundary is not held.

The sports club app we worked on is the clearest example we have. What should have been a product in market within three to four months never launched after twelve to fourteen months of development, and the budget almost doubled. Every forecast, every warning, every recommendation the development team made went unheeded. The founders were deeply embedded in the world the app was designed for, which made them passionate and knowledgeable but also made it nearly impossible to hold scope. Requirements did not simply change, they expanded, consistently and at pace, until the project collapsed under its own weight.

Handling changing requirements well is not about resisting change or about being so process-heavy that nothing can move. It is about understanding what kinds of change are healthy, what kinds signal a deeper problem, and what structures keep a team delivering rather than perpetually rebuilding. That is what this article is about.

Why agile does not absorb change for free

There is a persistent misreading of agile methodology that treats flexibility as infinite. Stakeholders hear "iterative" and conclude that changing direction mid-sprint carries no cost, that refinement sessions are free rethinking time, and that the process exists to accommodate whatever they decide next. None of that is accurate.

Every change to a requirement has a cost. Sometimes that cost is small: a label changes, a flow reorders, a colour swaps out. But requirements rarely change in isolation. Change a data field and you often change the schema, the API contract, the validation logic, and the interface component that displays it. Change a user journey and you may invalidate tests already written for the original path. The further into a sprint a change lands, the more of that completed work becomes waste.

Agile projects are nearly 1.5 times more successful than waterfall projects, but that figure reflects agile used correctly, with genuine sprint discipline and clear boundaries around what enters a sprint. It does not describe a process where stakeholders can insert requirements at any point and expect delivery to continue uninterrupted.

Agile's real advantage is that it surfaces problems early, allows priorities to shift between sprints, and keeps the product grounded in what users actually need. That advantage disappears the moment change becomes a continuous, unmanaged stream rather than a deliberate, bounded decision.

The structural decisions that must happen before sprint one

Most scope problems do not begin during development. They begin in the conversations before development starts, when nobody wants to slow momentum by asking difficult questions about constraints.

Before sprint one, three things need to be settled and written down. First, who has final decision-making authority on the product. Not who has opinions, not who has a stake, who can close a conversation. On the sports club app, two co-founders both held this authority, both pushed consistently to add features, and neither could effectively override the other. That structural ambiguity was never resolved, and it ran through the entire project.

Second, the definition of what discovery has and has not covered. A sprint backlog built on incomplete discovery is a list of assumptions, not requirements. Whatever components did not go through discovery carry a higher probability of requiring rework, and the team should name those gaps explicitly rather than pretend they do not exist.

Third, the change management process. What is the route for a new requirement to enter the backlog, who assesses its impact, who approves it, and what happens to the sprint it would affect. Without that process written down before the first sprint begins, change management defaults to whoever argues most persistently.

Before any sprint begins, write down three things in a shared document: who has final sign-off authority, which components did not go through discovery, and what the formal route is for a new requirement to enter the backlog. These are the three most common gaps that create scope problems later.

Start your app project the right way

We deliver the complete blueprint before a line of code is written. User research, psychology-driven design and full technical specifications. You choose who builds it.

See how we work Get started

No commitment

How discovery scope defines what 'change' actually means

Not all changes are the same, and the word "change" tends to blur a distinction that matters enormously in practice. Some changes are refinements: a requirement was understood, explored, and agreed, and now it needs adjusting based on something learned. Other changes are discoveries: a requirement was never actually explored, and what looks like a change is really a first look at something that should have been scoped from the start.

Discovery scope determines which category a given change falls into. If onboarding was in scope for discovery and messaging was not, then a change to the onboarding flow is a refinement. A change to messaging is a discovery, and it should be treated as new scope, not a modification of existing work.

We worked on a dating app built around verified profiles and preventing bots. The client chose to skip discovery for the messaging component and focus all discovery effort on onboarding. The consequence was that what got built was a generic messaging feature that allowed automated and fake messages, directly undermining the verification work done during onboarding. The messaging section had to be rewritten in full, costing approximately £15,000 in additional budget and two months of extra work.

Skipping discovery on one component does not save time, it defers the cost and adds interest.

The lesson is not that discovery must cover everything before a line of code is written. The lesson is that whatever discovery does not cover should be named, agreed, and understood to carry higher risk. When a change later arrives for that component, everyone knows it is new scope and should be treated accordingly.

When refinement sessions become a mechanism for expansion

Refinement sessions serve a clear function: taking a requirement that is broadly understood and making it specific enough to build. They are meant to reduce ambiguity, not to introduce new functionality. On the sports club app, they did the opposite.

Every refinement session we ran resulted in a larger product. Stakeholders used the time to surface requirements that had never been mentioned before, framing each addition as obvious and already implied. The phrase we heard repeatedly was "of course it needs to do this", applied to features the product specification had never addressed. The refinement process became a reliable mechanism for scope expansion rather than scope definition.

This pattern is not unusual, and it usually reflects a genuine dynamic: the closer a stakeholder is to the problem the product solves, the more invisible their assumptions become. They are not being difficult. They genuinely cannot see the line between what was agreed and what they have always assumed. That is precisely why the process needs to hold the line for them.

Practical changes to refinement structure that prevent this include setting a written agenda before each session, keeping the session focused on stories already in the backlog rather than opening discussion to the product at large, and using a "parking lot" document for anything new that surfaces. New items go into the parking lot, get assessed for impact separately, and enter the backlog through the formal change process, they do not enter through the refinement session itself.

Start every refinement session by reading out what is in scope for that session. Anything that is not on that list goes into a parking lot document, gets assessed separately, and enters the backlog only after a formal impact review. This single habit prevents most mid-session scope expansion.

The hidden cost of skipping discovery on a single component

The dating app messaging rewrite is the clearest case we have for what happens when one component is carved out of discovery. But the pattern it illustrates shows up in subtler ways on almost every project where discovery is partial rather than complete.

When discovery covers most of a product but not all of it, the uncovered component tends to be treated as simple by default. The assumption is that because it was not complicated enough to need discovery, it must be straightforward. That assumption is almost always wrong. Components are often excluded from discovery not because they are simple but because they felt peripheral, or because the client wanted to move faster, or because the budget did not stretch.

What makes the cost so high is the combination of the rework itself and where it lands. A component built without proper discovery tends to conflict with the components built around it, and those conflicts are discovered late, often after integration, sometimes after testing, occasionally after launch. By that point, unpicking the component means unpicking the seams between it and everything adjacent to it.

The £15,000 and two months on the dating app was not the cost of building the messaging feature. It was the cost of rebuilding it after the integration revealed the contradiction with the verified onboarding, a contradiction that was entirely predictable and would have been caught in a few hours of discovery work at the start.

Managing third-party and API dependencies when requirements shift

Third-party integrations are where changing requirements become most expensive during app development, because the cost does not stay inside your own codebase. When a requirement changes in a way that touches an external API, the rework crosses a boundary you do not control.

We worked on a travel product where the client requested integration with a specific third-party aggregator. Midway through development, the client concluded that the aggregator's added costs made the financial model unworkable. They switched to a different supplier, which used a fundamentally different API approach. We had to go back to the drawing board and re-engineer significant portions of the integration layer. Later still, the client added a third external service to handle specific bookings, requiring another round of integration work. Each change required careful review, rewriting of integration code, and ensuring the result was robust and secure.

A separate project, a toll management product, presented a different kind of API dependency problem. We had to educate the client about how API access actually works with established toll operators and made the case that a brand-new, unproven product would struggle to negotiate data-sharing relationships with incumbents. The smarter approach was to launch using a preloaded credit model and pursue API integrations once the platform had established credibility. The client accepted that staged approach, and it preserved the delivery timeline.

Before any third-party integration enters the backlog, map the fallback position: if this supplier changes their API, raises costs, or becomes unavailable, what does the product do? Projects that cannot answer that question have taken on a dependency they do not fully understand.

How to price and schedule for change without underwriting unlimited scope

The question of how to price for change is really a question about who carries the risk of a requirement being incomplete at the point of agreement. There are several models, and each one distributes risk differently.

Model Who carries the risk Works best when Breaks when
Fixed price Agency Requirements are fully defined and stable Discovery was incomplete or stakeholders change their minds
Time and materials Client Scope is exploratory and genuinely uncertain Client expects a budget ceiling that does not exist
Fixed scope per sprint Shared Both parties are disciplined about change management Stakeholders treat sprint boundaries as suggestions
Change budget reserved Client (ring-fenced) Some change is expected and budgeted for explicitly Change volume exceeds the ring-fenced amount

Simon's view on budget and scope is direct: a lower budget means reduced flexibility and a sharper focus on getting to market within the available time. The problems arise when a client wants to spend less but expects the same ceiling on scope and quality. On one project, it became clear very early that the client wanted the lower budget but not the limitations that come with it. That misalignment poisons everything that follows, because every conversation about scope becomes a conversation about expectations that were never aligned.

Recognising when a requirement change signals a product problem

Some changes are healthy: the team learned something from the last sprint, a user test revealed a flow that did not work, a technical constraint shifted the best approach. These are agile working as intended. Other changes are a symptom of something deeper, a founder who has not yet decided what the product is, a stakeholder using the development process to explore a problem they have not yet understood, or a product shaped by personal conviction rather than user evidence.

We identified this pattern across two projects, a fitness and wellness app and a grassroots football product, where founders with strong personal conviction in their vision ignored data emerging from research, focus groups, and surveys. The product becomes what we describe as a vanity product: shaped by the founder's preferences rather than user evidence. The early warning signs are consistent: an excessive drive to perfect the product before launch, rolling back sign-offs to request further changes, and decision-making that extends beyond any reasonable timeline. Both projects exhausted their budgets in design and build without ever reaching a fully live product.

The distinguishing question is whether the change moves the product closer to solving a documented user need or closer to matching what the stakeholder imagined it should be. When the answer is consistently the latter, the requirement changes are a product strategy problem, and process improvement alone will never reach the root cause.

One pattern worth recognising early: when a client believes they already have clarity on their problem but actually do not, asking the right questions to explore further detail, rather than directly challenging their assumptions, surfaces the real situation quickly. That approach is constructive, and it prevents a team from spending months building a product that was never properly understood to begin with.

The governance structures that keep change from derailing delivery

Governance sounds heavy. In practice it means three things: who decides, how fast they decide, and how those decisions are recorded. Without all three, change management defaults to informal pressure, and informal pressure always wins against process.

The who is the most important. A single named decision-maker on the client side, with genuine authority to close a conversation, prevents the dynamic that derailed the sports club app project. Two stakeholders with equal authority and strong personal investment in the product create a structural problem that process cannot reliably fix. This needs to be agreed before the project starts, not negotiated during a difficult sprint review.

The how fast matters because slow decisions compound. A requirement under discussion is work paused or work proceeding on an assumption, neither is ideal, but proceeding on an assumption is often less damaging than waiting three weeks for a decision that could have been made in a day. Setting a decision window, a period within which a client must respond to a query, and a default if they do not, removes the ambiguity.

The recording piece is underestimated. Every agreed change should be logged in a shared place with its impact: what it changes, what it costs in time and budget, and who approved it. This is the record that prevents a stakeholder from later disputing the cost of a change they approved.

When to push back, when to pause, and when to walk away

Not every change request deserves the same response, and treating them all as negotiable is as damaging as treating them all as obstacles. The question is how to tell them apart quickly enough to act rather than drift.

When to push back

Push back when a change adds scope without a corresponding adjustment to timeline or budget. This is the most common form, and it is usually not malicious, stakeholders simply underestimate what a change involves. A clear impact statement, here is what this changes, here is what it costs, here is what moves to accommodate it, gives the client the information they need to make a real decision. Most reasonable clients will make a reasonable decision when the trade-off is made explicit.

When to pause and when to walk away

Pause when a series of changes suggests the product definition is fundamentally uncertain. A cluster of contradictory changes often means the product vision has not settled, and continuing to build on an unstable foundation is wasteful. The right response is to stop the sprint, return to discovery, and rebuild the backlog from a clearer position.

Walk away when a client refuses to engage with a process that exists to protect both parties. We walked away from a project involving a fairly standard social product because the client wanted to go straight into redesigns without any discovery work. They were unwilling to engage with our user-centred discovery phase, and that phase is not optional. When clients refuse to participate in the process that makes good work possible, continuing is a disservice to everyone.

Conclusion

Changing requirements are a normal part of building digital products. The goal is not to prevent change but to handle it deliberately, with a clear view of what it costs and who is making the call.

The projects that handle it well share a few consistent features. Discovery was thorough enough that most components were properly understood before build began. Decision-making authority was clear and settled. Change had a formal route into the backlog, with impact assessed before approval. And the team was willing to name a problem rather than absorb it quietly and keep billing.

The projects that handled it badly share consistent features too. Discovery was partial or skipped. Authority was unclear or split. Changes entered through informal pressure. And early warnings about scope, budget, and timeline were received but not acted on.

Launching and iterating on real user feedback is more effective than chasing a perfect pre-launch product. For most projects, getting a working product into the hands of real users, then allocating further budget to the next iteration based on what resonates, is a better use of investment than trying to reach an ideal within the original build. The sports club app never launched. The dating app launched after a rewrite that cost £15,000 and two months. The toll management product launched on a staged model and built credibility before pursuing integrations. The difference between those outcomes was not talent or budget, it was process, clarity, and the willingness to hold a boundary when it needed holding.

If you are working through how to handle requirements change on a product in development, let's talk about your project.

Frequently Asked Questions

Does agile mean we can change requirements whenever we like?

Agile is designed to accommodate change between sprints, not at any point during development without consequence. Every requirement change carries a cost, and that cost compounds when changes arrive continuously and without boundaries.

What happens when requirements keep expanding throughout a project?

Unchecked expansion of requirements, often called scope creep, can cause budgets to double and timelines to stretch far beyond original forecasts. In the worst cases, as with the sports club app described in this article, the project may never reach market at all.

What should be agreed before development begins?

Three things need to be settled and written down before sprint one: who holds final decision-making authority, what the boundaries of the product are, and what process governs how new requirements are assessed. Skipping these conversations to maintain momentum is one of the most common causes of scope problems.

Why do changing requirements cost more the later they arrive?

The further into a sprint a change lands, the more completed work becomes waste. Changing a single data field, for example, can affect the database schema, the API, the validation logic, and the interface component all at once.

Is it ever appropriate to change requirements during a project?

Yes, some change is healthy and is precisely what agile is built to support. The distinction lies between deliberate, bounded changes made between sprints and a continuous, unmanaged stream of new ideas inserted at any point in the process.

What is the real advantage of agile when it comes to changing requirements?

Agile surfaces problems early and keeps the product grounded in what users actually need, allowing priorities to shift in a structured way between sprints. That advantage disappears when change is treated as unlimited and unmanaged rather than as a deliberate decision with clear governance.

Why do stakeholders sometimes misunderstand how agile handles change?

Stakeholders often hear words like iterative and flexible and conclude that changing direction mid-sprint carries no cost. This misreading of agile methodology is common and leads to the false assumption that refinement sessions and sprint reviews exist to accommodate whatever is decided next.

What role does decision-making authority play in managing changing requirements?

When more than one person holds equal authority over the product, conflicting priorities can drive continuous scope expansion with no mechanism to close the conversation. Agreeing clearly on who can make final decisions before development begins is a practical safeguard against this pattern.