Quick answer: Track bug fix velocity with a few honest metrics: fixes closed per week, bugs opened per week, the net flow between them, and median time to resolution. The net flow tells you whether your backlog is growing or shrinking, which matters far more than raw throughput. Watch trends over many weeks, not single points, and never turn velocity into a target people optimize, or the numbers stop meaning anything real.

Most teams have a rough feeling about whether they are keeping up with bugs, and that feeling is usually wrong. Bug fix velocity makes it measurable: how fast you close issues, how fast new ones arrive, and whether the gap between them is in your favor. Tracked honestly, these numbers turn vague anxiety into a clear signal you can plan around. Tracked badly, they become a target people game until they mean nothing. This post covers which metrics actually matter, how to read their trends, and the traps that turn velocity tracking from useful into harmful.

Throughput is only half the story

The obvious metric is throughput: how many bugs you close per week. It is worth tracking, but on its own it is misleading, because closing twenty bugs a week sounds great until you learn thirty new ones arrived. Throughput measures effort, not progress. A team can be working flat out, closing more bugs than ever, and still falling behind. That is why throughput must always be read alongside inflow, the number of new genuine bugs opened in the same period, which together reveal whether you are actually gaining ground.

Inflow itself is informative. A sudden spike usually follows a release or a content drop and tells you a feature introduced regressions. A slow steady climb may mean your growing player base is simply finding more, or that quality is eroding. Tracking inflow separately from throughput lets you tell the difference between you are slowing down and the world is throwing more at you, which are completely different problems with completely different fixes. Many velocity panics are really inflow spikes that no amount of faster fixing would have prevented.

Net flow is the number that matters

The single most important metric is net flow: closed minus opened over a period, or equivalently the change in your open bug count. If net flow is positive you are shrinking the backlog, if negative you are growing it, and if it hovers around zero you are treading water. This one number cuts through the noise of throughput and inflow, because it answers the question you actually care about, which is whether the pile is getting bigger or smaller. Plot the open bug count over time and the trend is immediately legible to anyone.

Net flow also reframes planning. If you are consistently negative, no amount of celebrating high throughput changes the fact that the backlog is winning, and you need either more fix capacity or fewer bugs at the source. If you are consistently positive, you have headroom to invest elsewhere. The beauty of net flow is that it is honest in a way raw counts are not: you cannot look productive while losing ground, because the open count keeps rising regardless of how busy everyone feels. It is the metric to put in front of the whole team.

Time to resolution and aging

Beyond counts, measure how long bugs take to resolve. Median time to resolution tells you the typical lifespan of a bug from report to fix, and tracking it over time shows whether your responsiveness is improving or degrading. Use the median, not the mean, because a few ancient bugs that finally get closed will distort an average wildly. Splitting time to resolution by severity is even more useful: critical bugs should have a much shorter median than cosmetic ones, and if they do not, your prioritization is broken somewhere upstream.

Complement this with aging: how old are the bugs still open right now. A backlog where the oldest open bug is two weeks old is healthy. One where bugs routinely sit open for months signals either chronic under-prioritization or a graveyard of issues nobody will ever fix and should honestly close. Watching the age distribution drift older is an early warning that your backlog is calcifying. These lifespan metrics catch problems that pure flow numbers miss, like a steady net flow that hides a growing pool of permanently stuck old issues.

Read trends, not points

Every velocity metric is noisy week to week. One slow week because two engineers were on holiday, or one spike because a release landed, means almost nothing in isolation. The signal lives in the trend across many weeks. Use a rolling average or simply look at the shape of the line over a quarter. Reacting to a single data point is how teams whipsaw between panic and complacency, neither of which reflects reality. The right cadence for reading velocity is monthly or quarterly review of trends, with the underlying numbers updated continuously.

Annotate your charts with events: releases, content drops, team changes, holidays. A spike in inflow that lines up exactly with a release date is a regression story, not a quality decline. A drop in throughput that matches a member leaving is a capacity story. Without annotations, every wiggle invites a wrong explanation. With them, the trends tell a coherent narrative about cause and effect that helps you plan, rather than a series of disconnected numbers that invite anxious overreaction whenever a single week looks worse than the last one did.

Setting it up with Bugnet

Velocity metrics require a clean, consistent stream of bug data, and Bugnet provides it. Every report from the in-game button and every crash arrives in one dashboard with timestamps, device and platform context, and a status, so opened and closed counts, net flow, and time to resolution all fall out of data you already have rather than from manual tallying. Occurrence grouping is especially important here: by folding duplicate reports into a single issue, it stops a popular bug from inflating your inflow into a meaningless flood and keeps your counts measuring distinct problems.

Because crashes and reports carry build and platform context, you can also break velocity down by where the work is happening: how net flow looks per platform, or how time to resolution differs for crashes versus general bugs. That turns a single trend line into a diagnostic that points at where your fix process is struggling. With the raw data already structured and timestamped in one dashboard, computing these metrics is a matter of reading the numbers rather than maintaining a fragile spreadsheet by hand each week.

Use velocity to plan, not to judge

The fastest way to ruin velocity metrics is to turn them into individual performance targets. The moment closing bugs becomes a scoreboard, people optimize the number: closing trivial bugs to pad throughput, marking hard ones as wont-fix, or arguing that real issues are not really bugs. The metric stops measuring reality and starts measuring gaming behavior. Keep velocity at the team and trend level, where it informs capacity planning and tells you whether your fix budget is sized right, and never weaponize it against the people doing the work.

Used well, velocity becomes a quiet feedback loop: you size your fix budget, watch the net flow and resolution trends respond, and adjust. Over a few quarters this builds an honest picture of your team's real capacity and your game's real bug pressure, which makes roadmaps more believable and launch planning less of a guess. The forward-looking goal is a team that knows its numbers and trusts them, because the metrics were always tools for understanding the work rather than instruments for grading the people who do it.

Net flow tells you the truth that throughput hides. Read trends over weeks, annotate the events, and keep velocity a planning tool, never a scoreboard.