Docket

FEEDBACK

GitHub feature request issue templates

A copy-paste issue form, the config that adds contact links, and where it goes.

7 MIN READ Last updated 23 August 2026

A GitHub issue template is a YAML file that GitHub renders as a structured form instead of a blank text box, so every reporter fills in the same fields in the same order. Below is a complete feature request form you can copy, the field types explained, a matching bug report form, and the config file that adds contact links or turns off blank issues entirely.

Where do issue template files go?

Every template lives in .github/ISSUE_TEMPLATE/ at the root of your repository, one YAML file per template.

.github/
  ISSUE_TEMPLATE/
    feature_request.yml
    bug_report.yml
    config.yml

GitHub reads every .yml file in that folder and offers each one as an option when someone clicks "New issue". The config.yml file in the same folder controls what sits alongside those options, covered below.

What does a complete feature request form look like?

name: Feature request
description: Suggest an idea for this project
title: "[Feature]: "
labels: ["enhancement"]
body:
  - type: textarea
    id: problem
    attributes:
      label: What problem does this solve?
      description: What are you trying to do that the product does not support?
      placeholder: I'm always frustrated when...
    validations:
      required: true
  - type: textarea
    id: solution
    attributes:
      label: What would you like to happen?
      description: A clear description of the change you would like to see.
    validations:
      required: true
  - type: textarea
    id: alternatives
    attributes:
      label: Alternatives you've considered
      description: Other ways you have tried to solve this, or your workaround.
    validations:
      required: false
  - type: dropdown
    id: priority
    attributes:
      label: How much does this affect you?
      options:
        - Nice to have
        - Would use it regularly
        - Blocking my work
    validations:
      required: true
  - type: checkboxes
    id: terms
    attributes:
      label: Checks
      options:
        - label: I searched existing issues before opening this one
          required: true

What does each field type actually do?

GitHub's issue forms support a small set of field types, and each behaves differently once it renders.

A few attributes apply across most of these:

What does a matching bug report form look like?

name: Bug report
description: File a bug report
title: "[Bug]: "
labels: ["bug", "triage"]
body:
  - type: textarea
    id: what-happened
    attributes:
      label: What happened?
      description: Tell us what you expected and what happened instead.
      placeholder: I expected X, but Y happened instead.
    validations:
      required: true
  - type: textarea
    id: reproduce
    attributes:
      label: Steps to reproduce
      description: A numbered list, starting from a known point.
      placeholder: |
        1.
        2.
        3.
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: Version
      description: Which version were you running?
      placeholder: v1.2.3
    validations:
      required: true
  - type: textarea
    id: logs
    attributes:
      label: Relevant log output
      description: This is automatically formatted as code, no backticks needed.
      render: shell
    validations:
      required: false

For a longer walkthrough of bug-specific templates, including a crash-focused version, see a feature request template you can copy, which covers the equivalent territory for feature requests.

What does config.yml control?

config.yml sits in the same .github/ISSUE_TEMPLATE/ folder and isn't a form itself. It controls the page a reporter sees before choosing a template: whether a blank issue is still allowed, and what extra links appear alongside the templates.

blank_issues_enabled: false
contact_links:
  - name: Ask a question
    url: https://github.com/your-org/your-repo/discussions
    about: Please use Discussions for questions rather than the issue tracker.
  - name: Security vulnerability
    url: https://github.com/your-org/your-repo/security/policy
    about: Please report security issues privately rather than as a public issue.
Your own support centre, in your own repository

One payment, no subscription, unlimited products.

Where does this approach fall short?

Issue forms are a good fit for a developer-facing project and a poor fit for a consumer product, for three reasons that don't show up until people actually try to use one.

First, posting requires a GitHub account. Most buyers of a consumer app do not have one and are not going to create one just to leave a suggestion, which quietly filters out the majority of your actual audience before a single form field matters.

Second, reactions on an issue are not votes. A thumbs-up emoji feels like a vote, but nothing about GitHub's issue tracker sorts, ranks or surfaces issues by reaction count, so the loudest or oldest thread wins by default rather than the most-wanted one.

Third, every complaint filed this way is public, permanent, and indexed against your product name. A frustrated bug report or a blunt "this is missing" issue sits on the open web next to your repository forever, discoverable by anyone searching your product's name, in a format built for developers rather than customers.

None of this makes issue forms wrong. For an open source project or a developer tool where your users already live on GitHub, this is close to the best structured intake you can build for free. For a consumer product, a dedicated feature request board that doesn't require a GitHub account is the better fit; see feature request tools for what that looks like.

Frequently asked questions

Do I need both a feature request form and a bug report form?

Yes, if your repository takes both kinds of reports. Splitting them keeps the fields relevant. A bug report needs steps to reproduce and a version number; a feature request needs a problem statement and a priority level. Mixing both into one form means half the fields are irrelevant to any given submission.

Can I require a GitHub issue form field without making the whole form annoying?

Keep required fields to the ones you genuinely can't triage without: the problem description on a feature request, the steps to reproduce on a bug. Everything else, including alternatives considered or extra context, should stay optional so the form doesn't feel like a wall before someone can submit it.

What happens if someone tries to open a blank issue when blank_issues_enabled is false?

They're taken straight to the template picker instead, with no option to skip past it into a free-text box. Combined with contact_links, this means every path from "New issue" ends at either a structured form or a link somewhere more appropriate, like Discussions.

Can I use dropdown options to auto-apply a label?

Not directly from the YAML syntax itself; dropdown answers are stored against the field's id and shown in the issue body, not translated into a label automatically. Auto-labelling based on a dropdown answer needs a separate workflow or bot reading the issue body after it's filed.

Is a GitHub issue form worth setting up for a small open source project?

Usually yes, since it costs nothing beyond writing the YAML once and it immediately makes every report more consistent to triage. The tradeoff worth knowing before you commit to it is the same one that applies to GitHub Issues generally: it only works if your contributors and users are already comfortable creating a GitHub account to use it.