A good bug report answers five questions
  • What is broken? (title / summary)
  • How do I reproduce it? (steps)
  • What should happen vs. what does happen? (expected / actual)
  • Where (environment, version) and who is affected?
  • How bad is it? (severity / impact)

Bug Report Title & Summary

  • [Component]: [Short description of what's broken] — [environment/version]
    Standard title format: component · description · context
  • [Feature] does not work as expected when [condition]
    Behaviour gap — avoids blaming
  • [Feature] throws [ErrorType] when [action]
    For exceptions and crashes
  • Regression: [Feature] broken since [version/date]
    Use "Regression" for things that used to work
  • Intermittent: [Feature] occasionally [problem]
    Explicitly flag non-reproducible bugs

Steps to Reproduce

  • Steps to reproduce:
    Use this as a header — reviewers scan for it
  • 1. Go to / Open / Navigate to…
    Start with the entry point
  • 2. Click / Select / Enter…
    One action per step
  • 3. Observe that…
    Where the bug appears
  • Reproducibility: Always / Sometimes (~50%) / Rarely
    Always state how consistently it occurs
  • Preconditions: [what setup is needed before Step 1]
    Any state or data required to trigger the bug

Expected vs. Actual Behaviour

  • Expected behaviour: [what should happen]
    Describe the correct outcome
  • Actual behaviour: [what happens instead]
    Describe the incorrect outcome precisely
  • The system should [verb]…, but instead it [verb]…
    Single sentence combining both
  • Error message: "[exact text]"
    Always quote error messages exactly — include the full stack trace if available
  • No error is shown, but the data is incorrect / missing.
    Silent failures are common — be explicit

Environment & Context

  • Environment: production / staging / local
    Specify where the bug was found
  • Version: [app version] / Commit: [SHA]
    Pin to a specific version or commit
  • Browser: Chrome 122 / Safari 17 / Firefox 123
    For frontend bugs — include version
  • OS: macOS 14 / Ubuntu 22.04 / Windows 11
    For desktop or CLI bugs
  • Account type / role: [admin / free / trial]
    If behaviour differs by user role
  • Attached: screenshot / screen recording / logs
    Always mention what evidence you've attached

Communicating Impact & Severity

  • Severity: Critical — production data loss / service down.
    SEV-1 language
  • Severity: High — core feature broken, no workaround.
    SEV-2 language
  • Severity: Medium — core feature affected, workaround exists.
    Note the workaround if there is one
  • Severity: Low — cosmetic issue / minor inconvenience.
    Cosmetic bugs still deserve tickets
  • Impact: approximately X users affected / seen X times per day.
    Quantify when you have data
  • Workaround: [steps]. This resolves the issue temporarily.
    Document workarounds to reduce support load