Quick answer: A game that crashes on mobile but not desktop is hitting mobile-specific constraints your desktop doesn't have: much tighter memory limits (mobile OSes kill memory-hungry apps), enormous device fragmentation, the mobile app lifecycle (interruptions, backgrounding, suspend/resume) that desktop lacks, and different mobile GPUs/drivers. Capture device context to identify the affected devices and constraint, then fix for the mobile environment.
Mobile is effectively a different platform from desktop, with far tighter resources, a different app lifecycle, and thousands of device variations, so a game that's rock-solid on your desktop can crash constantly on phones. The desktop-versus-mobile gap is large, and mobile-only crashes are almost always about a mobile-specific constraint your forgiving desktop environment never enforced.
Why Mobile Crashes When Desktop Doesn't
Mobile imposes constraints desktop doesn't. Memory is the big one: phones have far less RAM than a desktop and the OS aggressively terminates apps that use too much, so a memory footprint that's fine on desktop causes out-of-memory crashes (or OS kills) on mobile. Fragmentation: there are thousands of mobile device models with wildly varying capabilities, so a bug specific to one chipset, GPU, or OS version hits some devices and not others (and never your desktop). The app lifecycle: mobile apps get interrupted constantly (calls, notifications, backgrounding, suspend/resume), and mishandling these transitions crashes the game, desktop rarely faces them. And mobile GPUs/drivers differ from desktop, surfacing graphics crashes specific to mobile hardware.
So mobile-only crashes cluster around memory, specific devices, lifecycle transitions, or mobile graphics, none of which your desktop testing exercises.
How to Diagnose It
Device context is essential on mobile because of fragmentation, you need to know exactly which devices crash. Capture each crash with the device model, OS version, available memory, and GPU, then look at the pattern. Out-of-memory crashes on lower-RAM devices point at the memory constraint. Crashes concentrated on specific device models or chipsets point at device-specific (often GPU/driver) bugs. Crashes around backgrounding/resuming point at lifecycle handling. ANRs (the app frozen long enough for the OS to flag it) point at main-thread blocking.
Bugnet captures mobile device context, model, OS, memory, GPU, with each crash and groups by signature, so a mobile-only crash arrives correlated with the exact devices and constraint behind it. Given mobile fragmentation, this device-level correlation is what makes mobile crashes tractable: 'crashes on these specific devices with this much memory' is a fixable diagnosis, where a bare 'crashes on mobile' is not.
How to Fix It
Fix for the constraint you've identified. For memory: reduce your mobile memory footprint (smaller textures and assets, less loaded at once, account for VRAM), since mobile OSes will kill you for exceeding it. For device-specific crashes: add workarounds or fallbacks for the affected chipsets/GPUs, or handle the unsupported feature gracefully. For lifecycle: correctly handle backgrounding, interruptions, and suspend/resume, save state, pause safely, and restore correctly, so a phone call or app switch doesn't crash the game. For ANRs: move heavy work off the main thread so it stays responsive.
Test on real mobile devices, especially lower-end and older ones, not just a flagship or an emulator, because the constraints (memory, specific hardware) only bite on constrained real devices. After fixing, verify the mobile crash clusters stop on the affected devices via version-tagged reporting. Treating mobile as its own platform with its own constraints, rather than assuming desktop behavior carries over, is the mindset that resolves mobile-only crashes.
Mobile is a different platform: tight memory, huge fragmentation, an app lifecycle desktop lacks. Capture device context to find the constraint, and test on real low-end phones.