Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Failed Jobs Laravel Package

binarybuilds/filament-failed-jobs

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Laravel/Queue Ecosystem Alignment: The package is a Filament plugin, meaning it integrates seamlessly with Laravel’s Filament admin panel and queue system (e.g., failed_jobs table). This is a low-friction fit for applications already using Laravel Queues (e.g., database, redis, beanstalkd) and Filament for admin interfaces.
  • Job Retry/Pruning Needs: Ideal for systems where failed job visibility, retry, and cleanup are critical (e.g., payment processing, batch imports, async notifications). The package abstracts manual SQL queries or custom admin panels for this workflow.
  • Filament Dependency: Requires Filament v3.x (likely due to its plugin system). If the project uses Filament v2 or another admin panel, this introduces architectural coupling that may require refactoring.

Integration Feasibility

  • Minimal Boilerplate: Installation is composer-based with a single service provider registration. No database migrations or complex setup are required beyond ensuring the failed_jobs table exists (default Laravel queue setup).
  • Queue Backend Agnostic: Works with any Laravel-supported queue driver (database, Redis, etc.), as it queries the failed_jobs table directly. No driver-specific logic is needed.
  • Customization Points:
    • Job List Filtering: Supports filtering by queue, failed_at, and exception (via Filament’s table filters).
    • Retry Logic: Retries use Laravel’s built-in dispatch() under the hood, allowing for custom retry logic via event listeners or middleware.
    • Pruning: Supports bulk deletion of failed jobs (useful for cleanup).

Technical Risk

  • Filament Version Lock: Risk of breaking changes if Filament updates its plugin system. The package’s last release in 2026 suggests active maintenance, but dependency on Filament’s internals could cause friction.
  • Performance at Scale:
    • Large failed_jobs tables may impact Filament’s UI performance (e.g., pagination, filtering). The package uses Filament’s built-in table optimizations, but custom indexing on failed_at or queue may be needed for large datasets.
    • Retry Throttling: No built-in rate limiting for retries; could overwhelm queues if misconfigured.
  • Testing Overhead:
    • Failed job simulations may require mocking Laravel’s queue system in tests.
    • Edge Cases: Handling serialized payloads, custom job classes, or database transactions in retries needs validation.

Key Questions

  1. Filament Adoption:
    • Is Filament already used in the project, or would this require a migration from another admin panel (e.g., Nova, Backpack)?
    • What’s the upgrade path if Filament’s plugin system changes?
  2. Queue Backend:
    • Is the failed_jobs table already in use? If using Redis/SQS, will this package still be useful (or will a custom solution be needed)?
  3. Retry Logic:
    • Are there custom retry policies (e.g., exponential backoff, max retries) that need to be enforced beyond Laravel’s defaults?
  4. Scaling:
    • What’s the expected volume of failed jobs? Are there plans for archiving old jobs or distributed pruning?
  5. Monitoring:
    • How will failed job metrics (e.g., retry rates, failure reasons) be surfaced to operations teams?

Integration Approach

Stack Fit

  • Laravel + Filament Projects: Perfect fit if the admin panel is already built with Filament. The package extends Filament’s resource system without requiring changes to existing queue workers.
  • Non-Filament Projects:
    • Option 1: Use the package only for the failed job UI, while keeping queue logic elsewhere (e.g., custom Laravel routes).
    • Option 2: Replace Filament with this package as a justification for adopting Filament (if the team is open to it).
  • Queue Drivers:
    • Database Driver: Fully supported (uses failed_jobs table).
    • Redis/SQS: Limited support—failed jobs may not persist in the table, requiring a custom solution or database-backed driver.

Migration Path

  1. Prerequisites:
    • Ensure Laravel Queues are configured with a database driver (or modify the package to work with other drivers).
    • Verify Filament v3.x is installed (or plan an upgrade).
  2. Installation:
    composer require binarybuilds/filament-failed-jobs
    
    Register the plugin in app/Providers/Filament/AdminPanelProvider.php:
    $panel->plugin(FilamentFailedJobsPlugin::make());
    
  3. Configuration:
    • Optional: Customize retry logic via Filament’s resource hooks or Laravel’s FailedJob model events.
    • Optional: Add custom columns (e.g., job payload preview) via Filament’s table customization.
  4. Testing:
    • Simulate failed jobs in tests using Artisan::call('queue:fail') and verify the UI reflects them.
    • Test bulk pruning and retry limits.

Compatibility

  • Laravel Version: Likely compatible with Laravel 10.x/11.x (given the 2026 release date). Check the package’s composer.json for exact constraints.
  • Filament Version: Must match Filament v3.x. Check the package’s docs for exact version requirements.
  • Queue Workers: No changes needed to existing workers; the package only interacts with the failed_jobs table.

Sequencing

  1. Phase 1: Pilot Integration
    • Install in a staging environment and test with a subset of failed jobs.
    • Validate retry/prune functionality for critical job types (e.g., payments).
  2. Phase 2: Full Rollout
    • Deploy to production with monitoring on failed job volumes.
    • Document the new Filament resource for support teams.
  3. Phase 3: Optimization
    • Add custom filters (e.g., by job class) if needed.
    • Implement automated pruning (e.g., via Laravel scheduler) for old jobs.

Operational Impact

Maintenance

  • Low Overhead:
    • No additional database migrations or queue worker changes required.
    • Updates can be handled via Composer, with minimal risk if the package follows semantic versioning.
  • Dependency Risks:
    • Filament Updates: May require package updates if Filament’s plugin system changes.
    • Laravel Queue Changes: Breaking changes to Laravel’s FailedJob model could affect functionality.

Support

  • Troubleshooting:
    • Failed Job Visibility: If jobs aren’t appearing, check:
      • Queue driver configuration (must support failed_jobs table).
      • Database connection issues.
    • Retry Failures: Ensure job payloads are serializable and dependencies (e.g., database connections) are available.
  • User Training:
    • Admin Teams: Train on using the Filament resource to retry/prune jobs.
    • Dev Teams: Document how to extend retry logic (e.g., via FailedJob observers).

Scaling

  • Performance:
    • Large Datasets: The failed_jobs table can grow quickly. Consider:
      • Archiving old jobs via Laravel scheduler.
      • Adding indexes to failed_at and queue columns.
    • Filament UI: Pagination and lazy-loading should mitigate UI slowness.
  • High-Volume Queues:
    • Retry Throttling: Implement Laravel’s retryAfter or custom middleware to prevent queue overload.
    • Distributed Pruning: For multi-server setups, ensure pruning is idempotent (e.g., soft deletes with TTL).

Failure Modes

Failure Scenario Impact Mitigation
failed_jobs table corruption Lost visibility of failed jobs Regular backups, database monitoring
Filament plugin conflicts UI breaks or missing functionality Test in isolation; check Filament update logs
Queue driver mismatch Failed jobs not logged to DB Use database driver or custom logging
Unhandled exceptions in retries Infinite retry loops Set max_attempts in job class
Bulk prune errors Accidental job deletion Add confirmation prompts in Filament UI

Ramp-Up

  • Developer Onboarding:
    • 1-2 hours: Install and test basic functionality.
    • 1 day: Customize filters/columns and integrate with existing workflows.
  • Operations Onboarding:
    • **3
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours