## TL;DR
A bug that only happens on one form factor is still a bug, it just has more suspects: the renderer, the input model, the network, and the OS. Pin down the split first (exactly which device works and which fails), collect exact versions, then rule out the cheap causes, network differences and viewport size, before handing engineering a repro. A screen recording of the failure is the single most useful artifact.

## The query

```text
how to diagnose mobile vs desktop-only bugs with users
```

## Use this when

- A user reports something broken on their phone but fine on desktop
- A bug reproduces on desktop but not on mobile
- You need a clean device-specific repro for engineering
- Mobile-only tickets keep stalling for lack of detail

## Not for

- Responsive CSS design work
- Choosing which devices to support
- Running a device lab or test farm
- App-store review or release issues

## Steps

### 1. Establish the exact split

Get it in writing: what works where. "Broken on my iPhone, fine on my laptop" is a starting point, not a repro. Ask for the failing device and the working device, and whether the failure is consistent or intermittent on the failing one.

Expected output: a stated split, failing environment versus working environment.

### 2. Collect exact environment details

Device model, OS version, and browser or app version, all three. "Latest iOS" is not a version. For web, also ask desktop versus mobile browser explicitly, some users test the "desktop site" on a phone, which is a third environment.

Expected output: full version strings for both sides of the split.

### 3. Rule out the network difference

Phones often run on mobile data while desktops sit on office wifi, sometimes behind a VPN or proxy. Ask the user to retry the failing device on wifi (or the working device on mobile data). A surprising number of device bugs are network bugs in disguise.

Expected output: the failure follows the device across networks, or the network is the cause.

### 4. Check input model and viewport

Touch versus mouse and small versus large viewport change behavior: hover states dont exist on touch, tap targets misfire, and narrow viewports trigger different layouts. Ask what gesture they used (tap, long-press, swipe) and have them rotate the phone once to test the wider layout.

Expected output: input and viewport ruled in or out as the trigger.

### 5. Get a screen recording and try to reproduce

Ask for a screen recording of the failure, narrated if possible. Then reproduce on the same class of device yourself, a real device beats an emulator for touch and OS quirks. If you cant reproduce, the recording plus the environment details from step 2 is your engineering handoff.

Expected output: a recording of the failure and a reproduction attempt with a clear result.

## Variant phrasings

### bug only happens on mobile, works on desktop

Steps 1 through 4 in order. Most of these are network, viewport, or touch issues.

### desktop-only bug, mobile works fine

Steps 2 and 4. Desktop-only often means a hover-dependent interaction or a wide-viewport layout path.

### how to reproduce a device-specific issue

Steps 2 and 5. Exact versions plus a recording is the whole handoff.

## Why it happens

Mobile and desktop run different rendering engines, different input models, and different OS behaviors (backgrounding, data saver, private relay), on different networks. A feature can be genuinely correct on one stack and broken on another, which is why "works on desktop" never closes a mobile ticket. The diagnosis is a process of elimination across those stacks.

## Edge cases

- Tablets straddle both: an iPad with a keyboard can behave like either. Note the exact setup.
- The user tested the desktop site on mobile: that is a third configuration, treat it as its own environment.
- OS-level features interfering: data saver, private relay, and aggressive battery optimization break things that look like app bugs. Ask about them.
- Intermittent on the failing device only: suspect memory pressure or backgrounding on mobile. Note when it happens (app freshly opened versus after hours).

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_kWbfuUJcgj9_BO_4G-JgyA
