Quick answer: When crashes spike, the most valuable question is which build started them. Tag every crash report with the exact build and version that produced it, then look at when each crash signature first appeared. A signature whose occurrences begin sharply at one release was almost certainly introduced by that build, which turns a vague spike into a specific regression you can act on.

Crash dashboards love to show you a spike, but a spike alone does not tell you what to do. The actionable version of the question is narrower: which build introduced this crash? If you can answer that, you can roll back, hotfix, or bisect the changes in that release with confidence. The key is treating build and version as first-class data on every crash, then reading crash signatures over time to see exactly when each one began. This post covers tagging builds, reading first-seen timing, and using that to pin a crash to a bad release fast.

Tag every crash with its build

You cannot correlate crashes with builds if your crash reports do not carry the build. Make the version and build identifier part of every report the moment it is captured, ideally embedded in the binary so it cannot drift from reality. Use a precise identifier, not just a marketing version like 1.4, because you may ship several builds under one version number during a launch. A monotonic build number or commit hash lets you distinguish them and order them in time.

Consistency matters more than the exact scheme. Whatever identifier you choose, attach it the same way on every platform and every build path, including hotfix builds and platform-specific releases. The moment one build path forgets to tag itself, you get a population of crashes you cannot attribute, and that is usually the build you most want to investigate. Bake the tag into your build pipeline so a human can never forget it, and verify it shows up correctly in a test crash before you rely on it.

Read when a crash first appeared

With builds tagged, group crashes by signature, the normalized stack that identifies the same bug across reports. For each signature, look at the timestamp of its first occurrence and the build that produced it. A signature whose occurrences begin abruptly at one release, with nothing before, is the classic shape of a regression introduced by that build. A signature that has trickled in across many builds is a long-standing issue, not something your latest release caused.

This first-seen view cuts through the noise of a raw crash count. A total spike might just be more players on a popular evening, but a signature appearing for the first time at build 412 and nowhere earlier is a fingerprint. Sort your signatures by first-seen build and you can immediately separate the new crashes a release introduced from the background crashes that were always there. That separation is the whole point of correlation.

Confirming the bad build

Once a signature points at a build, confirm before you act. Check that the crash genuinely does not appear in reports from the prior build, ruling out a tagging gap. Look at whether occurrences track the rollout of that build: if the crash count rises as adoption of build 412 rises, the link is strong. Cross-reference the device and platform spread, since a crash that only appears on the new build and only on one platform often points straight at a platform-specific change in that release.

Confirmation protects you from the trap of blaming whatever build happened to be live during a spike. Correlation in time is suggestive, but matching the crash population precisely to the build population is what makes it conclusive. When the first-seen build, the rollout curve, and the absence in prior builds all agree, you have your culprit, and you can move to remediation knowing you are fixing the right thing rather than chasing a coincidence.

From bad build to fix

A confirmed bad build gives you fast options. The quickest is to halt or roll back that release if your store and update mechanism allow it, stopping the bleeding while you investigate. In parallel, bisect the changes that went into the build: if a regression appeared at build 412 and not 411, the cause lives in the diff between them, which is usually a short list of commits. The narrower the build identifier, the smaller that diff, which is exactly why precise tagging pays off.

Once you find and fix the change, ship a new build and watch the same first-seen view to confirm the signature stops appearing in the fixed version. That confirmation closes the loop: you saw the crash start at a build, you found the change, and you watched it disappear at the next build. This discipline turns crash response from guesswork into a repeatable procedure you can run calmly even during a stressful launch.

Setting it up with Bugnet

Bugnet attaches the build and version to every crash automatically through its SDK, so correlation does not depend on anyone remembering to tag reports. Crashes arrive with stack traces, device context, and the exact build that produced them, and the dashboard lets you filter any crash signature by build to see precisely when it started. Because the SDK captures game state alongside the crash, a regression that only triggers in a specific scene is easy to confirm against the build that introduced that scene.

Occurrence grouping is what makes the first-seen view trustworthy. Bugnet folds duplicate crashes into one grouped signature with an occurrence count and a first-seen timestamp, so you can sort signatures by when they appeared and immediately spot the ones that began at your latest release. Filter by build to confirm a signature is absent from prior versions, watch the occurrence count rise with rollout, and tag the responsible release, all from one dashboard during the exact moment you need to act.

Making correlation routine

The teams who survive bad launches calmly are the ones for whom this is routine, not an emergency improvisation. Make build tagging non-negotiable in your pipeline, review new crash signatures by first-seen build as a standing habit after each release, and keep a short rollback playbook so halting a build is a known procedure rather than a panic. When correlation is a muscle you exercise on every release, a bad build becomes a manageable incident instead of a crisis.

The broader payoff is trust in your own releases. When you can answer which build caused a crash within minutes, you ship more confidently, because you know that if something breaks you will see it and pin it fast. For a small studio without a dedicated on-call team, that confidence is what lets you keep shipping updates instead of freezing in fear of the next regression. Build the tagging in, watch the first-seen view, and stay in control.

A crash spike is a question, not an answer. Tag builds, read first-seen timing, and pin the regression to the release that caused it.