driesvints/blade-icons
Blade Icons makes it easy to use any SVG icon set in your Laravel Blade views via components and directives like or @svg('camera'). Originally Blade SVG by Adam Wathan, it's the base for many third-party icon packages and supports custom icon sets.
Architecture fit
@svg() directive, and anonymous <x-icon-*> Blade components that read SVG files from disk and inline them into the rendered HTML. No database, queue, cache backend, or external service dependency.Integration feasibility
composer require blade-ui-kit/blade-icons, publish and uncomment the default set in config/blade-icons.php, drop SVGs into resources/svg. A mid-level Laravel developer is productive in under a day; a first page shipped in an afternoon.Technical risk — low overall, with four real hazards
<x-icon-missing> (unknown component) throws at render; @svg('missing') can degrade quietly. Without a guard rail you discover breakage in production, not CI.resources/svg/**/*.svg is added to tailwind.config.js content paths. This is the single most common "works locally, broken in prod" bug with this package.Key questions
icons:cache / config cache) and who owns cache invalidation when icons change?Stack fit
class attributes, so Tailwind sizing/spacing conventions carry over.<x-icon> component, the package becomes the implementation detail behind it — that is the recommended shape for anything beyond a small app.Migration path
<img src="*.svg">, inline <svg> blocks) and produce a frequency table. Most apps use 30–60 distinct icons out of thousands; do not import an entire set because it is convenient.<x-icon name="camera" />) that enforces aria-hidden, a default size scale, and a fallback. All new code uses the wrapper; the wrapper shields you from ever calling the vendor component directly.<img>-based approach only once usage drops to zero — that is when you collect the payload savings.Compatibility
config/blade-icons.php publishing collisions and for namespace clashes if the app already defines an <x-icon> component.resources/svg/**/*.svg to Tailwind content paths at the same time as the install — not afterwards.php artisan config:cache and the icon manifest cache command after assets/icons are in place; stale manifests are the #1 "works on my machine" report for this package.Sequencing Spike (½ day) → license and icon-set decision → config + wrapper component → Tailwind/CI changes → pilot page → phased migration → legacy icon-font removal → documented icon policy. Budget roughly one developer-week end-to-end for a mid-size app, with the bulk spent on migration breadth and design review, not on the package itself.
Maintenance
Support
Scaling
Failure modes to instrument
@svg); add a render smoke test over key routes and a fallback icon.resources/svg absent) → boot-time failure; assert the directory exists in a health check.Ramp-up
How can I help you explore Laravel packages today?