Complete bug format and channel variants

Bug report template

Capture enough evidence to reproduce, assess, and route a defect without making the reporter diagnose it first.

Copy the complete bug report template

This bug report format is a superset. It captures everything a triage or engineering team may need, but the reporter should fill only fields that apply and are safe to share. Unknown is a useful answer. Guessing at a version, severity, or cause creates more work than leaving the field for triage.

Start from a clean state when possible and write the shortest reproduction sequence that still triggers the problem. Remove passwords, access tokens, personal data, private URLs, and customer records from screenshots and logs before attaching them.

Bug report markdown
# Bug report: [Short, specific summary]

## Description
[Explain what went wrong and what you were trying to do.]

## Steps to reproduce
1. [First action]
2. [Second action]
3. [Action that triggers the problem]

## Expected result
[What should have happened?]

## Actual result
[What happened instead? Include the exact error message if one appeared.]

## Environment
- Device: [Desktop, laptop, phone, tablet, or model]
- OS and version: [Example: macOS 15.5]
- Browser and version: [Example: Chrome 138]
- App or build version: [Example: 2.14.0 or build 821]
- Screen size: [Example: 1440 x 900]

## Severity
[Critical, high, medium, or low. Severity describes how badly the bug affects the product or user.]

## Priority
[Urgent, high, normal, or low. Priority describes when the team should address the bug relative to other work.]

## Reproducibility
[Always, intermittent, or once. If intermittent, estimate how often it occurs.]

## URL where it happened
[Paste the exact page or screen URL, with sensitive values removed.]

## Attachments
- Screenshot: [Link or attachment]
- Screen recording: [Link or attachment]
- Console or network logs: [Link or attachment]
- Stack trace: [Paste or link]

## Reporter and date
- Reporter: [Name or contact]
- Date observed: [YYYY-MM-DD, including time zone when relevant]

## Workaround
[Describe any temporary way to complete the task, or write "None known."]

## Additional context
[Add account state, frequency, related changes, affected users, or anything else that may help investigation.]

Field-by-field bug report guidance

Title and description

Write the title as an observable failure in a specific area. A useful pattern is: product area, action, unexpected result, and important condition. "Export button does nothing" is better than "Export broken," while "CSV export stalls after selecting all date ranges in Chrome 138" is better when those conditions are already confirmed.

The description explains the goal and the effect of the failure. State what the reporter was trying to complete, where the process stopped, and whether data, money, access, or trust was affected. Do not repeat the title with more words. Give the investigator the context needed to understand why the behavior matters.

Steps to reproduce

Number each action and begin from a known state. Include the relevant role, account condition, sample input, page, and action that triggers the bug. One action per step makes it clear where observed behavior diverges. If setup data is required, provide a safe sample or instructions for creating it.

Test the sequence once before submitting when doing so is safe. Remove steps that do not affect the outcome. If the issue is intermittent, record several attempts and the approximate hit rate. A sequence that fails two times in ten is more useful than a label that says it happens sometimes.

Expected and actual result

Expected result states the behavior the product promise, interface, documentation, or prior version supports. Be concrete. Instead of saying the page should work, say that selecting Export should download one CSV containing the chosen date range.

Actual result records what happened instead. Include exact error text, final state, missing output, duplicated action, or timing. Do not replace observation with a suspected cause. "The request returned 504 after 30 seconds" is evidence. "The database is overloaded" is a hypothesis unless the reporter verified it.

Environment

Environment narrows the conditions. Record device type or model, operating system and version, browser and version, app or build version, and screen size. For an API or server issue, replace the irrelevant display fields with endpoint, client version, deployment region, runtime, and request identifier.

Versions matter more than labels such as latest. The latest build changes over time, while an exact value remains useful after the product moves on. If the report was tested in a second browser or device, state whether the result changed. That comparison can reduce the search area before engineering begins.

Severity and priority

Severity describes how badly the bug affects the product or user. Priority describes when the team should address the bug relative to other work. Keep them as separate fields because impact and sequence answer different questions.

A critical-severity issue may cause data loss, security exposure, or a broad inability to use a core workflow. High may block a major task without a reasonable workaround. Medium disrupts a workflow but leaves an alternative. Low is narrow, cosmetic, or mildly inconvenient. Adapt these definitions to the product and publish them beside the form.

Priority incorporates severity plus reach, customer commitments, launch timing, available workarounds, engineering risk, and opportunity cost. Triage should own the final priority. A reporter can suggest severity from their experience, but should not be required to understand the entire product queue.

Reproducibility, URL, and attachments

Mark whether the bug happens always, intermittently, or only once. Include the number of attempts for intermittent behavior. Paste the exact page URL after removing tokens and sensitive query values. The path, object type, and safe parameters can reveal a route-specific failure that a homepage link would hide.

Choose attachments for the question they answer. A screenshot records visual state. A screen recording preserves actions, timing, and transitions. Console and network logs show client and request failures. A stack trace identifies the failing execution path. Add timestamps so evidence from several systems can be compared.

Reporter, date, workaround, and context

Reporter information gives triage a path to ask a focused follow-up. Record the observation date and time zone when logs or deployments may matter. If the reporter needs privacy, use the supported contact process rather than placing personal information in a public issue.

A workaround helps support serve affected customers while the fix is evaluated. State the exact alternative and its limits. Write None known when there is no workaround. Additional context can include account state, affected users, a recent configuration change, a related release, or similar reports that do not fit a more specific field.

Filled bug report example

This fictional report shows how specific observations reduce the number of questions triage must ask before reproduction.

Bug report: CSV export stalls when All time is selected

Description: A board owner is trying to export request data for an annual review. The export completes for 30-day and 90-day ranges but never downloads when All time is selected.

Steps to reproduce

  1. Sign in as the owner of a board containing more than 2,000 requests.
  2. Open Board settings, then Data export.
  3. Select CSV and choose the All time date range.
  4. Select Export.

Expected result: One CSV downloads with every request visible to the owner.

Actual result: The button shows Preparing export for 30 seconds, then returns to its initial state. No file or visible error appears. The network request returns 504.

Environment

  • Device: 14-inch laptop
  • OS: macOS 15.5
  • Browser: Chrome 138.0.7204.50
  • App version: Web build 821
  • Screen size: 1512 x 982

Severity: Medium. Export is blocked, but requests remain available in the board.

Priority: High. The annual customer review is scheduled this week.

Reproducibility: Always, five of five attempts. The 90-day export succeeds.

URL: https://app.example.test/boards/demo/settings/export

Attachments: Redacted network log, 42-second screen recording, and screenshot of the final state.

Reporter and date: Mina, product operations, 2026-07-15 at 14:20 UTC.

Workaround: Export one quarter at a time and combine the four files.

Additional context: The problem began after the board passed 2,000 requests. A second board with 430 requests completes an All time export.

Bug template variants by channel

GitHub issue in markdown

Keep the complete markdown structure for repositories where maintainers need reproducible evidence from external reporters. Add checkboxes for a duplicate search, a current-version test, and confirmation that sensitive data was removed. Use form validation for the title, reproduction, expected result, actual result, and environment, then leave advanced logs optional.

Labels should be applied by automation or maintainers after submission. Asking every reporter to choose the correct component, severity, and priority can reduce completion quality. Preserve the plain report in the issue body so it remains readable outside any particular project view.

Jira

Map the short summary to Summary and the observation, steps, expected result, actual result, and context to Description. Keep Environment, Affects version, Attachments, Severity, and Priority as separate fields only if the team actively uses them in triage. A field nobody trusts adds form work without improving routing.

Let triage assign ownership, fix version, and final priority. Link related customer reports to one engineering issue instead of cloning the same defect for every account. The issue should hold the reproducible technical record while customer-facing systems preserve the affected audience and follow-up.

Linear

Use the title as the concise failure and paste a shortened version of the markdown into the description. Keep steps, expected, actual, environment, reproducibility, and evidence. Use team, project, cycle, labels, and estimate only after the issue is confirmed and ready for planning.

If support or customers cannot access the workspace, keep intake elsewhere and create the engineering issue during triage. Link the two records so the technical fix does not lose the original customer context or the audience that should hear when it ships.

Plain email

Put the short summary in the subject. In the body, ask what the sender was trying to do, the numbered steps, expected and actual result, page URL, device or browser, and attachments. Avoid a table that breaks when forwarded. Simple headings and numbered steps survive email clients and replies better.

Reply with the shared issue or request link after triage so future updates do not remain trapped in one thread. The email is an intake channel, not the best long-term system of record for duplicate reports, product status, and resolution notices.

Minimal one-liner for non-technical reporters

Use: "I was trying to [goal] on [page or screen], but [what happened] instead of [what you expected], using [device or browser]." Add a screenshot and contact permission when possible. That sentence captures intent, location, observation, expectation, and environment without requiring the reporter to know technical terminology.

Triage can ask for steps, exact version, frequency, and logs after checking for duplicates. A short accessible intake form is better than a complete form that causes affected users to abandon the report before submitting useful evidence.

What makes a bug report actionable

Actionable does not mean long. It means a reader can confirm the behavior, understand its impact, and choose the next owner. A short report with a reliable sequence and exact environment can be more useful than several pages of theories and unfiltered logs.

Separate facts from hypotheses. Put observed behavior in the main report and suspected causes in additional context. This lets an investigator test the evidence without inheriting an assumption. Update the record when the cause is confirmed rather than editing the original observation into a different story.

State the user impact in practical terms. Does the issue block a task, lose work, expose information, produce a wrong result, slow a common workflow, or create a visual defect? Include reach when it is known, but do not invent a count. One confirmed affected account is clearer than a guess that everyone is affected.

Make the workaround visible to support and affected users. A workaround can reduce immediate impact without lowering the need to fix the underlying defect. Record its cost and limitations so priority discussions consider the real burden rather than treating any alternative as a complete resolution.

Triage duplicate reports on a public board

Several customers may report the same visible failure through different channels. A public board gives the problem one durable record. Support can direct a reporter to the existing item, add the new evidence, and let the customer vote rather than creating another isolated issue.

Combine reports only when the observed behavior and likely scope match. Similar symptoms can have different causes. Preserve the environment, frequency, and attachments from each affected user so engineering can see whether one defect spans several conditions or several defects merely look alike.

The feature request tool workflow shows how one record can collect votes, move through status, and notify the interested audience after delivery. Bugs and feature ideas need different investigation, but both benefit from visible deduplication and a response path.

Keep the engineering issue and the customer record linked. The engineering system holds diagnosis, implementation, review, and deployment work. The public record holds understandable status and the affected audience. When the fix ships, update both and write a release note that explains the corrected behavior.

Continue with the product feedback form template or return to all product templates. FeatQ's flat payment options are listed on the pricing page.

Frequently asked questions

Practical answers about agents, voting, embeds, and pricing.

A good bug report format starts with a specific summary, then records the description, numbered reproduction steps, expected and actual results, environment, severity, priority, reproducibility, exact URL, evidence, reporter and date, workaround, and additional context. The order should help someone reproduce before asking for more information.

Severity describes the impact of the bug on the product or user. Priority describes when the team should address it relative to other work. A severe bug can have lower priority when it affects an unreachable path, while a visually minor bug can have urgent priority when it blocks an important launch.

Use the smallest numbered sequence that reproduces the issue from a known starting state. Include setup only when it matters. A reader should know which account state, page, input, and final action trigger the problem without having to infer missing transitions.

Include evidence that helps confirm or diagnose the behavior. A screenshot shows the visible state, a recording shows timing and sequence, network or console logs show client and request failures, and a stack trace shows the failing code path. Remove secrets and personal data before attaching anything.

Yes, but provide a shorter entry point for non-technical reporters. Ask for the goal, what happened, where it happened, device or browser, and a screenshot first. The triage team can add severity, priority, logs, and engineering detail after confirming the report.

Still have questions? Contact us

Keep every report attached to its resolution

Collect duplicate demand in one record, publish accurate status, and notify the affected audience when the fix ships.

View FeatQ pricing