Quick answer: Rely on captured field context, the stack trace, device, OS, version, and breadcrumbs from real players, to find the cause without local reproduction, since the crash happens under conditions you don't have.
A crash you can't reproduce is the most frustrating kind, it works on your machine but crashes for players. The answer is not to reproduce it, but to capture the context that reveals why it happens. Here is what to do.
Capture the Crash Context From Real Players
If you can't reproduce a crash, stop trying to make it happen locally and instead capture it from the players it does happen to. Capture the stack trace, device, OS, version, and breadcrumbs automatically when the crash occurs in the field, so you have the context of the real crashes rather than trying to recreate conditions you don't know.
Bugnet captures crashes from real players automatically with the stack trace, device, OS, version, and breadcrumbs, so a crash you can't reproduce still gives you full context. That captured context is the key, you don't need to reproduce the crash if you have the stack trace and conditions from the players who actually hit it.
Read the Pattern and Breadcrumbs for the Conditions
A crash you can't reproduce happens under conditions you don't have. Read the captured data for those conditions: does it cluster on a device or OS version (device/OS-specific)? Do the breadcrumbs show a sequence of actions before the crash (a state-specific trigger)? The pattern and breadcrumbs reveal the conditions you were missing.
Bugnet groups crashes by signature with device, OS, version, and breadcrumb context, so the conditions behind an unreproducible crash, the device it clusters on, the actions preceding it, are visible. Those conditions are what you couldn't guess locally, and seeing them in the captured data is how you understand and reproduce (or directly fix) the crash.
Fix Based on the Captured Evidence and Verify
With the stack trace pointing at the code and the conditions revealed by the pattern and breadcrumbs, fix the crash based on the evidence, even without ever reproducing it locally. Then verify per version that the crash stopped in the field, confirming the fix worked for the players who hit it.
Bugnet tracks crashes per version, so after fixing based on the captured evidence you can confirm the crash stopped in the field on the new build. This verifies a fix for a crash you never reproduced, the field data showing the crash gone is your confirmation, since you couldn't test the fix against a local reproduction.
When your game crashes and you can't reproduce it, rely on captured field context, the stack trace, device, OS, version, and breadcrumbs from real players, to find and fix the cause, then verify per version. You don't need to reproduce a crash you can fully capture.