Process
22 September 2026 · 9 min read · Sandra Sanz

How to plan an app v2 update without breaking v1

Planning an app v2 update is riskier than building v1, because now there are real users who need nothing to break. The difference between a calm second version and a chaotic one is not the size of the team, it is four decisions taken before anyone writes code.

How to plan an app v2 update without breaking v1: a BlukaLabs Insights guide on plan app v2 update.

Planning an app v2 update is the point where most small products get into trouble. Version one is forgiving, because nobody is using it yet. Version two has real users, real data, and real reviews waiting to punish a bad release. The teams that get through it calmly are not the ones with the most engineers, they are the ones that made four decisions before writing any code: what actually changes, what hides behind a flag, what happens to the API, and what happens to the data. This is the sequence we use with Bluka clients on every second version.

What planning an app v2 update actually means

To plan an app v2 update is to decide, in advance, which changes can reach users gradually and which cannot, then build the release so that v1 keeps working for everyone who has not updated yet. It is a compatibility plan first and a feature plan second.

That order matters. Founders usually arrive with a feature list for v2 and treat compatibility as an engineering detail to sort out later. In practice compatibility is what determines how the features get built, how long the release takes, and whether a bad week can be undone in an afternoon. Sorting it out later means sorting it out during an incident.

What you need before you start

You do not need a technical background to run this process, but you do need four inputs on the table:

  • Real usage data from v1, broken down by screen and by feature.
  • The list of API endpoints your app calls, and anything else that calls them.
  • The share of your users sitting on each installed app version.
  • A clear statement of what v2 is meant to improve, in one sentence.

If the usage data does not exist yet, that is the first problem to fix, and it is a bigger one than v2. Our guide to app analytics from day one covers the minimum set of events worth tracking before you plan any second version.

Step 1: measure v1 before you redesign it

Almost every v2 plan starts with a meeting where people say what they think is wrong with v1. Those meetings are useful for generating hypotheses and useless for deciding scope. Before anything gets on the roadmap, pull the numbers: which screens people reach, which features they touch more than once, where they abandon a flow, and which parts of the product nobody has opened in ninety days.

The result is almost always uncomfortable. Features the team argued about for weeks turn out to have a handful of users. A screen nobody discussed carries most of the engagement. Good v2 scope comes from that gap between what the team believes and what the data shows, and it usually makes the release smaller rather than larger. That is the point. A v2 that removes two dead features and improves one heavily used flow will beat a v2 that adds five new things on top of a product people already find confusing.

Step 2: sort every change into additive, replacing, or destructive

Once you have a candidate list, classify every item into one of three buckets. This is the single most useful half hour of the whole plan.

Type of changeWhat it doesRisk to v1
AdditiveAdds a new screen, field, or endpoint without touching existing onesLow, v1 never sees it
ReplacingOffers a new version of something that already exists, old one still worksMedium, both paths need testing
DestructiveRemoves or changes the meaning of existing data, fields, or endpointsHigh, v1 can break

Additive changes can ship whenever they are ready. Replacing changes need both versions running for a while. Destructive changes are the only ones that can genuinely break v1, and they deserve most of your attention, most of your testing time, and a firm answer to the question “what do we do if this goes wrong at 9am on a Monday”. In a healthy v2, the destructive list should be short, and every item on it should be there because it unblocks something, not because it tidies things up.

Step 3: put feature flags in before you write v2 code

A feature flag is a switch that decides whether a piece of code runs, controlled from the server rather than from the app store. It sounds like infrastructure overhead until the first time you turn off a broken feature in thirty seconds instead of waiting two days for a review.

The rule we hold to is that every new feature in an app v2 update is born switched off. The code ships, the flag stays closed, and the feature is opened for the team first, then a small share of users, then everyone. This separates deployment from release, which is the whole game: it means the code being live and the feature being live are two different events you control independently.

Flags also make the release calendar less brittle. When one feature is not ready, it stays dark and the rest of the release ships on time, rather than the entire version waiting for its slowest part. What flags do not give you is permission to skip testing. A flag limits the blast radius of a mistake; it does not prevent the mistake.

Step 4: version the API instead of editing it

Here is the thing that catches non-technical founders by surprise: users do not all update at once. Weeks after a v2 release, a meaningful share of people are still running v1, and their app is still calling your backend. If you change what an existing endpoint returns, you break their app without touching their phone.

The fix is to add rather than edit. Publish v2 endpoints alongside the v1 ones, point the new app at the new endpoints, and keep the old ones answering until the population on old versions is small enough to retire. It costs a little duplication for a few months and it removes the single most common cause of a v2 release going wrong.

Both stores give you the data to make that call. Apple’s App Store Connect documentation and Google’s Play Console guidance both expose the distribution of installed versions, which is the number that tells you when v1 support can end. Decide the retirement rule from that number rather than from a date you picked at the start.

Step 5: plan the data migration with a way back

Data migrations are where v2 releases become genuinely expensive, because a bad one is not always reversible. The pattern that keeps them safe has three phases and is worth the extra week it takes.

First, write to both the old and the new shape at the same time, while still reading from the old one. Second, backfill the existing records and compare the two sources until they agree. Third, switch reads to the new shape, and only then stop writing the old one. At every point in that sequence you can stop and go back without losing anything, which is not true of a migration that flips everything in one release.

The other half of the plan is the rollback itself. Write down, before release day, what the team does if the migration goes wrong: who makes the call, how long you wait before making it, and what the exact steps are. A rollback plan invented during an incident is not a plan, it is a group of tired people guessing.

Step 6: release in stages and watch the numbers

Resist the release that goes to everyone on a Friday. Start with a small share of users, let it run long enough to gather real behaviour rather than first-day novelty, and compare that group against the people still on v1. Both stores support staged rollouts natively, so this costs you patience rather than engineering.

Decide the comparison before you start. Activation, retention at day seven, crash rate, and the one metric v2 was supposed to improve are usually enough. If the split test shows the new version behind on any of them, the correct move is to pause the rollout and find out why, not to push on and hope the average recovers at scale. It rarely does. A staged release only protects you if you are genuinely willing to stop it.

How to know it worked

A v2 update went well when three things are true a month later: crash rates are at or below v1 levels, the metric you set out to improve has actually moved, and support is not fielding a queue of people whose data looks wrong. Reviews are a lagging and noisy signal, but a sharp drop in rating within a fortnight of release is worth treating as an incident rather than a mood.

What you should not see is a rush of hotfixes. A release that needs four emergency patches in its first week was not a planning failure at the feature level, it was a compatibility failure, and it usually traces back to a destructive change that skipped Step 2. The month after launch is where those costs land, and it is worth reading before you commit to a date.

What to do next

Write the four decisions down before the roadmap: what the data says v2 should fix, which changes are destructive, how the API keeps serving v1, and what the migration rollback looks like. That document takes a couple of days and reliably saves weeks. If it raises more questions than it answers, that is a useful result too, and it usually means the scope is still too big. Our checklist for scoping an app project works just as well on a second version as a first.

If you would rather have someone run this with you, send us a project brief and we will tell you honestly whether your v2 needs a studio, a single engineer, or simply a smaller plan.

FAQ

Frequently asked questions

How long does it take to plan an app v2 update?
The planning itself takes one to two weeks for a small product: measuring v1, classifying the changes, and writing the migration plan. Teams that skip it usually spend far longer afterwards, because every rollback and hotfix comes out of the same calendar the release was meant to protect.
Can I force users to update to v2?
You can, with a forced update screen, but keep it for security fixes and backend changes that genuinely cannot support two versions. Every forced update loses a slice of your least engaged users, and those are usually the ones you were hoping v2 would win back.
Should we rewrite the app from scratch for v2?
Almost never. A full rewrite is tempting and routinely triples the timeline. It only makes sense when the original architecture blocks the next year of product decisions, not when the code simply feels uncomfortable to work in.
How long should we keep the v1 API running?
Until the share of users still on old app versions is small enough that a forced update is acceptable, which is usually somewhere between one and three months after the v2 release. Watch the installed version numbers rather than picking a date in advance.
What is the most common mistake in a v2 release?
Changing the data model and the interface in the same release. When something breaks, nobody can tell whether the cause is the migration or the new screens, so the team debugs two problems at once under pressure. Separate them by at least one release.

Stuck scoping a build? Talk to BlukaLabs® ¿Atascada dimensionando un proyecto? Habla con BlukaLabs®

Move your mouse —
Move your mouse —
Move your mouse —