beyondcode/laravel-favicon
Generate a complete set of favicons for your Laravel app from a single source image. The package provides an Artisan command and Blade helpers to create and reference favicon files, simplifying setup and keeping your markup clean.
<link>/<meta> head markup rendered through a Blade directive. Building or hand-maintaining that set is design-tool busywork the team should not own, and a hand-rolled replacement is roughly a day of work — which is usefully also the cost of exit.@laravel-shift: constraint widening, no new features, no deprecations, no breaking changes. Its value is that the dependency stays installable across a framework major instead of becoming a surprise blocker mid-upgrade. Treat it as installability evidence, not as evidence of an active feature roadmap.Consider it when:
Look elsewhere when:
composer require — a late, runtime-surfacing failure; read-only or serverless filesystems break the public-path write unless generation moves to build time; and low memory_limit can exhaust on a large source image.<link rel="icon"> tags against framework or Vite defaults.Preconditions to state explicitly in the runbook, not implicitly: an image driver (GD or Imagick) present in every environment including CI and the production image; write access to the output path, or generation moved into the deploy step; and one square, high-resolution source asset (not SVG — it fails at generation) kept outside the generated output directory.
For executives. This is a small, low-risk convenience utility, not a strategic platform decision. It turns one brand image into the complete favicon set and the markup that references it, so rebrands and new product surfaces stop being a design-to-developer hand-off. Release 1.9.0 adds Laravel 13 compatibility only — no new features, no migration work, no breaking changes, so there is nothing to schedule. Recommendation: adopt it where favicons aren't already solved, classify it as convenience-tier, and put a review line item on each Laravel major upgrade. The downside is bounded: cost of exit is trivial because the functionality is replaceable with a hand-rolled command in about a day.
For engineering. Idiomatic Laravel — service provider, publishable config, facade, Blade directive — with no schema, no queues, no external service, no event surface. Pin it with a caret constraint and start on 1.9.0, the only release claiming Laravel 13 support; starting on 1.8.0 manufactures a future upgrade for nothing. Three preconditions belong in the runbook: an image driver present in every environment including CI and the production image; write access to the output path, or generation moved to the deploy step; and a single high-resolution square source asset versioned outside the generated output. Before merging, review the 1.8.0→1.9.0 diff to confirm it is constraint-and-CI only, and confirm there's a CI matrix actually exercising Laravel 13 rather than a speculatively widened constraint. Wire the directive into the base layout only, and diff the rendered head for duplicate or conflicting icon tags against Vite or framework defaults. Add a CI assertion that the driver loads, the output path is writable, and the generated set ships inside the deploy artifact — that covers nearly every failure mode. The upgrade cliff to watch is intervention/image v2→v3, not Laravel. Don't extend this package toward PWA icons or asset management; if it ever becomes load-bearing for multi-tenant theming, that's a signal to re-platform, not to harden it.
How can I help you explore Laravel packages today?