Open Source Feedback Widget

Collect feedback.
Ship to GitHub.

Wafir is a powerful, lightweight feedback and bug reporting widget that bridges user feedback directly to your GitHub workflow. Easy to embed, simple to configure.

Why Wafir?

Everything you need for seamless feedback collection

🚀

Easy to Use

Drop-in widget for any web app. Works natively as a Web Component, with React and Vue wrappers available.

🔓

Open Source

AGPLv3 licensed. Self-host the bridge or use our free service. Full control over your data.

🔗

GitHub Native

Issues go directly to your GitHub repo. Configure via a simple YAML file in your repo.

📸

Rich Context

Capture screenshots, browser info, and console logs automatically for better debugging.

🎨

Fully Customizable

Custom CSS, configurable forms, and slot-based triggers. Make it match your brand.

🌐

Framework Agnostic

Built as a Lit Web Component for direct browser use, plus React and Vue wrappers.

Quick Start

Get up and running in three steps

1

Install the widget

npm install wafir
# OR just load wafir.browser.js from your host (e.g. S3 or your CDN)
2

Add to your app (vanilla Web Component)

<script type="module" src="https://wafir-all.s3.us-east-2.amazonaws.com/wafir/latest/wafir.js"></script>

<wafir-widget
  target-type="string"   # github/issues | github/project
  target="string"        # e.g., owner/repo or owner/projectNum
  auth-ref="string"       # e.g., GitHub installation ID
></wafir-widget>
3

Configure your forms

# public/wafir.yaml
title: "Report a Bug"

targets:
  - id: default
    type: github/issues
    target: your-username/your-repo
    authRef: "YOUR_INSTALLATION_ID" # Replace with your GitHub App installation ID

# Widget forms - only showing issue form for basic bug reporting
forms:
  - id: issue
    label: Issue
    icon: bug
    fields:
      - id: title
        type: input
        attributes:
          label: "Issue Title"
        validations:
          required: true
      - id: description
        type: textarea
        attributes:
          label: "Description"
        validations:
          required: true

Built With

Modern, reliable technologies

Lit TypeScript Vite Fastify