codeat3/blade-uiw-icons
Blade UIW Icons brings the UIW icon set to Laravel Blade as simple, cacheable components like . Install once, then drop any icon into your views with a single tag—no SVGs to copy, no extra setup, just clean, consistent icons across your app.
Program framing. codeat3/blade-uiw-icons is a commodity dependency, not a platform bet. It packages the Uiw/Unicons SVG set as <x-uiw-*> Blade components on top of blade-ui-kit/blade-icons. There is no runtime service, no persistence layer, and no domain logic — it is static assets plus a thin registration layer. A TPM should evaluate it as a standardization and scheduling lever, not an architecture decision, and should size the decision accordingly: hours of integration, hours of exit.
Architecture fit. Strong for server-rendered Blade and Livewire estates. Inline SVG is the native rendering model, components inherit currentColor so existing Tailwind utilities apply unchanged, and there is no second icon runtime to reconcile. Weak where the front end is Inertia/Vue/React: you would carry the icon set in both PHP and JS, creating duplicate payload and duplicate upgrade surface — in that case use @uiw/icons directly in the JS layer instead. Multi-tenant theming is neutral; icons are static and theme through CSS.
What release 1.7.0 actually buys. One community PR (swapnilsarwe, #19) widening the framework constraint to Laravel 13. Semver-correct, no breaking changes, no new icons, no config churn, no deprecations. The program value is entirely in what it removes: this package stops being a blocker on a Laravel 13 upgrade. That is exactly the kind of line item that otherwise sits on an upgrade critical path for weeks while teams chase maintainers.
Integration feasibility. Hours, not sprints. composer require, optional config publish for prefix and default CSS class, then mechanical template edits. The real effort is icon-name mapping against resources/svg/ filenames — a grep-and-map task a mid-level developer can own without design involvement.
Technical risk register.
| Risk | Severity | Note |
|---|---|---|
| Single-maintainer abandonment | Medium likelihood / Low impact | Artifact is static SVG + registration; fork-and-vendor is measured in hours |
| Framework-constraint conflict | Low now | Exactly what 1.7.0 remediates; re-check at each Laravel major |
| Upstream icon drift | Low | Packaged snapshot lags Unicons additions and renames |
| Inline-SVG payload | Low–Medium | Response-size growth on icon-dense pages; mitigate via icons:cache |
Prefix collision with sibling codeat3/blade-* packages |
Low | Resolve at config-publish time |
| No external validation | Medium signal risk | 0 stars / 0 dependents — you cannot cite community adoption in a go/no-go; run your own pilot |
| Upstream Unicons license/attribution | Low / unverified | Resolve before it becomes a launch-week legal review |
Key questions a TPM must close before sign-off:
<svg> or ship an icon font? That inventory defines scope, cost, and the size of the standardization win.codeat3/blade-* package? If so, prefix collisions and a shared upgrade cadence become a cross-team coordination item.Stack fit.
| Dimension | Fit | Program implication |
|---|---|---|
| Laravel 10–13 | Yes | 1.7.0 extends the ceiling to 13 |
| PHP floor | Verify | Confirm from the CI matrix; do not assume from docs |
| Blade / Livewire | Strong | Zero client-side dependency |
| Inertia / Vue / React | Weak | Use @uiw/icons in JS; do not dual-ship |
| Design-system semantic layer | Neutral | Map semantic names → Uiw names in one file to keep swap cost near zero |
Migration path. Treat this as a bounded per-team workstream, not a big-bang program. Inventory existing hardcoded <svg> blocks and icon-font class names, map them to <x-uiw-*>, and convert view-by-view. The characteristic failure mode is visual: a wrong glyph or a silently missing component passes code review and surfaces in QA or production. Pair each team's conversion with a render test over its used-icon list.
Compatibility. The decisive gate is constraint resolution, not documentation. Require each consuming application to run composer why-not codeat3/blade-uiw-icons 1.7.0 before claiming readiness. On Laravel 11/12 the bump is functionally a no-op — near-zero risk, and it keeps the estate current for the later framework move. Also confirm each app's blade-icons version supports Laravel 13; that is the constraint most likely to bite, because it sits one level removed from the package under evaluation.
Sequencing.
^1.7 on a low-risk branch in one pilot application. Confirm composer update resolves without dragging unrelated packages — this is the go/no-go gate.Maintenance. Low and concentrated. The codebase is static data plus registration; the maintainer's only recurring obligation is tracking Laravel releases, and 1.7.0 is evidence they do. Budget essentially zero engineering hours for routine upkeep, and name a single owner for the annual framework-compatibility check so it does not fall between teams. Log the dependency as "maintained, low exit cost" — not "unvetted."
Support. No vendor, no SLA, community issues only. That is acceptable only because the escape hatch is trivial. Write the contingency into the decision record: if the package goes unmaintained, copy resources/svg into our repo and re-register under our own prefix — same component names, one config change, hours of work. That low exit cost is the strongest argument for adopting now, and it is what justifies a low weight in the risk register.
Scaling. No runtime compute; the only scaling axis is bytes on the wire. Enforce php artisan icons:cache in the deploy pipeline after config:cache; with the cache warm, rendering is an array lookup plus string interpolation. Establish a per-page icon-density budget and revisit if a page crosses it — at very high density, a sprite becomes the better answer. Nothing here scales with users, tenants, or traffic.
Failure modes. Three to watch: (1) a missing or renamed component renders nothing and fails silently — catch with render tests over each team's used-icon list; (2) a framework major lands before the maintainer ships a constraint bump — catch with the CI matrix job and resolve via vendoring; (3) two codeat3/blade-* packages collide on prefix — catch at config-publish time, before conversion work begins. None of these are outages; all are schedule items if discovered late.
Ramp-up. A developer is productive in under an hour. The ramp cost is documentation, not training: publish the semantic wrapper component, the x-dynamic-component pattern with a server-side whitelist for data-driven icons, and the caching step in the deploy runbook. Without that, teams will call vendor icon names directly and quietly re-couple the codebase to Uiw — which is the one outcome that turns a cheap decision into an expensive one later.
How can I help you explore Laravel packages today?