Skyline

Laravel Skyline vs Horizon New Dawn

New Dawn replaces Horizon's interface and leaves the workers alone. Skyline replaces the package, workers included.

Updated · Boring Observability

[ the bottom line ]

This is the closest comparison on the page, and New Dawn wins the parts it competes on: it is free, its dashboard is broader than ours on batches, monitored tags and bulk failure recovery, and it does not fork anything. Take Skyline when you need behaviour Horizon's workers do not have — weighted queues, front-of-queue dispatch, structured lifecycle logging — or when Laravel 11 support and a 1.0 that is not pre-release matter to you.

Horizon New Dawn
A free React 19 and Inertia interface that replaces Horizon's bundled dashboard while Horizon keeps running the workers. Free, MIT (pre-1.0)
Laravel Skyline
A commercial fork of Laravel Horizon that replaces the package and adds production queue operations. Annual subscription · MIT-licensed source

Of everything on this site's comparison pages, Horizon New Dawn is the one that competes with Skyline most directly, and the one where we have the least interest in spinning the answer. It replaces Horizon's bundled Vue interface with a React 19 and Inertia 3 application while — in its own words — keeping "Horizon's authorization, repositories, metrics, and queue workers in charge". It is MIT licensed and free. Its dashboard is, on several axes, broader than ours.

The distinction that matters is where each package sits. New Dawn replaces Horizon's interface. Skyline replaces the Horizon package. Everything else on this page follows from that one line.

Interface replacement vs package replacement#

New Dawn installs beside laravel/horizon. It reuses Horizon's Horizon::auth callback and middleware, honours Horizon's configured path and domain, keeps Horizon's API routes available, and can be removed by uninstalling the package and running horizon:install. Horizon is still the thing running your workers; New Dawn is the window onto it.

Skyline declares replace: laravel/horizon in Composer and keeps the Laravel\Horizon\ namespace, so it becomes your Horizon install. That is a heavier commitment — you are now depending on a fork — and it buys exactly one thing New Dawn structurally cannot offer: the ability to change what the worker process does. Weighted queue polling changes the order a worker checks its queues in. Front-of-queue dispatch changes which end of the Redis list a job is pushed onto. Lifecycle logging emits events from inside the queue machinery. None of those are reachable from a package that only replaces the front end, and New Dawn does not claim them.

The corollary is that this is an either/or. Both packages own the interface served at Horizon's configured path, so you run one of them, not both.

At a glance#

Capability New Dawn Skyline
Relationship to laravel/horizon Installs alongside it Forks and replaces it
Price Free, MIT Annual subscription
Release status Pre-1.0, documented operating envelope Pre-release
Laravel support floor 12.38+ or 13 (Laravel 11 excluded) 11+
PHP support floor 8.3+ 8.2+
Redis Cluster Not supported Horizon's own support, unchanged
Pause & resume a single queue Yes, incl. timed pauses Yes
Search jobs by partial class name Yes, across the full retained source Yes
Cancel / delete pending jobs Yes, individual and bulk Yes, individual and whole-queue
Batch search & batch management Yes, database-backed No
Monitored-tag views Yes Horizon's, unchanged
Retry failures by queue, tag or batch Yes No — per job, or all
Supervisor configuration views Yes, detailed Horizon's, unchanged
Light / dark / system themes Yes No
Weighted queue processing No — worker-side Yes
Front-of-queue dispatch No — worker-side onFront()
Structured job lifecycle logging No — worker-side Yes
JSON worker output No — worker-side Yes
Run a delayed or retrying job immediately Can make a pending job available Perform Now
Database migrations Yes — batch metadata None
Bulk actions execute As queued jobs on an async connection In the request

Where New Dawn is genuinely ahead#

Naming these is not generosity; it is the only way this page is worth reading. If one of the following is what you are shopping for, New Dawn is the better tool and it costs nothing.

  • Batches. New Dawn has database-backed batch search with status tabs, queue and connection filters, creation ranges and server-side sorting, plus cancelling active batches, retrying failed batch jobs and clearing finished ones. Skyline has none of this — batches are Horizon's stock views.
  • Bulk failure recovery. Retrying or clearing failures scoped to a queue, a monitored tag or a batch, with the work executed as bounded, resumable queued jobs. Skyline retries per job or all of them.
  • Interface quality. Themes, responsive layout, infinite scrolling, client-side column sorting, toast feedback. Skyline's dashboard is Horizon's, with new views bolted into it.
  • Supervisor introspection. Detailed configuration views covering scaling, balancing, process limits, memory, timeouts, retries, backoff and configuration warnings.
  • It is not a fork. You keep taking Horizon releases from Laravel directly, and reverting is composer remove plus horizon:install. No supply-chain question to answer at all.

Where Skyline is the better answer#

  • You need queue behaviour Horizon does not have. Weighted processing to stop a queue starving under strict priority; onFront() to jump an urgent job without a dedicated high-priority queue. Both are worker-side and therefore permanently out of New Dawn's reach.
  • You need job events in your log pipeline. Lifecycle logging to a channel of your choice — every transition, including the unique-lock discards nothing else reports — and structured JSON worker output.
  • You are on Laravel 11. New Dawn's floor is Laravel 12.38, deliberately, on the grounds that Laravel 11 is end-of-life. That is a defensible policy and also a hard blocker if you are still there.
  • You run Redis Cluster. New Dawn documents it as unsupported because its indexing uses commands that are not yet cluster-slot aware. Skyline inherits Horizon's behaviour unchanged.
  • You want a smaller operational footprint. See below — this is the difference that surprises people.

Operational footprint#

New Dawn's capability comes from building its own indexes over Horizon's data, and its README is unusually honest about what that costs to operate. Taking it on means taking on all of the following:

  • A migration, and compiled assets published into public/vendor/horizon-new-dawn/build, refreshed by a Composer post-autoload-dump hook the installer adds to your root composer.json.
  • Redis or Valkey configured with maxmemory-policy noeviction, plus headroom for persistent retained-job projections and the short-lived union, intersection and queue-snapshot keys that filtered requests create.
  • A dedicated asynchronous connection and queue for bulk operations, consumed by Horizon, with supervisor timeouts kept below that connection's retry_after.
  • Optional but recommended scheduled warm commands (horizon-new-dawn:warm-retained-jobs) for long-lived, high-throughput applications.
  • A CSP that permits inline style attributes, and an SSR gateway exclusion for the Horizon route tree.

None of that is a criticism — it is the price of exact, full-history filtering over data Horizon stores in a shape that does not support it, and documenting it plainly is to the project's credit. But it is a real amount of production surface to own.

Skyline's footprint is the opposite trade. There are no migrations, no published assets, no second connection, no scheduled maintenance commands and no new Redis memory policy: it is the Horizon package, swapped, and its actions run synchronously in the request against live queue state. It can do less, and it asks less of you.

Choosing between them#

A blunt heuristic that will be right most of the time:

  • If the problem is the dashboard — you want to search, filter, manage batches, retry in bulk, and look at something built this decade — take New Dawn. It is better at that than we are, and free.
  • If the problem is the queue itself — a queue that starves, a job that needs to jump the line, a lifecycle you cannot see in your logs — no interface can fix it, and that is where Skyline earns its subscription.

And if you are on Laravel 11, on Redis Cluster, or unwilling to take pre-1.0 software with a documented operating envelope into production, the choice is made for you before features come into it.

Common questions

What is the difference between Laravel Skyline and Horizon New Dawn?

New Dawn replaces Horizon's bundled interface with a React 19 and Inertia application while, in its own words, keeping Horizon's authorization, repositories, metrics and queue workers in charge. Skyline replaces the laravel/horizon package, so it can change what the workers themselves do — weighted queue polling, front-of-queue dispatch, lifecycle logging — as well as what the dashboard shows.

Can I run Horizon New Dawn and Laravel Skyline together?

No. Both own the interface served at Horizon's configured path, so this is a choice between them rather than a stack. New Dawn also pins a Horizon version range and a Laravel floor of 12.38, which is a narrower window than Skyline's.

Is Horizon New Dawn a fork of Laravel Horizon?

No, and it is careful to say so. It is a companion package that installs beside laravel/horizon, reuses Horizon's authorization callback and middleware, honours Horizon's configured path and domain, and can be removed by uninstalling it and running horizon:install. Skyline is a fork: it declares replace on laravel/horizon and becomes your Horizon install.

Does Horizon New Dawn support weighted queues or front-of-queue dispatch?

No, and it structurally cannot: both live in the worker process, which New Dawn deliberately leaves to Horizon. Weighted queue polling changes the order a worker checks its queues in, and front-of-queue dispatch changes which end of the Redis list a job is pushed onto. Neither is reachable from a package that only replaces the interface.

Which has broader dashboard features, Skyline or New Dawn?

New Dawn, on several axes worth naming: database-backed batch search and batch management, monitored-tag views, retrying failures by queue, tag or batch, timed queue pauses, and light, dark and system themes. Skyline's dashboard is narrower and aimed at live queue state — per-queue drill-down, Perform Now on a delayed job, per-queue pause, and a rebuilt metrics view.

What are Horizon New Dawn's requirements?

PHP 8.3 or newer, Laravel 12.38 or newer (or Laravel 13 — Laravel 11 is excluded as end-of-life), and Horizon 5.46.0 or newer. It needs standalone Redis 6.2+ or Valkey 8; Redis Cluster is unsupported. It expects maxmemory-policy noeviction and Redis headroom for its retained-job projections, and its bulk operations run as queued jobs on an asynchronous connection consumed by Horizon. Skyline runs on PHP 8.2+ and Laravel 11+ and performs its actions in the request.

Queue control, not just queue monitoring.

Skyline is a drop-in replacement for Laravel Horizon that lets you act on what you see — pause a queue, jump a job to the front, drain a backlog.

Sign up for early access