Mar 3, 2026
0
Level 3
Issue: Horizon Dashboard Not Updating in Real-Time - Requires Hard Reload
Description
The Horizon dashboard is functioning but does not update in real-time. When jobs are processed or new jobs arrive, the dashboard does not reflect changes automatically. I have to perform a hard reload (Ctrl+Shift+R / Cmd+Shift+R) to see updated job counts, completed jobs, and current workload. The dashboard remains "Active" but static until manually refreshed.
Environment
- Laravel Version: 12.x
- Horizon Version: 5.x
- PHP Version: 8.4.18
- Redis Version: 7.0.15
- Database: MySQL 8.0
- Queue Driver: Redis
- Broadcast Driver: Reverb
- Server: Ubuntu 22.04 / 24.04
Current Configuration
Supervisor Status
horizon RUNNING pid X, uptime X
Horizon Dashboard Shows
- Status: Active
- Jobs in queues: visible but don't auto-refresh
- Need hard reload to see new jobs or job completion
What I've Tried
- ✅ Restarted Horizon multiple times
- ✅ Cleared config cache (
php artisan config:clear,php artisan config:cache) - ✅ Restarted supervisor (
sudo supervisorctl restart horizon) - ✅ Checked Redis connection (Redis responds to
ping) - ✅ Verified jobs are in Redis queues
- ✅ Increased memory limits in
config/horizon.php(master: 2048MB, workers: 256MB) - ✅ Checked logs - no errors in Horizon, Laravel, or Supervisor logs
Expected Behavior
The Horizon dashboard should update in real-time via WebSocket connections (using Pusher/Reverb) without requiring manual page refreshes. New jobs should appear, job counts should update, and completed jobs should move to appropriate sections automatically.
Actual Behavior
- Dashboard remains static
- No auto-refresh occurs
- Only updates after manual hard reload
- Real-time updates via WebSocket seem disconnected
Questions
- Is this a WebSocket connection issue between the dashboard and the broadcasting server?
- Could this be related to the Horizon JavaScript assets not loading correctly?
- Are there specific Horizon configuration settings that control dashboard auto-refresh behavior?
- Does Horizon rely on Laravel Echo for real-time updates? Could this be misconfigured?
Additional Context
- The application itself broadcasts events correctly (tested with other clients)
- Jobs are being queued and processed (verified by checking Redis and database)
- The issue is isolated to the Horizon dashboard's real-time updates only
- Other parts of the application that use broadcasting work fine
Relevant Configuration Snippets
.env
BROADCAST_DRIVER=reverb
REVERB_APP_ID=cs-market-local
REVERB_APP_KEY=cs-market-local-key
REVERB_APP_SECRET=********
REVERB_HOST=0.0.0.0
REVERB_PORT=8080
REVERB_SCHEME=http
config/horizon.php (relevant parts)
'memory_limit' => 2048,
'environments' => [
'production' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'processes' => 1,
'memory' => 256,
],
'supervisor-market' => [
'connection' => 'redis',
'queue' => ['market-stream'],
'balance' => 'auto',
'processes' => 1,
'memory' => 256,
],
],
],
config/broadcasting.php
'default' => env('BROADCAST_DRIVER', 'reverb'),
'connections' => [
'reverb' => [
'driver' => 'reverb',
'key' => env('REVERB_APP_KEY'),
'secret' => env('REVERB_APP_SECRET'),
'app_id' => env('REVERB_APP_ID'),
'options' => [
'host' => env('REVERB_HOST', 'localhost'),
'port' => env('REVERB_PORT', 8080),
'scheme' => env('REVERB_SCHEME', 'http'),
],
],
],
Any help or guidance would be greatly appreciated! 🙏
Please or to participate in this conversation.