Bug Report Template — Repro Steps Devs Actually Need

webdev qa bug-report gamedev tools

“It crashed.” Black screenshot. No OS. No build. No steps. That ticket sits in triage for two days while someone DMs “can you repro?” A usable bug report is a gift to future-you and the person who ships the fix — especially for game crashes where “sometimes when fighting” wastes a sprint.

The minimum viable report

FieldWhy it matters
TitleSearchable one-liner (Crash on save when inventory full)
Build / version“Latest” is not a version — use commit, build number, or store version
PlatformWindows 11, iOS 18.1, Chrome 126, Steam Deck…
Hardware extrasGPU, controller, headset — for games especially
Repro rate1/1, 3/10, once-only
StepsNumbered, start from a known state
Expected / ActualWhat should happen vs what happened
EvidenceLog snippet, stack, clip, save file

Draft structure with a bug report template, then paste into GitHub/Jira/Discord and attach evidence. Fill environment before you write the novel.

Repro steps that do not waste time

Bad: “Open the game and mess around until it dies.”

Better:

1. New game → difficulty Normal
2. Reach tutorial chest (first room)
3. Fill inventory to 20/20
4. Open inventory → drag potion onto hotbar slot 1
5. Actual: freeze 3s → desktop
   Expected: potion equips

One action per line. Name UI labels exactly as shown. Note timing for race bugs (“within 1s of landing”). If a save file or seed is required, say so in step 0.

Games vs web vs mobile

Games: graphics preset, fullscreen vs windowed, VSync, overlays (Discord/NVIDIA/Steam), mods, save/seed, multiplayer region. Attach Player.log / crash dumps when the engine provides them.

Web: browser + version, account role/feature flags, exact URL (redact secrets), console errors, Network status codes, whether hard refresh changes anything.

Mobile: device model, OS build, install source (TestFlight, Play internal track, store), storage pressure, backgrounded vs foreground crash.

Evidence without dumping secrets

GoodRisky
Last 50 log lines, IDs scrubbedFull .env / auth tokens
10–30s clip of the freezeHour-long desktop stream with Slack open
AbortError stackCustomer PII / chat contents in screenshots
Redacted HAR of the failing callSession cookies in HAR

If legal or support needs the full dump, share via a private channel with retention limits — not a public Discord.

Severity without ALL CAPS

Pair impact with scope — not just “URGENT!!!”:

  • Blocker — cannot purchase / soft-locks new users / data loss
  • Major — frequent crash on a common path
  • Minor — cosmetic, rare, workaround exists

Useful labels: crash, softlock, regression, platform-pc, needs-repro. Three severity levels beat twenty synonyms. Note if this is a regression from build N−1 — that halves investigation time.

Flaky and once-only crashes

If repro is 1/20, say so honestly and list suspects (overlays, low disk, thermal throttling, specific locale). Capture:

  • Exact time (UTC) for log correlation
  • Whether other apps crashed
  • Whether it happened after sleep/resume

Do not force a “100% repro” claim you cannot defend. Engineers prioritize differently when they know it is intermittent.

Player and support intake

Rewrite messy player emails into the template before eng pickup — five minutes of cleanup saves fifty of clarification. Support macros that ask for build + platform + steps up front pay for themselves. For Discord communities, pin the skeleton and reject empty “game broken” posts gently with a link.

Copy-paste skeleton

### Summary

### Environment
- App / build:
- OS / device:
- Repro rate:

### Steps
1.
2.

### Expected

### Actual

### Attachments

Triage hygiene for teams

  • Duplicate search by title keywords before filing
  • One bug per ticket (do not bundle three crashes)
  • Update the ticket when you find a shorter repro
  • Close with the fixing PR / patch notes build number

Unstructured reports create ping-pong. Structured ones get labeled and fixed. Next crash — fill the fields once, attach evidence, and skip the two-day “what build?” loop.