Quick answer
Save the YAML below as .github/ISSUE_TEMPLATE/feature_request.yml on your default branch. Issue forms must begin with name, description and body; title and labels are optional, and labels are only added if they already exist in the repository. The form appears in the template chooser next to your bug report form.
feature_request.yml (issue form)
name: Feature request
description: Suggest an idea or an improvement.
title: "[Feature]: "
labels: ["enhancement", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for the idea! Please search existing issues first so we can keep the discussion in one place.
- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: Describe the situation and what is hard today. Start with the problem, not the solution.
placeholder: When I export a report, I have to ... every time, which takes ...
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: What would you like to happen? Sketches, mock-ups and examples help.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives you've considered
description: Workarounds you use today, or other ways this could be solved.
validations:
required: false
- type: dropdown
id: impact
attributes:
label: How often would you use this?
options:
- Every day
- Every week
- Occasionally
- Not sure yet
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
description: Replace these with the parts of your product.
options:
- UI
- API
- Docs
- Other
validations:
required: false
- type: textarea
id: context
attributes:
label: Additional context
description: Screenshots, a short screen recording, links or anything else. You can drag files into this box.
validations:
required: false
- type: checkboxes
id: checks
attributes:
label: Before you submit
options:
- label: I searched existing issues and this hasn't been requested yet.
required: true
- label: I'm happy to help test this when it's ready.
required: falseWhy these fields
- Problem first, required. "Add a CSV button" is a solution; "I re-type this table into a spreadsheet every Friday" is the problem, and it may have a better fix.
- Alternatives show what people do today, which tells you how painful it is.
- How often is a quick, honest signal for prioritising, without asking users to rate their own idea.
- The search checkbox cuts duplicates. Responses are converted to Markdown in the issue body, so the issue reads normally afterwards.
feature_request.md (classic Markdown template)
Use this if you prefer a plain template. If you switch to the YAML form later under the same file name, delete the Markdown file in the same commit.
---
name: Feature request
about: Suggest an idea or an improvement.
title: "[Feature]: "
labels: enhancement, needs-triage
assignees: ''
---
### What problem does this solve?
<!-- Describe the situation and what is hard today. Start with the problem, not the solution. -->
### Proposed solution
<!-- What would you like to happen? Sketches and examples help. -->
### Alternatives you've considered
<!-- Workarounds you use today, or other ways this could be solved. -->
### How often would you use this?
<!-- Every day / every week / occasionally -->
### Additional context
<!-- Screenshots, a short screen recording, links. -->Pair it with your bug form
Keep the bug report and feature request as separate files in the same folder, each with a unique name. Then add a config.yml to turn off blank issues and point open-ended ideas to Discussions (replace OWNER/REPO):
blank_issues_enabled: false
contact_links:
- name: Questions and ideas discussion
url: https://github.com/OWNER/REPO/discussions
about: Not sure it's a feature request? Start a discussion first.Need the bug side? Copy the bug_report.yml issue form, and the pull request template for the PR that ships the feature.
Record the video part
A 30-second screen recording of the current workflow makes a feature request far easier to understand. Drag the file into the Additional context box. Bobbin is a free Chrome extension that records your screen, a window or a tab with your microphone and an optional webcam bubble. No account, no watermark, no time limit, and nothing is uploaded: the file stays on your computer.
- Click the Bobbin icon in Chrome's toolbar and choose Record screen, window or tab.
- Pick your microphone and turn on the camera if you want the webcam bubble.
- Press Start recording, choose what to share in Chrome's picker, and wait for the 3-second countdown.
- Pause with Alt+Shift+P, stop with Alt+Shift+S, then press Download to save the file.
To keep other tabs and notifications out of it, share just the Chrome tab (the webcam bubble appears only in screen and window recordings). Bobbin saves MP4 where your browser supports it (Chrome 126 or newer), WebM otherwise, and tells you which it used.
File size: our 60-minute 1080p test came to about 246 MB (roughly 4 MB a minute) on a simple synthetic screen; busy real screens can be larger, so a 1–2 minute clip is usually small enough to attach.
From The Bug Report & QA Kit
Need the bug side too? The full kit: 10 bug templates for GitHub, Jira, Linear and Markdown, 9 release checklists (126 checks), the severity guide, 8 bug-video scripts and trackers.
See the QA kit ($15, one-time) PDF + ZIP · 7-day refund · more free samples on the page
Checked on 23 October 2026 from their own pages: GitHub Docs: Syntax for issue forms. Features change; check the linked page before you rely on it.
Loom, Vidyard, Tella, Tango, Screencastify, Screenity, Zoom and Slack are trademarks of their respective owners. Bobbin is not affiliated with them. Prices and plan limits from their public pages as of 22 Oct 2026.