PHPackages                             a-pb/horizon-ui - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. a-pb/horizon-ui

ActiveLibrary[Queues &amp; Workers](/categories/queues)

a-pb/horizon-ui
===============

Enhanced UI for Laravel Horizon - adds job name search/filter to Pending, Completed, and Failed tabs.

v1.0.1(4mo ago)02↓91.7%MITVuePHP ^8.2

Since Mar 24Pushed 4mo agoCompare

[ Source](https://github.com/a-pb/horizon-ui)[ Packagist](https://packagist.org/packages/a-pb/horizon-ui)[ Docs](https://github.com/a-pb/horizon-ui)[ RSS](/packages/a-pb-horizon-ui/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (2)Versions (3)Used By (0)

a-pb/horizon-ui
===============

[](#a-pbhorizon-ui)

Enhanced UI for Laravel Horizon — adds job name search/filter to **Pending**, **Completed**, and **Failed** job tabs.

Installation
------------

[](#installation)

```
composer require a-pb/horizon-ui
```

The package auto-discovers its service provider. No additional configuration needed.

What it does
------------

[](#what-it-does)

This package extends the official `laravel/horizon` dashboard with job name filtering:

- **Pending Jobs** — search input to filter by job class name
- **Completed Jobs** — search input to filter by job class name
- **Failed Jobs** — search input to filter by job class name (alongside the existing tag search)

The search is case-insensitive and matches partial phrases. Results are debounced (500ms) for a smooth experience.

How it works
------------

[](#how-it-works)

1. **Controller overrides** — Registers enhanced versions of `PendingJobsController`, `CompletedJobsController`, and `FailedJobsController` that accept a `query` parameter and scan Redis for matching job names. When no `query` parameter is present, the original Horizon logic is used via `parent::index()`.
2. **Middleware JS swap** — A `SwapHorizonAssets` middleware (appended to the `horizon` middleware group) replaces the inlined `` block in Horizon's HTML response with our enhanced JS bundle that includes search UI components. No Blade views are overridden — Horizon's `layout.blade.php` is used as-is.
3. **Zero config** — Routes are registered with the same names as Horizon's originals, so Laravel's last-registered-wins behavior ensures our enhanced controllers handle the requests.

What is NOT overridden
----------------------

[](#what-is-not-overridden)

- Horizon's Blade views (layout, etc.)
- Horizon's CSS styles
- All other Horizon API routes (dashboard, metrics, batches, monitoring, etc.)
- Horizon's authentication and authorization logic

Requirements
------------

[](#requirements)

- PHP ^8.2
- Laravel ^11.0 | ^12.0
- Laravel Horizon ^5.0

Development — rebuilding the frontend
-------------------------------------

[](#development--rebuilding-the-frontend)

The `dist/app.js` bundle is pre-built and committed to the repository. To rebuild it after modifying files in `patches/`:

```
# Provide the path to the installed laravel/horizon package
HORIZON_PATH=/path/to/vendor/laravel/horizon ./build.sh
```

The build script:

1. Copies all JS sources from Horizon's vendor directory
2. Overlays modified Vue components from `patches/`
3. Runs Vite to produce `dist/app.js`
4. Cleans up the temporary source files

License
-------

[](#license)

MIT

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance75

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

136d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2bb6bab11f6fec83c666b5f2841d35936ccbfd55a53ee3aa6c12b6b344f5d0e5?d=identicon)[a-pb](/maintainers/a-pb)

---

Top Contributors

[![a-pb](https://avatars.githubusercontent.com/u/72490717?v=4)](https://github.com/a-pb "a-pb (4 commits)")

---

Tags

searchlaraveluiqueuefilterdashboardjobshorizon

### Embed Badge

![Health badge](/badges/a-pb-horizon-ui/health.svg)

```
[![Health](https://phpackages.com/badges/a-pb-horizon-ui/health.svg)](https://phpackages.com/packages/a-pb-horizon-ui)
```

###  Alternatives

[convenia/pigeon

3335.3k](/packages/convenia-pigeon)[anousss007/vigilance

A driver-agnostic control center for Laravel queues, jobs, commands and the scheduler. Monitor what ran (with parameters), see failures, and dispatch jobs or run artisan commands manually from a self-contained dashboard.

1906.8k](/packages/anousss007-vigilance)[renoki-co/horizon-exporter

Export Laravel Horizon metrics using this Prometheus exporter.

24152.9k](/packages/renoki-co-horizon-exporter)[romalytar/yammi-jobs-monitoring-laravel

Queue monitoring and observability for Laravel. Tracks job lifecycle, retries, failures and a dead-letter queue across all queue drivers (Redis, SQS, database, sync), with failure fingerprinting, scheduled-task monitoring, worker heartbeats, duration-anomaly detection and alerts (Slack, mail, PagerDuty, Opsgenie, webhook).

261.3k](/packages/romalytar-yammi-jobs-monitoring-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
