visual-feedback-for-laravel maintained by pushery
Visual Feedback for Laravel
In-page feedback widget with client-side screenshot capture for Laravel and Livewire.
Your users see the bug. This gets you the picture — plus the browser, the viewport, the URL and the scroll position they were at — without asking them to explain any of it.
Install
composer require pushery/visual-feedback-for-laravel
php artisan vendor:publish --tag=visual-feedback
Then place the widget once in your layout and point the mail channel somewhere —
VISUAL_FEEDBACK_MAIL_TO ships empty, and a report with nowhere to go still shows the
reporter a success screen. Needs PHP 8.4+, Laravel 12+ and Livewire 4.3+.
What it does
- A Livewire widget in modal or inline mode — built-in floating button, standalone trigger, or a plain window event if you place your own.
- Screenshot capture in two stages: the browser's own screen capture where it exists, falling back silently to a DOM renderer that works everywhere, including iOS. The report records which stage produced the image.
- Region redaction that holds in both stages — the area is blacked out and input values cleared before anything is captured.
- Two view trees — framework-free, or WireKit components that inherit your design tokens.
- Delivery channels: mail, database and signed webhook, each isolated, individually queued, extensible with your own.
- Abuse protection with no external service — honeypot, server-anchored time trap and rate limits, running underneath any gate you add rather than instead of it, and no configuration value removes them. The honeypot and the time trap depend on nothing outside the request; the rate limits go through your cache, and what happens when that is down is a setting.
- Built to WCAG 2.1 AA, proven rather than asserted: a full axe sweep over every widget state in both trees, a keyboard-only run through the whole flow, and contrast measured on the values the browser actually rendered.
Documentation
Full docs: docs.pushery.com/visual-feedback-for-laravel
- Installation — requirements, publish tags, where the widget goes
- Configuration — every config key and its environment variable
- The capture cascade — the two stages, and which one produced a report
- Placing the trigger — the built-in button, your own, or the window event
- View trees — framework-free, or WireKit with your design tokens
- Delivery channels — mail, database, signed webhook, and adding your own
- Abuse protection — what the floor covers on its own, and the seam for adding your own gate
- Privacy and retention — the notice, and how long anything is kept
- Accessibility — what is proven, and the three things your page owes
- Integration contract — CORS, CSP, and what the DOM stage does not reproduce
- Testing — driving the widget from your own suite, and what the bundled suites already prove
Third-party notices
The capture bundle includes html2canvas-pro 2.4.1 (MIT). The version is named so you can match an advisory against what you actually ship.
Security
Please review the security policy and report vulnerabilities privately rather than opening a public issue.
Built by Pushery
This package is built and maintained by Pushery — a Berlin-based studio building Laravel applications, SaaS products, and open-source tools.
Building a Laravel UI? WireKit, Pushery's open-source Livewire component kit, gives you a polished component library out of the box. Browse the rest of our work at pushery.com.
License
The MIT License (MIT). See LICENSE for details.